File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -117,7 +117,7 @@ def inherited(subclass)
117117 subclass . transform_method = transform_method
118118 subclass . cache_length = cache_length
119119 subclass . race_condition_ttl = race_condition_ttl
120- subclass . data_links = data_links
120+ subclass . data_links = data_links . dup
121121 subclass . cached = cached
122122 subclass . set_type ( subclass . reflected_record_type ) if subclass . reflected_record_type
123123 subclass . meta_to_serialize = meta_to_serialize
Original file line number Diff line number Diff line change @@ -355,6 +355,22 @@ def year_since_release_calculator(release_year)
355355 expect ( serializable_hash [ :data ] [ :links ] [ :url ] ) . to eq movie . url
356356 end
357357 end
358+
359+ context 'when inheriting from a parent serializer' do
360+ before do
361+ MovieSerializer . link ( :url ) do |movie_object |
362+ "http://movies.com/#{ movie_object . id } "
363+ end
364+ end
365+ subject ( :action_serializable_hash ) { ActionMovieSerializer . new ( movie ) . serializable_hash }
366+ subject ( :horror_serializable_hash ) { HorrorMovieSerializer . new ( movie ) . serializable_hash }
367+
368+ let ( :url ) { "http://movies.com/#{ movie . id } " }
369+
370+ it 'returns the link for the correct sub-class' do
371+ expect ( action_serializable_hash [ :data ] [ :links ] [ :url ] ) . to eq "/action-movie/#{ movie . id } "
372+ end
373+ end
358374 end
359375
360376 describe '#key_transform' do
Original file line number Diff line number Diff line change @@ -181,6 +181,18 @@ class MovieSerializer
181181 has_one :advertising_campaign
182182 end
183183
184+ class GenreMovieSerializer < MovieSerializer
185+ link ( :something ) { '/something/' }
186+ end
187+
188+ class ActionMovieSerializer < GenreMovieSerializer
189+ link ( :url ) { |object | "/action-movie/#{ object . id } " }
190+ end
191+
192+ class HorrorMovieSerializer < GenreMovieSerializer
193+ link ( :url ) { |object | "/horror-movie/#{ object . id } " }
194+ end
195+
184196 class MovieWithoutIdStructSerializer
185197 include FastJsonapi ::ObjectSerializer
186198 attributes :name , :release_year
@@ -354,6 +366,9 @@ class MovieSerializer
354366
355367 after ( :context ) do
356368 classes_to_remove = %i[
369+ ActionMovieSerializer
370+ GenreMovieSerializer
371+ HorrorMovieSerializer
357372 Movie
358373 MovieSerializer
359374 Actor
You can’t perform that action at this time.
0 commit comments