Gracefully rescue_from CeleryScript::TypeCheckError

pull/1097/head
Rick Carlino 2019-01-20 13:34:30 -06:00
parent d4371e0fa6
commit 568f8bd1b7
2 changed files with 30 additions and 0 deletions

View File

@ -1,3 +1,5 @@
require "./app/lib/celery_script/checker"
module Api
# A controller that contains all of the helper methods and shared logic for
# all API endpoints.
@ -16,6 +18,10 @@ module Api
skip_before_action :verify_authenticity_token
after_action :skip_set_cookies_header
rescue_from(CeleryScript::TypeCheckError) do |err|
sorry err.message, 422
end
rescue_from(ActionController::RoutingError) { sorry "Not found", 404 }
rescue_from(User::AlreadyVerified) { sorry "Already verified.", 409 }

View File

@ -59,5 +59,29 @@ describe Api::RegimensController do
expect(json[:name]).to eq(name)
expect(json[:color]).to eq(color)
end
it "handles CeleryScript::TypeCheckError" do
sign_in user
s = FakeSequence.with_parameters
payload = { device: s.device,
name: "specs",
color: "red",
body: [
{
kind: "variable_declaration",
args: {
label: "parent",
data_value: { kind: "nothing", args: { } }
}
}
],
regimen_items: [
{ time_offset: 100, sequence_id: s.id }
] }
post :create, body: payload.to_json, format: :json
expect(response.status).to eq(422)
expect(json.fetch(:error))
.to include("must provide a value for all parameters")
end
end
end