Sha256: e8bdbde8ac21a62c6b5c253190e4f8ae0d208f5a6e8ad40d8b72f705ef650f46

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

require "test_helper"
require_relative "../../../spec/support/custom_json_serializer"

class MixinJsonTest < 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_json = @hash.to_json
  end

  context "`load` class method" do
    should "exist" do
      assert CustomJsonSerializer.respond_to?(:load)
    end

    should "`deserialize` JSON to Ruby, removing pairs with `blank` keys or values" do
      assert_equal(
        @hash.reject { |k, v| k.blank? || v.blank? },
        CustomJsonSerializer.load(@hash_as_json)
      )
    end
  end

  context "`dump` class method" do
    should "exist" do
      assert CustomJsonSerializer.respond_to?(:dump)
    end

    should "`serialize` Ruby to JSON, removing pairs with `nil` values" do
      assert_equal @hash.reject { |_k, v| v.nil? }.to_json,
        CustomJsonSerializer.dump(@hash)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
paper_trail-7.0.3 test/unit/serializers/mixin_json_test.rb