Bug 12063 - Remove checking of ExpireReservesMaxPickUpDelay in CancelExpiredReserves...
[koha.git] / t / db_dependent / Holds / CancelReserves.t
1 #!/usr/bin/perl
2
3 use Modern::Perl;
4
5 use C4::Reserves;
6 use Koha::DateUtils;
7
8 use t::lib::Mocks;
9 use t::lib::TestBuilder;
10
11 use Test::More tests => 5;
12
13 use_ok('C4::Reserves');
14
15 my $schema  = Koha::Database->new->schema;
16 $schema->storage->txn_begin;
17
18 my $dbh = C4::Context->dbh;
19 $dbh->{AutoCommit} = 0;
20 $dbh->{RaiseError} = 1;
21
22 my $builder = t::lib::TestBuilder->new();
23
24 t::lib::Mocks::mock_preference('ExpireReservesOnHolidays', 0);
25
26 my $today = dt_from_string();
27 my $reserve_reservedate = $today->clone;
28 $reserve_reservedate->subtract(days => 30);
29
30 my $reserve1_expirationdate = $today->clone;
31 $reserve1_expirationdate->add(days => 1);
32
33 # Reserve not expired
34 my $reserve1 = $builder->build({
35     source => 'Reserve',
36     value => {
37         reservedate => $reserve_reservedate,
38         expirationdate => $reserve1_expirationdate,
39         cancellationdate => undef,
40         priority => 0,
41         found => 'W',
42     },
43 });
44
45 CancelExpiredReserves();
46 my $r1 = Koha::Holds->find($reserve1->{reserve_id});
47 ok($r1, 'Reserve 1 should not be canceled.');
48
49 my $reserve2_expirationdate = $today->clone;
50 $reserve2_expirationdate->subtract(days => 1);
51
52 # Reserve expired
53 my $reserve2 = $builder->build({
54     source => 'Reserve',
55     value => {
56         reservedate => $reserve_reservedate,
57         expirationdate => $reserve2_expirationdate,
58         cancellationdate => undef,
59         priority => 0,
60         found => 'W',
61     },
62 });
63
64 CancelExpiredReserves();
65 my $r2 = Koha::Holds->find($reserve2->{reserve_id});
66 is($r2, undef,'reserve 2 should be canceled.');
67
68 # Reserve expired on holiday
69 my $reserve3 = $builder->build({
70     source => 'Reserve',
71     value => {
72         reservedate => $reserve_reservedate,
73         expirationdate => $reserve2_expirationdate,
74         branchcode => 'LIB1',
75         cancellationdate => undef,
76         priority => 0,
77         found => 'W',
78     },
79 });
80
81 Koha::Caches->get_instance()->flush_all();
82 my $holiday = $builder->build({
83     source => 'SpecialHoliday',
84     value => {
85         branchcode => 'LIB1',
86         day => $today->day,
87         month => $today->month,
88         year => $today->year,
89         title => 'My holiday',
90         isexception => 0
91     },
92 });
93
94 CancelExpiredReserves();
95 my $r3 = Koha::Holds->find($reserve3->{reserve_id});
96 ok($r3,'Reserve 3 should not be canceled.');
97
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.');