Merge pull request #313 from sakuraineed/fix_set_key_transform

Fix set_key_transform's set_type to give priority to pre-set value
This commit is contained in:
Shishir Kakaraddi 2018-09-19 21:56:59 -07:00 committed by GitHub
commit 11b5255010
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 1 deletions

View File

@ -143,7 +143,11 @@ module FastJsonapi
self.transform_method = mapping[transform_name.to_sym]
# ensure that the record type is correctly transformed
set_type(reflected_record_type) if reflected_record_type
if record_type
set_type(record_type)
elsif reflected_record_type
set_type(reflected_record_type)
end
end
def run_key_transform(input)

View File

@ -411,4 +411,34 @@ describe FastJsonapi::ObjectSerializer do
it_behaves_like 'returning key transformed hash', :movie_type, :underscore_movie_type, :release_year
end
end
describe '#set_key_transform after #set_type' do
subject(:serializable_hash) { MovieSerializer.new(movie).serializable_hash }
before do
MovieSerializer.set_type type_name
MovieSerializer.set_key_transform :camel
end
after do
MovieSerializer.transform_method = nil
MovieSerializer.set_type :movie
end
context 'when sets singular type name' do
let(:type_name) { :film }
it 'returns correct hash which type equals transformed set_type value' do
expect(serializable_hash[:data][:type]).to eq :Film
end
end
context 'when sets plural type name' do
let(:type_name) { :films }
it 'returns correct hash which type equals transformed set_type value' do
expect(serializable_hash[:data][:type]).to eq :Films
end
end
end
end