File tree Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Expand file tree Collapse file tree 2 files changed +14
-3
lines changed Original file line number Diff line number Diff line change 282282
283283 describe '#update' do
284284 let ( :user ) { User . first }
285+ let ( :post ) { user . posts . first }
285286
286287 let ( :update_params ) do
287288 user_params . tap do |params |
288289 params [ :data ] [ :id ] = user . id
289290 params [ :data ] [ :attributes ] . merge! ( first_name : 'Yukihiro' )
291+ params [ :data ] [ :relationships ] = relationship_params
290292 params . merge! ( id : user . id )
291293 end
292294 end
293295
296+ let ( :relationship_params ) do
297+ { posts : { data : [ { id : post . id , type : "posts" } ] } }
298+ end
299+
294300 it 'update an existing user' do
295301 patch :update , update_params
302+
296303 expect ( response ) . to have_http_status :ok
297304 expect ( response ) . to have_primary_data ( 'users' )
298305 expect ( response ) . to have_data_attributes ( fields )
299306 expect ( data [ 'attributes' ] [ 'first_name' ] ) . to eq ( user_params [ :data ] [ :attributes ] [ :first_name ] )
307+
308+ expect ( user . reload . posts . count ) . to eq ( 1 )
309+ expect ( user . posts . first ) . to eq ( post )
300310 end
301311
302312 context 'when resource was not found' do
Original file line number Diff line number Diff line change @@ -86,7 +86,7 @@ def create
8686 # PATCH /users/:id
8787 def update
8888 user = User . find ( params [ :id ] )
89- if user . update ( resource_params )
89+ if user . update ( resource_params ) && update_relationships ( user )
9090 jsonapi_render json : user
9191 else
9292 # Example of error rendering for exceptions or any object
@@ -97,7 +97,8 @@ def update
9797
9898 private
9999
100- def user_params
101- params . require ( :data ) . require ( :attributes ) . permit ( :first_name , :last_name , :admin )
100+ def update_relationships ( user )
101+ return user if relationship_params [ :posts ] . blank?
102+ user . posts = Post . where ( id : relationship_params [ :posts ] )
102103 end
103104end
You can’t perform that action at this time.
0 commit comments