Skip to content

Commit 6dc34cd

Browse files
committed
Fix set_key_transform's set_type to give priority to pre-set value
1 parent 5a70b1a commit 6dc34cd

2 files changed

Lines changed: 23 additions & 1 deletion

File tree

lib/fast_jsonapi/object_serializer.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,11 @@ def set_key_transform(transform_name)
143143
self.transform_method = mapping[transform_name.to_sym]
144144

145145
# ensure that the record type is correctly transformed
146-
set_type(reflected_record_type) if reflected_record_type
146+
if record_type
147+
set_type(record_type)
148+
elsif reflected_record_type
149+
set_type(reflected_record_type)
150+
end
147151
end
148152

149153
def run_key_transform(input)

spec/lib/object_serializer_class_methods_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,4 +411,22 @@ def year_since_release_calculator(release_year)
411411
it_behaves_like 'returning key transformed hash', :movie_type, :underscore_movie_type, :release_year
412412
end
413413
end
414+
415+
describe '#set_key_transform after #set_type' do
416+
subject(:serializable_hash) { MovieSerializer.new(movie).serializable_hash }
417+
418+
before do
419+
MovieSerializer.set_type :foo_bar
420+
MovieSerializer.set_key_transform :camel
421+
end
422+
423+
after do
424+
MovieSerializer.set_type :movie
425+
MovieSerializer.transform_method = nil
426+
end
427+
428+
it 'returns correct hash which type equals transformed set_type value' do
429+
expect(serializable_hash[:data][:type]).to eq :FooBar
430+
end
431+
end
414432
end

0 commit comments

Comments
 (0)