Sha256: 4fc4fb447e58b67dc855d0650afad9a74607317ed7f602f19f117fb5287c30d5
Contents?: true
Size: 1.01 KB
Versions: 2
Compression:
Stored size: 1.01 KB
Contents
require "spec_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 RSpec.describe CustomYamlSerializer do let(:word_hash) { { "key1" => ::FFaker::Lorem.word, "key2" => nil, "tkey" => nil, "" => "foo" } } context(".load") do it("deserializes YAML to Ruby, removing pairs with blank keys or values") do expect(described_class.load(word_hash.to_yaml)).to eq( word_hash.reject { |k, v| (k.blank? || v.blank?) } ) end end context(".dump") do it("serializes Ruby to YAML, removing pairs with nil values") do expect(described_class.dump(word_hash)).to eq( word_hash.reject { |_k, v| v.nil? }.to_yaml ) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
paper_trail-7.1.0 | spec/paper_trail/serializers/custom_yaml_serializer_spec.rb |
paper_trail-7.0.3 | spec/paper_trail/serializers/custom_yaml_serializer_spec.rb |