From eae197962ed7355df520b87870dc56edebe5392b Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Wed, 17 Nov 2021 18:02:17 -0300 Subject: [PATCH] Bug 29510: Regression tests Signed-off-by: Tomas Cohen Arazi Signed-off-by: Martin Renvoize Signed-off-by: Marcel de Rooy (cherry picked from commit fe5dc0bdda78424437331cf83624c7606a3a54b4) Signed-off-by: Fridolin Somers --- t/db_dependent/Koha/REST/Plugin/Objects.t | 57 ++++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/t/db_dependent/Koha/REST/Plugin/Objects.t b/t/db_dependent/Koha/REST/Plugin/Objects.t index b0eebbd492..d649f4f4ab 100755 --- a/t/db_dependent/Koha/REST/Plugin/Objects.t +++ b/t/db_dependent/Koha/REST/Plugin/Objects.t @@ -138,8 +138,21 @@ get '/cities/:city_id/rs' => sub { $c->render( status => 200, json => { name => $city->city_name } ); }; +get '/my_patrons/:patron_id' => sub { + + my $c = shift; + + my $patron_id = $c->param('patron_id'); + my $patron = $c->objects->find( scalar Koha::Patrons->new, $patron_id ); + + $c->render( + status => 200, + json => $patron + ); +}; + # The tests -use Test::More tests => 17; +use Test::More tests => 18; use Test::Mojo; use t::lib::Mocks; @@ -907,7 +920,6 @@ subtest 'objects.search helper with expanded authorised values' => sub { ->json_is( '/0/name' => 'Manuel' )->json_hasnt('/0/_strings') ->json_is( '/1/name' => 'Manuela' )->json_hasnt('/1/_strings'); - $schema->storage->txn_rollback; }; @@ -963,3 +975,44 @@ subtest 'objects.find_rs helper' => sub { $schema->storage->txn_rollback; }; + +subtest 'objects.find helper, search_limited() tests' => sub { + + plan tests => 12; + + $schema->storage->txn_begin; + + my $library_1 = $builder->build_object( { class => 'Koha::Libraries' } ); + my $library_2 = $builder->build_object( { class => 'Koha::Libraries' } ); + + my $patron_1 = $builder->build_object( { class => 'Koha::Patrons', value => { branchcode => $library_1->id } } ); + my $patron_2 = $builder->build_object( { class => 'Koha::Patrons', value => { branchcode => $library_2->id } } ); + + my @libraries_where_can_see_patrons = ( $library_1->id, $library_2->id ); + + my $t = Test::Mojo->new; + + my $mocked_patron = Test::MockModule->new('Koha::Patron'); + $mocked_patron->mock( + 'libraries_where_can_see_patrons', + sub { + return @libraries_where_can_see_patrons; + } + ); + + my $patron = $builder->build_object( { class => 'Koha::Patrons' } ); + + t::lib::Mocks::mock_userenv( { patron => $patron } ); + + $t->get_ok( "/my_patrons/" . $patron_1->id )->status_is(200)->json_is( '/patron_id' => $patron_1->id ); + + $t->get_ok( "/my_patrons/" . $patron_2->id )->status_is(200)->json_is( '/patron_id' => $patron_2->id ); + + @libraries_where_can_see_patrons = ( $library_2->id ); + + $t->get_ok( "/my_patrons/" . $patron_1->id )->status_is(200)->json_is(undef); + + $t->get_ok( "/my_patrons/" . $patron_2->id )->status_is(200)->json_is( '/patron_id' => $patron_2->id ); + + $schema->storage->txn_rollback; +}; -- 2.20.1