Skip to content

Commit 7adeadb

Browse files
committed
Write specs for the new helper methods
1 parent 852e900 commit 7adeadb

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

spec/controllers/users_controller_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,21 +282,31 @@
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

spec/support/controllers.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff 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
103104
end

0 commit comments

Comments
 (0)