Bug 20815: Tests refactoring

Some code were duplicated.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Jonathan Druart 2020-07-21 18:45:37 +02:00
parent 83d9a6e602
commit dfb70ce9f1

View file

@ -18,7 +18,7 @@
use Modern::Perl;
use utf8;
use Test::More tests => 51;
use Test::More tests => 48;
use Test::MockModule;
use Test::Deep qw( cmp_deeply );
@ -4062,34 +4062,24 @@ subtest 'Filling a hold should cancel existing transfer' => sub {
is( Koha::Item::Transfers->search({ itemnumber => $item->itemnumber, datearrived => undef })->count, 0, "No outstanding transfers when hold is waiting");
};
subtest 'Tests for NoRefundOnLostReturnedItemsAge = undef' => sub {
plan tests => 3;
subtest 'Tests for NoRefundOnLostReturnedItemsAge' => sub {
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', undef );
plan tests => 4;
my $lost_on = dt_from_string->subtract( days => 7 )->date;
my $library = $builder->build( { source => 'Branch' } );
my $patron = $builder->build(
t::lib::Mocks::mock_preference('BlockReturnOfLostItems', 0);
my $library = $builder->build_object( { class => 'Koha::Libraries' } );
my $patron = $builder->build_object(
{
source => 'Borrower',
value => { categorycode => $patron_category->{categorycode} }
class => 'Koha::Patrons',
value => { categorycode => $patron_category->{categorycode} }
}
);
my $biblionumber = $builder->build_sample_biblio(
{
branchcode => $library->{branchcode},
branchcode => $library->branchcode,
}
)->biblionumber;
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->{branchcode},
replacementprice => '42.00',
}
);
# And the circulation rule
Koha::CirculationRules->search->delete;
@ -4117,249 +4107,146 @@ subtest 'Tests for NoRefundOnLostReturnedItemsAge = undef' => sub {
}
);
# Test with NoRefundOnLostReturnedItemsAge disabled
my $issue = AddIssue( $patron, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
subtest 'NoRefundOnLostReturnedItemsAge = undef' => sub {
plan tests => 3;
my $a = Koha::Account::Lines->find(
{
itemnumber => $item->id,
borrowernumber => $patron->{borrowernumber}
}
);
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->{branchcode}, undef, dt_from_string );
$a = Koha::Account::Lines->find( $a->id );
is( $a->amountoutstanding + 0, 0, "Lost fee was refunded" );
};
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', undef );
subtest 'Tests for NoRefundOnLostReturnedItemsAge > length of days item has been lost' => sub {
plan tests => 3;
my $lost_on = dt_from_string->subtract( days => 7 )->date;
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', 7 );
my $lost_on = dt_from_string->subtract( days => 6 )->date;
my $library = $builder->build( { source => 'Branch' } );
my $patron = $builder->build(
{
source => 'Borrower',
value => { categorycode => $patron_category->{categorycode} }
}
);
my $biblionumber = $builder->build_sample_biblio(
{
branchcode => $library->{branchcode},
}
)->biblionumber;
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->{branchcode},
replacementprice => '42.00',
}
);
# And the circulation rule
Koha::CirculationRules->search->delete;
Koha::CirculationRules->set_rules(
{
categorycode => undef,
itemtype => undef,
branchcode => undef,
rules => {
issuelength => 14,
lengthunit => 'days',
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->branchcode,
replacementprice => '42',
}
}
);
$builder->build(
{
source => 'CirculationRule',
value => {
branchcode => undef,
categorycode => undef,
itemtype => undef,
rule_name => 'refund',
rule_value => 1
);
my $issue = AddIssue( $patron->unblessed, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
my $a = Koha::Account::Lines->search(
{
itemnumber => $item->id,
borrowernumber => $patron->borrowernumber
}
}
);
)->next;
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->branchcode, undef, dt_from_string );
$a = $a->get_from_storage;
is( $a->amountoutstanding + 0, 0, "Lost fee was refunded" );
$a->delete;
};
# Test with NoRefundOnLostReturnedItemsAge disabled
my $issue = AddIssue( $patron, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
subtest 'NoRefundOnLostReturnedItemsAge > length of days item has been lost' => sub {
plan tests => 3;
my $a = Koha::Account::Lines->find(
{
itemnumber => $item->id,
borrowernumber => $patron->{borrowernumber}
}
);
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->{branchcode}, undef, dt_from_string );
$a = Koha::Account::Lines->find( $a->id );
is( $a->amountoutstanding + 0, 0, "Lost fee was refunded" );
};
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', 7 );
subtest 'Tests for NoRefundOnLostReturnedItemsAge = length of days item has been lost' => sub {
plan tests => 3;
my $lost_on = dt_from_string->subtract( days => 6 )->date;
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', 7 );
my $lost_on = dt_from_string->subtract( days => 7 )->date;
my $library = $builder->build( { source => 'Branch' } );
my $patron = $builder->build(
{
source => 'Borrower',
value => { categorycode => $patron_category->{categorycode} }
}
);
my $biblionumber = $builder->build_sample_biblio(
{
branchcode => $library->{branchcode},
}
)->biblionumber;
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->{branchcode},
replacementprice => '42.00',
}
);
# And the circulation rule
Koha::CirculationRules->search->delete;
Koha::CirculationRules->set_rules(
{
categorycode => undef,
itemtype => undef,
branchcode => undef,
rules => {
issuelength => 14,
lengthunit => 'days',
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->branchcode,
replacementprice => '42',
}
}
);
$builder->build(
{
source => 'CirculationRule',
value => {
branchcode => undef,
categorycode => undef,
itemtype => undef,
rule_name => 'refund',
rule_value => 1
);
my $issue = AddIssue( $patron->unblessed, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
my $a = Koha::Account::Lines->search(
{
itemnumber => $item->id,
borrowernumber => $patron->borrowernumber
}
}
);
)->next;
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->branchcode, undef, dt_from_string );
$a = $a->get_from_storage;
is( $a->amountoutstanding + 0, 0, "Lost fee was refunded" );
$a->delete;
};
# Test with NoRefundOnLostReturnedItemsAge disabled
my $issue = AddIssue( $patron, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
subtest 'NoRefundOnLostReturnedItemsAge = length of days item has been lost' => sub {
plan tests => 3;
my $a = Koha::Account::Lines->find(
{
itemnumber => $item->id,
borrowernumber => $patron->{borrowernumber}
}
);
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->{branchcode}, undef, dt_from_string );
$a = Koha::Account::Lines->find( $a->id );
is( $a->amountoutstanding + 0, 42, "Lost fee was not refunded" );
};
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', 7 );
subtest 'Tests for NoRefundOnLostReturnedItemsAge < length of days item has been lost' => sub {
plan tests => 3;
my $lost_on = dt_from_string->subtract( days => 7 )->date;
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', 7 );
my $lost_on = dt_from_string->subtract( days => 8 )->date;
my $library = $builder->build( { source => 'Branch' } );
my $patron = $builder->build(
{
source => 'Borrower',
value => { categorycode => $patron_category->{categorycode} }
}
);
my $biblionumber = $builder->build_sample_biblio(
{
branchcode => $library->{branchcode},
}
)->biblionumber;
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->{branchcode},
replacementprice => '42.00',
}
);
# And the circulation rule
Koha::CirculationRules->search->delete;
Koha::CirculationRules->set_rules(
{
categorycode => undef,
itemtype => undef,
branchcode => undef,
rules => {
issuelength => 14,
lengthunit => 'days',
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->branchcode,
replacementprice => '42',
}
}
);
$builder->build(
{
source => 'CirculationRule',
value => {
branchcode => undef,
categorycode => undef,
itemtype => undef,
rule_name => 'refund',
rule_value => 1
);
my $issue = AddIssue( $patron->unblessed, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
my $a = Koha::Account::Lines->search(
{
itemnumber => $item->id,
borrowernumber => $patron->borrowernumber
}
}
);
)->next;
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->branchcode, undef, dt_from_string );
$a = $a->get_from_storage;
is( $a->amountoutstanding + 0, 42, "Lost fee was not refunded" );
$a->delete;
};
# Test with NoRefundOnLostReturnedItemsAge disabled
my $issue = AddIssue( $patron, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
subtest 'NoRefundOnLostReturnedItemsAge < length of days item has been lost' => sub {
plan tests => 3;
my $a = Koha::Account::Lines->find(
{
itemnumber => $item->id,
borrowernumber => $patron->{borrowernumber}
}
);
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->{branchcode}, undef, dt_from_string );
$a = Koha::Account::Lines->find( $a->id );
is( $a->amountoutstanding + 0, 42, "Lost fee was not refunded" );
t::lib::Mocks::mock_preference( 'WhenLostChargeReplacementFee', 1 );
t::lib::Mocks::mock_preference( 'NoRefundOnLostReturnedItemsAge', 7 );
my $lost_on = dt_from_string->subtract( days => 8 )->date;
my $item = $builder->build_sample_item(
{
biblionumber => $biblionumber,
library => $library->branchcode,
replacementprice => '42',
}
);
my $issue = AddIssue( $patron->unblessed, $item->barcode );
LostItem( $item->itemnumber, 'cli', 0 );
$item->_result->itemlost(1);
$item->_result->itemlost_on( $lost_on );
$item->_result->update();
my $a = Koha::Account::Lines->search(
{
itemnumber => $item->id,
borrowernumber => $patron->borrowernumber
}
);
$a = $a->next;
ok( $a, "Found accountline for lost fee" );
is( $a->amountoutstanding + 0, 42, "Lost fee charged correctly" );
my ( $doreturn, $messages ) = AddReturn( $item->barcode, $library->branchcode, undef, dt_from_string );
$a = $a->get_from_storage;
is( $a->amountoutstanding + 0, 42, "Lost fee was not refunded" );
$a->delete;
};
};
$schema->storage->txn_rollback;