Bug 35744: Implement +strings for GET /patrons/:patron_id

In order to retrieve the library's name and patron category's
description alongwith other patron's info.

Test plan:
Run the following command before and after this patch:

% curl -u koha:koha --request GET 'http://localhost:8081/api/v1/patrons/42' --header "Content-Type: application/json" --header "x-koha-embed: +strings" | jq

Notice that you now have _strings which contains the library's name and
patron category's description

Signed-off-by: Owen Leonard <oleonard@myacpl.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
This commit is contained in:
Jonathan Druart 2024-01-09 13:14:55 +01:00 committed by Katrin Fischer
parent e8c0438d87
commit 5464d11099
Signed by: kfischer
GPG key ID: 0EF6E2C03357A834
4 changed files with 55 additions and 1 deletions

View file

@ -2467,6 +2467,27 @@ sub to_api_mapping {
};
}
=head3 strings_map
Returns a map of column name to string representations including the string.
=cut
sub strings_map {
my ( $self, $params ) = @_;
return {
library_id => {
str => $self->library->branchname,
type => 'library',
},
category_id => {
str => $self->category->description,
type => 'patron_category',
}
};
}
=head3 queue_notice
Koha::Patrons->queue_notice({ letter_params => $letter_params, message_name => 'DUE'});

View file

@ -378,6 +378,11 @@ properties:
type:
- boolean
description: Protected status of the patron
_strings:
type:
- object
- "null"
description: A list of stringified coded values
additionalProperties: false
required:
- surname

View file

@ -482,6 +482,7 @@
items:
type: string
enum:
- +strings
- extended_attributes
collectionFormat: csv
produces:

View file

@ -230,7 +230,7 @@ subtest 'list() tests' => sub {
subtest 'get() tests' => sub {
plan tests => 3;
plan tests => 4;
$schema->storage->txn_begin;
unauthorized_access_tests('GET', -1, undef);
@ -315,6 +315,33 @@ subtest 'get() tests' => sub {
$schema->storage->txn_rollback;
};
subtest '+strings' => sub {
plan tests => 4;
$schema->storage->txn_begin;
my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
my $librarian = $builder->build_object(
{
class => 'Koha::Patrons',
value => { flags => 2**4 } # borrowers flag = 4
}
);
my $password = 'thePassword123';
$librarian->set_password( { password => $password, skip_validation => 1 } );
my $userid = $librarian->userid;
$t->get_ok( "//$userid:$password@/api/v1/patrons/" . $patron->id => { "x-koha-embed" => "+strings" } )
->status_is(200)
->json_has( '/_strings/library_id' => { str => $patron->library->branchname, type => 'library' } )
->json_has(
'/_strings/category_id' => { str => $patron->category->description, type => 'patron_category' } );
$schema->storage->txn_rollback;
};
};
subtest 'add() tests' => sub {