Skip to content

Commit

Permalink
Add grape endpoint to update an artwork
Browse files Browse the repository at this point in the history
  • Loading branch information
jonallured committed Mar 5, 2024
1 parent ec90d09 commit 3951e3a
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 0 deletions.
10 changes: 10 additions & 0 deletions app/api/using_grape/artworks_endpoint.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@ class ArtworksEndpoint < Grape::API
error! errors, 400
end
end

put ":id" do
artwork = Artwork.find(params[:id])
if artwork.update(params)
artwork
else
errors = {errors: artwork.errors.full_messages.to_sentence}
error! errors, 400
end
end
end
end
end
46 changes: 46 additions & 0 deletions spec/requests/using_grape/update_artwork_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
require "rails_helper"

describe "PUT /api/using_grape/artworks/:id" do
let(:artwork) { FactoryBot.create(:artwork, title: "Fooncy cup") }

context "with invalid update" do
it "returns 400 and the errors" do
params = {title: ""}

put "/api/using_grape/artworks/#{artwork.id}", params: params

expect(response.status).to eq 400
expect(response.parsed_body.key?("errors")).to eq true
end
end

context "with partial update" do
it "returns 200 and that updated artwork" do
params = {title: "Fancy cup"}

put "/api/using_grape/artworks/#{artwork.id}", params: params

expect(response.status).to eq 200
expect(response.parsed_body["title"]).to eq "Fancy cup"
end
end

context "with full update" do
it "returns a 200 and that updated artwork" do
params = {
amount_cents: 100_000,
artist_name: "Sally Sculptor",
medium: "Clay",
title: "Fancy cup"
}

put "/api/using_grape/artworks/#{artwork.id}", params: params

expect(response.status).to eq 200
expect(response.parsed_body["amount_cents"]).to eq 100_000
expect(response.parsed_body["artist_name"]).to eq "Sally Sculptor"
expect(response.parsed_body["medium"]).to eq "Clay"
expect(response.parsed_body["title"]).to eq "Fancy cup"
end
end
end

0 comments on commit 3951e3a

Please sign in to comment.