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

Version Path
enju_leaf-1.2.1 vendor/bundle/ruby/2.3/gems/paper_trail-5.2.3/test/unit/serializers/mixin_yaml_test.rb
paper_trail-6.0.2 test/unit/serializers/mixin_yaml_test.rb
paper_trail-6.0.1 test/unit/serializers/mixin_yaml_test.rb
paper_trail-6.0.0 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.2.3 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.2.2 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.2.1 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.2.0 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.1.1 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.1.0 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.0.1 test/unit/serializers/mixin_yaml_test.rb
paper_trail-5.0.0 test/unit/serializers/mixin_yaml_test.rb