From 7e81d39a4e1b576d15af81f65e43a42ef78b061a Mon Sep 17 00:00:00 2001
From: Tomas Cohen Arazi <tomascohen@theke.io>
Date: Wed, 17 Nov 2021 18:02:17 -0300
Subject: [PATCH] Bug 29510: Regression tests
Content-Type: text/plain; charset=utf-8

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
---
 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.30.2