From 79b35081a6ca7e1aade1729621f2795dfe33add9 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Sun, 22 May 2016 10:02:44 +0100 Subject: [PATCH] Bug 16534: Add tests for CanBookBeIssued & AllowReturnToBranch MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc Véron Signed-off-by: Kyle M Hall (cherry picked from commit 2c88538946e05feb65aa5b0f9007882a0ce6ac73) Signed-off-by: Frédéric Demians (cherry picked from commit 141ada91cc7de6e32e51ae5dfa203d4c89099c4e) Signed-off-by: Julian Maurice --- t/db_dependent/Circulation.t | 97 +++++++++++++++++++++++++++++++++++- 1 file changed, 96 insertions(+), 1 deletion(-) diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index 0b7f2353bf..5224191240 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 => 82; +use Test::More tests => 83; BEGIN { use_ok('C4::Circulation'); @@ -829,4 +829,99 @@ C4::Context->dbh->do("DELETE FROM accountlines"); is( $error, 'onsite_checkout', 'A correct error code should be returned by CanBookBeRenewed for on-site checkout' ); } +subtest 'CanBookBeIssued & AllowReturnToBranch' => sub { + plan tests => 23; + + my $homebranch = $builder->build( { source => 'Branch' } ); + my $holdingbranch = $builder->build( { source => 'Branch' } ); + my $otherbranch = $builder->build( { source => 'Branch' } ); + my $patron_1 = $builder->build( { source => 'Borrower' } ); + my $patron_2 = $builder->build( { source => 'Borrower' } ); + + my $biblioitem = $builder->build( { source => 'Biblioitem' } ); + my $item = $builder->build( + { source => 'Item', + value => { + homebranch => $homebranch->{branchcode}, + holdingbranch => $holdingbranch->{branchcode}, + notforloan => 0, + itemlost => 0, + withdrawn => 0, + biblionumber => $biblioitem->{biblionumber} + } + } + ); + + set_userenv($holdingbranch); + + my $issue = AddIssue( $patron_1, $item->{barcode} ); + is( ref($issue), 'Koha::Schema::Result::Issue' ); # FIXME Should be Koha::Issue + + my ( $error, $question, $alerts ); + + # AllowReturnToBranch == anywhere + t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'anywhere' ); + ## Can be issued from homebranch + set_userenv($homebranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$error) + keys(%$alerts), 0 ); + is( exists $question->{ISSUED_TO_ANOTHER}, 1 ); + ## Can be issued from holdingbranch + set_userenv($holdingbranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$error) + keys(%$alerts), 0 ); + is( exists $question->{ISSUED_TO_ANOTHER}, 1 ); + ## Can be issued from another branch + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$error) + keys(%$alerts), 0 ); + is( exists $question->{ISSUED_TO_ANOTHER}, 1 ); + + # AllowReturnToBranch == holdingbranch + t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'holdingbranch' ); + ## Cannot be issued from homebranch + set_userenv($homebranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( exists $error->{RETURN_IMPOSSIBLE}, 1 ); + is( $error->{branch_to_return}, $holdingbranch->{branchcode} ); + ## Can be issued from holdinbranch + set_userenv($holdingbranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$error) + keys(%$alerts), 0 ); + is( exists $question->{ISSUED_TO_ANOTHER}, 1 ); + ## Cannot be issued from another branch + set_userenv($otherbranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( exists $error->{RETURN_IMPOSSIBLE}, 1 ); + is( $error->{branch_to_return}, $holdingbranch->{branchcode} ); + + # AllowReturnToBranch == homebranch + t::lib::Mocks::mock_preference( 'AllowReturnToBranch', 'homebranch' ); + ## Can be issued from holdinbranch + set_userenv($homebranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$error) + keys(%$alerts), 0 ); + is( exists $question->{ISSUED_TO_ANOTHER}, 1 ); + ## Cannot be issued from holdinbranch + set_userenv($holdingbranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( exists $error->{RETURN_IMPOSSIBLE}, 1 ); + is( $error->{branch_to_return}, $homebranch->{branchcode} ); + ## Cannot be issued from holdinbranch + set_userenv($otherbranch); + ( $error, $question, $alerts ) = CanBookBeIssued( $patron_2, $item->{barcode} ); + is( keys(%$question) + keys(%$alerts), 0 ); + is( exists $error->{RETURN_IMPOSSIBLE}, 1 ); + is( $error->{branch_to_return}, $homebranch->{branchcode} ); + + # TODO t::lib::Mocks::mock_preference('AllowReturnToBranch', 'homeorholdingbranch'); +}; + +sub set_userenv { + my ( $library ) = @_; + C4::Context->set_userenv(0,0,0,'firstname','surname', $library->{branchcode}, $library->{branchname}, '', '', ''); +} + 1; -- 2.39.5