From b972dafc0d5d2122133daf6a84d42e97514e1aa4 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Mon, 4 Jul 2016 12:19:46 +0100 Subject: [PATCH] [SIGNED-OFF] Bug 16850: Add test coverage for CanBookBeIssued Content-Type: text/plain; charset="utf-8" Signed-off-by: Owen Leonard --- t/db_dependent/Circulation.t | 63 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index f06e4d5..135e2ac 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -30,7 +30,7 @@ use Koha::Database; use t::lib::TestBuilder; -use Test::More tests => 86; +use Test::More tests => 87; BEGIN { use_ok('C4::Circulation'); @@ -1071,6 +1071,67 @@ subtest 'AddIssue & AllowReturnToBranch' => sub { # TODO t::lib::Mocks::mock_preference('AllowReturnToBranch', 'homeorholdingbranch'); }; +subtest 'CanBookBeIssued + Koha::Patron->is_debarred|has_overdues' => sub { + plan tests => 8; + + my $library = $builder->build( { source => 'Branch' } ); + my $patron = $builder->build( { source => 'Borrower' } ); + + my $biblioitem_1 = $builder->build( { source => 'Biblioitem' } ); + my $item_1 = $builder->build( + { source => 'Item', + value => { + homebranch => $library->{branchcode}, + holdingbranch => $library->{branchcode}, + notforloan => 0, + itemlost => 0, + withdrawn => 0, + biblionumber => $biblioitem_1->{biblionumber} + } + } + ); + my $biblioitem_2 = $builder->build( { source => 'Biblioitem' } ); + my $item_2 = $builder->build( + { source => 'Item', + value => { + homebranch => $library->{branchcode}, + holdingbranch => $library->{branchcode}, + notforloan => 0, + itemlost => 0, + withdrawn => 0, + biblionumber => $biblioitem_2->{biblionumber} + } + } + ); + + my ( $error, $question, $alerts ); + + # Patron cannot issue item_1, he has overdues + my $yesterday = DateTime->today( time_zone => C4::Context->tz() )->add( days => -1 ); + my $issue = AddIssue( $patron, $item_1->{barcode}, $yesterday ); # Add an overdue + + t::lib::Mocks::mock_preference( 'OverduesBlockCirc', 'confirmation' ); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron, $item_2->{barcode} ); + is( keys(%$error) + keys(%$alerts), 0 ); + is( $question->{USERBLOCKEDOVERDUE}, 1 ); + + t::lib::Mocks::mock_preference( 'OverduesBlockCirc', 'block' ); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron, $item_2->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( $error->{USERBLOCKEDOVERDUE}, 1 ); + + # Patron cannot issue item_1, he is debarred + my $tomorrow = DateTime->today( time_zone => C4::Context->tz() )->add( days => 1 ); + Koha::Patron::Debarments::AddDebarment( { borrowernumber => $patron->{borrowernumber}, expiration => $tomorrow } ); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron, $item_2->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( $error->{USERBLOCKEDWITHENDDATE}, output_pref( { dt => $tomorrow, dateformat => 'sql', dateonly => 1 } ) ); + + Koha::Patron::Debarments::AddDebarment( { borrowernumber => $patron->{borrowernumber} } ); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron, $item_2->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( $error->{USERBLOCKEDNOENDDATE}, '9999-12-31' ); +}; sub set_userenv { my ( $library ) = @_; -- 2.1.4