9 use t::lib::TestBuilder;
11 use Test::More tests => 5;
13 use_ok('C4::Reserves');
15 my $schema = Koha::Database->new->schema;
16 $schema->storage->txn_begin;
18 my $dbh = C4::Context->dbh;
19 $dbh->{AutoCommit} = 0;
20 $dbh->{RaiseError} = 1;
22 my $builder = t::lib::TestBuilder->new();
24 t::lib::Mocks::mock_preference('ExpireReservesOnHolidays', 0);
26 my $today = dt_from_string();
27 my $reserve_reservedate = $today->clone;
28 $reserve_reservedate->subtract(days => 30);
30 my $reserve1_expirationdate = $today->clone;
31 $reserve1_expirationdate->add(days => 1);
34 my $reserve1 = $builder->build({
37 reservedate => $reserve_reservedate,
38 expirationdate => $reserve1_expirationdate,
39 cancellationdate => undef,
45 CancelExpiredReserves();
46 my $r1 = Koha::Holds->find($reserve1->{reserve_id});
47 ok($r1, 'Reserve 1 should not be canceled.');
49 my $reserve2_expirationdate = $today->clone;
50 $reserve2_expirationdate->subtract(days => 1);
53 my $reserve2 = $builder->build({
56 reservedate => $reserve_reservedate,
57 expirationdate => $reserve2_expirationdate,
58 cancellationdate => undef,
64 CancelExpiredReserves();
65 my $r2 = Koha::Holds->find($reserve2->{reserve_id});
66 is($r2, undef,'reserve 2 should be canceled.');
68 # Reserve expired on holiday
69 my $reserve3 = $builder->build({
72 reservedate => $reserve_reservedate,
73 expirationdate => $reserve2_expirationdate,
75 cancellationdate => undef,
81 Koha::Caches->get_instance()->flush_all();
82 my $holiday = $builder->build({
83 source => 'SpecialHoliday',
87 month => $today->month,
89 title => 'My holiday',
94 CancelExpiredReserves();
95 my $r3 = Koha::Holds->find($reserve3->{reserve_id});
96 ok($r3,'Reserve 3 should not be canceled.');
98 t::lib::Mocks::mock_preference('ExpireReservesOnHolidays', 1);
99 CancelExpiredReserves();
100 $r3 = Koha::Holds->find($reserve3->{reserve_id});
101 is($r3, undef,'Reserve 3 should be canceled.');