Skip to content

Commit 4a333d7

Browse files
djohnsonshishirmk
authored andcommitted
Set type value when setting key transform
1 parent ba4e112 commit 4a333d7

3 files changed

Lines changed: 10 additions & 8 deletions

File tree

lib/fast_jsonapi/object_serializer.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,9 @@ def set_key_transform(transform_name)
119119
underscore: :underscore
120120
}
121121
self.transform_method = mapping[transform_name.to_sym]
122+
123+
# ensure that the record type is correctly transformed
124+
set_type(reflected_record_type) if reflected_record_type
122125
end
123126

124127
def run_key_transform(input)
@@ -177,7 +180,7 @@ def add_relationship(name, relationship)
177180
self.cachable_relationships_to_serialize[name] = relationship
178181
end
179182
self.relationships_to_serialize[name] = relationship
180-
end
183+
end
181184

182185
def has_many(relationship_name, options = {}, &block)
183186
name = relationship_name.to_sym

spec/lib/object_serializer_class_methods_spec.rb

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,6 @@
312312
movie_type_serializer_class.instance_eval do
313313
include FastJsonapi::ObjectSerializer
314314
set_key_transform key_transform
315-
set_type :movie_type
316315
attributes :name
317316
end
318317
end
@@ -321,25 +320,25 @@
321320
context 'when key_transform is dash' do
322321
let(:key_transform) { :dash }
323322

324-
it_behaves_like 'returning key transformed hash', :'movie-type', :'release-year'
323+
it_behaves_like 'returning key transformed hash', :'movie-type', :'dash-movie-type', :'release-year'
325324
end
326325

327326
context 'when key_transform is camel' do
328327
let(:key_transform) { :camel }
329328

330-
it_behaves_like 'returning key transformed hash', :MovieType, :ReleaseYear
329+
it_behaves_like 'returning key transformed hash', :MovieType, :CamelMovieType, :ReleaseYear
331330
end
332331

333332
context 'when key_transform is camel_lower' do
334333
let(:key_transform) { :camel_lower }
335334

336-
it_behaves_like 'returning key transformed hash', :movieType, :releaseYear
335+
it_behaves_like 'returning key transformed hash', :movieType, :camelLowerMovieType, :releaseYear
337336
end
338337

339338
context 'when key_transform is underscore' do
340339
let(:key_transform) { :underscore }
341340

342-
it_behaves_like 'returning key transformed hash', :movie_type, :release_year
341+
it_behaves_like 'returning key transformed hash', :movie_type, :underscore_movie_type, :release_year
343342
end
344343
end
345344
end

spec/shared/examples/object_serializer_class_methods_examples.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
end
99
end
1010

11-
RSpec.shared_examples 'returning key transformed hash' do |movie_type, release_year|
11+
RSpec.shared_examples 'returning key transformed hash' do |movie_type, serializer_type, release_year|
1212
it 'returns correctly transformed hash' do
1313
expect(hash[:data][0][:attributes]).to have_key(release_year)
1414
expect(hash[:data][0][:relationships]).to have_key(movie_type)
1515
expect(hash[:data][0][:relationships][movie_type][:data][:type]).to eq(movie_type)
16-
expect(hash[:included][0][:type]).to eq(movie_type)
16+
expect(hash[:included][0][:type]).to eq(serializer_type)
1717
end
1818
end

0 commit comments

Comments
 (0)