diff options
author | Evgenii Pecherkin <e.pecherkin@gmail.com> | 2017-10-23 17:29:28 +0400 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-14 13:10:07 -0500 |
commit | 3785a5729959a838bb13f2d298a59e12e1844f74 (patch) | |
tree | 6f2e5d536e79a00a7650cbdcf2afe42ca2bd3389 /activejob/test/cases/serializers_test.rb | |
parent | e360ac12315ed6b9eadca5bcc0d95dc766ba8523 (diff) | |
download | rails-3785a5729959a838bb13f2d298a59e12e1844f74.tar.gz rails-3785a5729959a838bb13f2d298a59e12e1844f74.tar.bz2 rails-3785a5729959a838bb13f2d298a59e12e1844f74.zip |
Remove non-default serializers
Diffstat (limited to 'activejob/test/cases/serializers_test.rb')
-rw-r--r-- | activejob/test/cases/serializers_test.rb | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/activejob/test/cases/serializers_test.rb b/activejob/test/cases/serializers_test.rb new file mode 100644 index 0000000000..90d4155b3b --- /dev/null +++ b/activejob/test/cases/serializers_test.rb @@ -0,0 +1,64 @@ +# 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 + ActiveJob::Base._additional_serializers = [] + 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 + ActiveJob::Base.add_serializers DummySerializer + assert ActiveJob::Base.serializers.include?(DummySerializer) + end + + test "can't add serializer with the same key twice" do + ActiveJob::Base.add_serializers DummySerializer + assert_raises ArgumentError do + ActiveJob::Base.add_serializers DummySerializer + end + end +end |