aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/test/cases/serializers_test.rb
diff options
context:
space:
mode:
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