Bug 27004: Prevent claim resolution to fail
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 21 Dec 2020 10:05:26 +0000 (11:05 +0100)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 4 Jan 2021 12:29:47 +0000 (13:29 +0100)
If the account of the patron who created a claim is removed, then the
claim won't be resolvable.
Trying to resolve the claim will result in a 500:
[2020/12/21 10:05:55] [ERROR] PUT /api/v1/return_claims/1/resolve: unhandled exception (Koha::Exceptions::Checkouts::ReturnClaims::NoCreatedBy)<<[created_by is mandatory]>> Koha::REST::Plugin::Exceptions::__ANON

We should not check if created_by exist when we update an existing hold,
only when we create it.

Test plan:
- Login with patron A
- set a value to syspref ClaimReturnedLostValue
- Check an item out
- Claim returned it
- Login with patron B
- Delete patron A
- Resolve the claim
- ERROR in api-error.log an UI never confirming the resolution
- apply patch & restart services
- Resolve the claim
- it works

Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Koha/Checkouts/ReturnClaim.pm
t/db_dependent/api/v1/return_claims.t

index 92ab38f..624c725 100644 (file)
@@ -48,7 +48,7 @@ exceptions as needed.
 sub store {
     my ( $self ) = @_;
 
-    unless ( $self->created_by ) {
+    unless ( $self->in_storage || $self->created_by ) {
         Koha::Exceptions::Checkouts::ReturnClaims::NoCreatedBy->throw();
     }
 
index f0d8b1f..1664102 100755 (executable)
@@ -204,6 +204,8 @@ subtest 'resolve_claim() tests' => sub {
 
     my $claim_id = $claim->id;
 
+    $claim->created_by(undef)->store; # resolve the claim must work even if the created_by patron has been removed
+
     # Resolve a claim
     $t->put_ok(
         "//$userid:$password@/api/v1/return_claims/$claim_id/resolve" => json => {