From d5c0f24e99d9bf4cf9245f2dbbe5a97b8ca41ed1 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 | 51 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index 1f368e36b6..5f25ae49fc 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 77; +use Test::More tests => 78; use Test::MockModule; use Test::Warn; @@ -1719,3 +1719,52 @@ subtest 'CanItemBeReserved() tests' => sub { $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