File tree Expand file tree Collapse file tree 2 files changed +30
-16
lines changed Expand file tree Collapse file tree 2 files changed +30
-16
lines changed Original file line number Diff line number Diff line change @@ -51,30 +51,34 @@ def deserialize(argument)
5151 attr_reader :serializers
5252
5353 def serializers = ( serializers )
54- @serializers = serializers
55- index_serializers
54+ @serializers_index . clear
55+ @serializers = Set . new
56+ add_new_serializers ( serializers )
5657 end
5758
5859 # Adds new serializers to a list of known serializers.
5960 def add_serializers ( *new_serializers )
6061 new_serializers = new_serializers . flatten
61- new_serializers . map! do |s |
62- if s . is_a? ( Class ) && s < ObjectSerializer
63- s . instance
64- else
65- s
66- end
67- end
68-
69- @serializers += new_serializers
70- index_serializers
71- @serializers
62+ add_new_serializers ( new_serializers )
7263 end
7364
7465 private
75- def index_serializers
76- @serializers_index . clear
77- serializers . each do |s |
66+ def add_new_serializers ( new_serializers )
67+ new_serializers . map! do |s |
68+ if s . is_a? ( Class ) && s < ObjectSerializer
69+ s . instance
70+ else
71+ s
72+ end
73+ end
74+
75+ @serializers += new_serializers
76+ index_serializers ( new_serializers )
77+ @serializers
78+ end
79+
80+ def index_serializers ( new_serializers )
81+ new_serializers . each do |s |
7882 if s . respond_to? ( :klass )
7983 @serializers_index [ s . klass ] = s
8084 elsif s . respond_to? ( :klass , true )
Original file line number Diff line number Diff line change @@ -84,6 +84,16 @@ class TestSerializerWithoutKlass < ActiveJob::Serializers::ObjectSerializer; end
8484 assert_equal DummyValueObject . new ( 123 ) , ActiveJob ::Serializers . deserialize ( hash )
8585 end
8686
87+ test "resets serializers when directly setting" do
88+ class DummySerializerAlt < DummySerializer
89+ def klass ; DummySerializer end
90+ end
91+ ActiveJob ::Serializers . add_serializers DummySerializer
92+ ActiveJob ::Serializers . serializers = [ DummySerializerAlt ]
93+ assert ActiveJob ::Serializers . serializers . include? ( DummySerializerAlt . instance )
94+ assert_not ActiveJob ::Serializers . serializers . include? ( DummySerializer . instance )
95+ end
96+
8797 test "adds new serializer" do
8898 ActiveJob ::Serializers . add_serializers DummySerializer
8999 assert ActiveJob ::Serializers . serializers . include? ( DummySerializer . instance )
You can’t perform that action at this time.
0 commit comments