Bug 16534: Add tests for CanBookBeIssued & AllowReturnToBranch
Signed-off-by: Marc Véron <veron@veron.ch> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
87dbed0abd
commit
2c88538946
1 changed files with 96 additions and 1 deletions
|
@ -30,7 +30,7 @@ use Koha::Database;
|
|||
|
||||
use t::lib::TestBuilder;
|
||||
|
||||
use Test::More tests => 84;
|
||||
use Test::More tests => 85;
|
||||
|
||||
BEGIN {
|
||||
use_ok('C4::Circulation');
|
||||
|
@ -908,4 +908,99 @@ C4::Context->dbh->do("DELETE FROM accountlines");
|
|||
is( Koha::Account::Lines->search({ issue_id => $issue->id })->count, 1, 'UpdateFine should not create a new accountline when updating an existing fine');
|
||||
}
|
||||
|
||||
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;
|
||||
|
|
Loading…
Reference in a new issue