@@ -, +, @@ --- C4/ILSDI/Services.pm | 4 ++-- C4/Reserves.pm | 2 +- t/db_dependent/ILSDI_Services.t | 32 +++++++++++++++++++++++++++++++- t/db_dependent/Reserves.t | 18 +++++++++++------- 4 files changed, 45 insertions(+), 11 deletions(-) --- a/C4/ILSDI/Services.pm +++ a/C4/ILSDI/Services.pm @@ -613,7 +613,7 @@ sub HoldTitle { return { code => 'NotHoldable' } if AlreadyReserved($biblionumber, $borrowernumber); # Check if the biblio can be reserved - return { code => 'NotHoldable' } unless CanBookBeReserved( $borrowernumber, $biblionumber ) eq 'OK'; + return { code => 'NotHoldable' } unless C4::Reserves::CanBookBeReserved( $borrowernumber, $biblionumber ) eq 'OK'; my $branch; @@ -628,7 +628,7 @@ sub HoldTitle { # Add the reserve # $branch, $borrowernumber, $biblionumber, - # $constraint, $bibitems, $priority, $resdate, $expdate, $notes, + # $bibitems, $priority, $resdate, $expdate, $notes, # $title, $checkitem, $found my $priority= C4::Reserves::CalculatePriority( $biblionumber ); AddReserve( $branch, $borrowernumber, $biblionumber, undef, $priority, undef, undef, undef, $title, undef, undef ); --- a/C4/Reserves.pm +++ a/C4/Reserves.pm @@ -1060,7 +1060,7 @@ sub ReachedMaxReserves { return 0 unless C4::Context->preference('maxreserves'); - if ( $number_reserves + $number_wanted >= C4::Context->preference('maxreserves') ) { + if ( $number_reserves + $number_wanted > C4::Context->preference('maxreserves') ) { return 1; } --- a/t/db_dependent/ILSDI_Services.t +++ a/t/db_dependent/ILSDI_Services.t @@ -25,6 +25,22 @@ $dbh->{RaiseError} = 1; my $maxallowedreserves = 3; t::lib::Mocks::mock_preference('maxreserves', $maxallowedreserves); +my $context = new Test::MockModule('C4::Context'); +mock_marcfromkohafield(); + +my $reserves_module = new Test::MockModule('C4::Reserves'); +$reserves_module->mock('CanBookBeReserved', + sub { + return 'OK'; + } +); + +$reserves_module->mock('CanItemBeReserved', + sub { + return 'OK'; + } +); + # Create patron my %data = ( firstname => 'my firstname', @@ -71,7 +87,7 @@ my %item_branch_infos = ( ); my $record = MARC::Record->new; -my $title = MARC::Field->new('200','','','a' => 'Hello world.'); +my $title = MARC::Field->new('245','','','a' => 'Hello world.'); $record->append_fields($title); my ($biblionumber) = AddBiblio($record, ''); @@ -163,3 +179,17 @@ my $itemnumber4 = AddItem({ barcode => '0401', %item_branch_infos }, $biblionumb $reply = C4::ILSDI::Services::HoldItem($query); is($reply->{'pickup_location'}, 'Unit test library', 'Joe John hold an item - ILSDI'); } + +sub mock_marcfromkohafield { + + $context->mock('marcfromkohafield', + sub { + return { + '' => { + 'biblio.title' => [ '245', 'a' ], + 'biblio.biblionumber' => [ '999', 'c' ], + 'biblioitems.biblioitemnumber' => [ '999', 'd' ] + } + }; + }); +} --- a/t/db_dependent/Reserves.t +++ a/t/db_dependent/Reserves.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 77; +use Test::More tests => 79; use Test::Warn; use MARC::Record; @@ -168,13 +168,17 @@ t::lib::Mocks::mock_preference('maxreserves', 3); ok(!ReachedMaxReserves($borrowernumber), 'First borrower doesn\'t reached max reserves'); -AddReserve($branch, $borrowernumber, $miniaturist_id, - $constraint, $bibitems, $priority, $resdate, $expdate, $notes, - $title_14155a, $checkitem, $found); +ok(!ReachedMaxReserves($borrowernumber, 2), 'First borrower asking for 2 documents doesn\'t reached max reserves'); -AddReserve($branch, $borrowernumber, $broken_id, - $constraint, $bibitems, $priority, $resdate, $expdate, $notes, - $title_14155b, $checkitem, $found); +ok(ReachedMaxReserves($borrowernumber, 3), 'First borrower asking for 3 documents reached max reserves'); + +AddReserve($branch, $borrowernumber, $miniaturist_id, + $bibitems, $priority, $resdate, $expdate, $notes, + $title_14155a, $checkitem, $found); + +AddReserve($branch, $borrowernumber, $broken_id, + $bibitems, $priority, $resdate, $expdate, $notes, + $title_14155b, $checkitem, $found); ok(ReachedMaxReserves($borrowernumber), 'First borrower reached max reserves'); --