2017-10-23 13:29:28 +00:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
require "helper"
|
|
|
|
require "active_job/serializers"
|
|
|
|
|
|
|
|
class SerializersTest < ActiveSupport::TestCase
|
|
|
|
class DummyValueObject
|
|
|
|
attr_accessor :value
|
|
|
|
|
|
|
|
def initialize(value)
|
|
|
|
@value = value
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class DummySerializer < ActiveJob::Serializers::ObjectSerializer
|
|
|
|
class << self
|
|
|
|
def serialize(object)
|
|
|
|
{ key => object.value }
|
|
|
|
end
|
|
|
|
|
|
|
|
def deserialize(hash)
|
|
|
|
DummyValueObject.new(hash[key])
|
|
|
|
end
|
|
|
|
|
|
|
|
def key
|
|
|
|
"_dummy_serializer"
|
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def klass
|
|
|
|
DummyValueObject
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
setup do
|
|
|
|
@value_object = DummyValueObject.new 123
|
2018-02-09 19:24:55 +00:00
|
|
|
@original_serializers = ActiveJob::Serializers.serializers
|
|
|
|
end
|
|
|
|
|
|
|
|
teardown do
|
|
|
|
ActiveJob::Serializers._additional_serializers = @original_serializers
|
2017-10-23 13:29:28 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
test "can't serialize unknown object" do
|
|
|
|
assert_raises ActiveJob::SerializationError do
|
|
|
|
ActiveJob::Serializers.serialize @value_object
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
test "won't deserialize unknown hash" do
|
|
|
|
hash = { "_dummy_serializer" => 123, "_aj_symbol_keys" => [] }
|
|
|
|
assert ActiveJob::Serializers.deserialize(hash), hash.except("_aj_symbol_keys")
|
|
|
|
end
|
|
|
|
|
|
|
|
test "adds new serializer" do
|
2018-02-09 19:24:55 +00:00
|
|
|
ActiveJob::Serializers.add_serializers DummySerializer
|
|
|
|
assert ActiveJob::Serializers.serializers.include?(DummySerializer)
|
2017-10-23 13:29:28 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
test "can't add serializer with the same key twice" do
|
2018-02-09 19:24:55 +00:00
|
|
|
ActiveJob::Serializers.add_serializers DummySerializer
|
2017-10-23 13:29:28 +00:00
|
|
|
assert_raises ArgumentError do
|
2018-02-09 19:24:55 +00:00
|
|
|
ActiveJob::Serializers.add_serializers DummySerializer
|
2017-10-23 13:29:28 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|