Gracefully rescue_from CeleryScript::TypeCheckError
parent
d4371e0fa6
commit
568f8bd1b7
|
@ -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 }
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue