Sha256: 5518739de6409d188172629830f551d27b067f28ba9f000a00e4f298eb800191
Contents?: true
Size: 1.32 KB
Versions: 12
Compression:
Stored size: 1.32 KB
Contents
require "test_helper" module CustomYamlSerializer extend PaperTrail::Serializers::YAML def self.load(string) parsed_value = super(string) if parsed_value.is_a?(Hash) parsed_value.reject { |k, v| k.blank? || v.blank? } else parsed_value end end def self.dump(object) object.is_a?(Hash) ? super(object.reject { |_k, v| v.nil? }) : super end end class MixinYamlTest < ActiveSupport::TestCase setup do # Setup a hash with random values, ensuring some values are nil @hash = {} (1..4).each do |i| @hash["key#{i}"] = [FFaker::Lorem.word, nil].sample end @hash["tkey"] = nil @hash[""] = "foo" @hash_as_yaml = @hash.to_yaml end context "`load` class method" do should "exist" do assert CustomYamlSerializer.respond_to?(:load) end should "`deserialize` YAML to Ruby, removing pairs with `blank` keys or values" do assert_equal @hash.reject { |k, v| k.blank? || v.blank? }, CustomYamlSerializer.load(@hash_as_yaml) end end context "`dump` class method" do should "exist" do assert CustomYamlSerializer.respond_to?(:dump) end should "`serialize` Ruby to YAML, removing pairs with `nil` values" do assert_equal @hash.reject { |_k, v| v.nil? }.to_yaml, CustomYamlSerializer.dump(@hash) end end end
Version data entries
12 entries across 12 versions & 2 rubygems