aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/test/cases/serializers_test.rb
diff options
context:
space:
mode:
authorEvgenii Pecherkin <e.pecherkin@gmail.com>2017-10-23 17:29:28 +0400
committerRafael Mendonça França <rafaelmfranca@gmail.com>2018-02-14 13:10:07 -0500
commit3785a5729959a838bb13f2d298a59e12e1844f74 (patch)
tree6f2e5d536e79a00a7650cbdcf2afe42ca2bd3389 /activejob/test/cases/serializers_test.rb
parente360ac12315ed6b9eadca5bcc0d95dc766ba8523 (diff)
downloadrails-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.rb64
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