From 98a9f1a2bff262f0d54686601773148d949f6b49 Mon Sep 17 00:00:00 2001 From: Nick Clemens Date: Fri, 27 May 2022 12:43:00 +0000 Subject: [PATCH] Bug 30860: Unit test --- t/db_dependent/Reserves.t | 52 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index 5bda45c4fa..f5c452e3f3 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 71; +use Test::More tests => 72; use Test::MockModule; use Test::Warn; @@ -1517,5 +1517,55 @@ subtest 'AlterPriorty() tests' => sub { AlterPriority( "bottom", $reserve_id, 1, 2, 1, 3 ); + $schema->storage->txn_rollback; +}; + +subtest 'CanBookBeReserved return_all_items tests' => sub { + + plan tests => 3; + + $schema->storage->txn_begin; + + my $patron = $builder->build_object({ class => "Koha::Patrons" }); + + my $item_1 = $builder->build_sample_item({ homebranch => $patron->branchcode }); + my $item_2 = $builder->build_sample_item({ biblionumber => $item_1->biblionumber }); + my $item_3 = $builder->build_sample_item({ biblionumber => $item_1->biblionumber }); + my $item_4 = $builder->build_sample_item({ biblionumber => $item_1->biblionumber }); + + my $can_book_be = CanBookBeReserved($patron->borrowernumber,$item_1->biblionumber); + my $can_item_1_be = CanItemBeReserved($patron,$item_1); + my $can_item_2_be = CanItemBeReserved($patron,$item_2); + my $can_item_3_be = CanItemBeReserved($patron,$item_3); + my $can_item_4_be = CanItemBeReserved($patron,$item_4); + + my $can_be_all = { + %$can_book_be, + $item_1->itemnumber => $can_item_1_be, + $item_2->itemnumber => $can_item_2_be, + $item_3->itemnumber => $can_item_3_be, + $item_4->itemnumber => $can_item_4_be, + }; + + my $can_book_be_all = CanBookBeReserved($patron->borrowernumber,$item_1->biblionumber, undef, {return_all_items => 1}); + + is_deeply( $can_book_be_all, $can_be_all, "We get status for book and status per itemnumber when all requested"); + + t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 0); + $item_4->damaged(1)->store(); + $can_item_4_be = CanItemBeReserved($patron,$item_4); + my $can_be_all = { + %$can_book_be, + $item_1->itemnumber => $can_item_1_be, + $item_2->itemnumber => $can_item_2_be, + $item_3->itemnumber => $can_item_3_be, + $item_4->itemnumber => $can_item_4_be, + }; + $can_book_be_all = CanBookBeReserved($patron->borrowernumber,$item_1->biblionumber, undef, {return_all_items => 1}); + + is_deeply( $can_book_be_all, $can_be_all, "We get status for book and status per itemnumber when all requested"); + is( $can_book_be_all->{status}, 'OK', "When some can be reserved and some cannot we get 'OK'"); + + $schema->storage->txn_rollback; }; -- 2.30.2