Skip to content

Commit 11b5255

Browse files
authored
Merge pull request #313 from sakuraineed/fix_set_key_transform
Fix set_key_transform's set_type to give priority to pre-set value
2 parents fced516 + 64f7b6c commit 11b5255

2 files changed

Lines changed: 35 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: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,4 +411,34 @@ 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 type_name
420+
MovieSerializer.set_key_transform :camel
421+
end
422+
423+
after do
424+
MovieSerializer.transform_method = nil
425+
MovieSerializer.set_type :movie
426+
end
427+
428+
context 'when sets singular type name' do
429+
let(:type_name) { :film }
430+
431+
it 'returns correct hash which type equals transformed set_type value' do
432+
expect(serializable_hash[:data][:type]).to eq :Film
433+
end
434+
end
435+
436+
context 'when sets plural type name' do
437+
let(:type_name) { :films }
438+
439+
it 'returns correct hash which type equals transformed set_type value' do
440+
expect(serializable_hash[:data][:type]).to eq :Films
441+
end
442+
end
443+
end
414444
end

0 commit comments

Comments
 (0)