status => 404
) unless $checkout;
- my $claim = Koha::Checkouts::ReturnClaims->find(
- {
- issue_id => $checkout->id
- }
- );
- return $c->render(
- openapi => { error => "Bad request - claim exists" },
- status => 400
- ) if $claim;
-
- $claim = $checkout->claim_returned(
+ my $claim = $checkout->claim_returned(
{
charge_lost_fee => $charge_lost_fee,
created_by => $created_by,
);
}
catch {
- if ( $_->isa('Koha::Exceptions::Checkouts::ReturnClaims') ) {
+ if ( $_->isa('Koha::Exceptions::Object::DuplicateID') ) {
return $c->render(
- status => 500,
+ status => 409,
openapi => { error => "$_" }
);
}
+ elsif ( $_->isa('Koha::Exceptions::Checkouts::ReturnClaims::NoCreatedBy') ) {
+ return $c->render(
+ status => 400,
+ openapi => { error => "Mandatory attribute created_by missing" }
+ );
+ }
else {
return $c->render(
status => 500,
}
},
"404": {
- "description": "Checkout not found",
- "schema": {
- "$ref": "../definitions.json#/error"
- }
+ "description": "Checkout not found",
+ "schema": {
+ "$ref": "../definitions.json#/error"
+ }
+ },
+ "409": {
+ "description": "Conflict creating the resource",
+ "schema": {
+ "$ref": "../definitions.json#/error"
+ }
},
"500": {
"description": "Internal server error",
use Modern::Perl;
-use Test::More tests => 25;
+use Test::More tests => 27;
use Test::MockModule;
use Test::Mojo;
+use Test::Warn;
use t::lib::Mocks;
use t::lib::TestBuilder;
created_by => $librarian->id,
notes => "This is a test note."
}
-)->status_is(201);
+)->status_is(201)
+ ->header_like( Location => qr|^\/api\/v1\/return_claims/\d*|, 'SWAGGER3.4.1');
+
my $claim_id = $t->tx->res->json->{claim_id};
## Duplicate id
-$t->post_ok(
- "//$userid:$password@/api/v1/return_claims" => json => {
- item_id => $itemnumber1,
- charge_lost_fee => Mojo::JSON->false,
- created_by => $librarian->id,
- notes => "This is a test note."
+warning_like {
+ $t->post_ok(
+ "//$userid:$password@/api/v1/return_claims" => json => {
+ item_id => $itemnumber1,
+ charge_lost_fee => Mojo::JSON->false,
+ created_by => $librarian->id,
+ notes => "This is a test note."
+ }
+ )->status_is(409)
}
-)->status_is(400);
+ qr/^DBD::mysql::st execute failed: Duplicate entry/;
# Test editing a claim note
## Valid claim id