Bug 18226 - Remove "use Test::DBIx::Class" instantiations' dangerous code duplication...
[koha.git] / t / db_dependent / Circulation / CalcDateDue.t
1 #!/usr/bin/perl
2
3 use Modern::Perl;
4
5 use Test::More tests => 5;
6 use Test::MockModule;
7 use DBI;
8 use DateTime;
9 use t::lib::Mocks;
10 use t::lib::TestBuilder;
11
12 use_ok('C4::Circulation');
13
14 my $schema = Koha::Database->new->schema;
15 $schema->storage->txn_begin;
16 my $builder = t::lib::TestBuilder->new;
17
18 my $categorycode = 'B';
19 my $itemtype = 'MX';
20 my $branchcode = 'FPL';
21 my $issuelength = 10;
22 my $renewalperiod = 5;
23 my $lengthunit = 'days';
24
25 Koha::Database->schema->resultset('Issuingrule')->create({
26   categorycode => $categorycode,
27   itemtype => $itemtype,
28   branchcode => $branchcode,
29   issuelength => $issuelength,
30   renewalperiod => $renewalperiod,
31   lengthunit => $lengthunit,
32 });
33
34 #Set syspref ReturnBeforeExpiry = 1 and useDaysMode = 'Days'
35 t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 1);
36 t::lib::Mocks::mock_preference('useDaysMode', 'Days');
37
38 my $dateexpiry = '2013-01-01';
39
40 my $borrower = {categorycode => 'B', dateexpiry => $dateexpiry};
41 my $start_date = DateTime->new({year => 2013, month => 2, day => 9});
42 my $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower );
43 is($date, $dateexpiry . 'T23:59:00', 'date expiry');
44 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower, 1 );
45
46
47 #Set syspref ReturnBeforeExpiry = 1 and useDaysMode != 'Days'
48 t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 1);
49 t::lib::Mocks::mock_preference('useDaysMode', 'noDays');
50
51 $borrower = {categorycode => 'B', dateexpiry => $dateexpiry};
52 $start_date = DateTime->new({year => 2013, month => 2, day => 9});
53 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower );
54 is($date, $dateexpiry . 'T23:59:00', 'date expiry');
55
56 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower, 1 );
57
58
59 #Set syspref ReturnBeforeExpiry = 0 and useDaysMode = 'Days'
60 t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 0);
61 t::lib::Mocks::mock_preference('useDaysMode', 'Days');
62
63 $borrower = {categorycode => 'B', dateexpiry => $dateexpiry};
64 $start_date = DateTime->new({year => 2013, month => 2, day => 9});
65 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower );
66 is($date, '2013-02-' . (9 + $issuelength) . 'T23:59:00', "date expiry ( 9 + $issuelength )");
67
68 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower, 1 );
69 is($date, '2013-02-' . (9 + $renewalperiod) . 'T23:59:00', "date expiry ( 9 + $renewalperiod )");
70
71 $schema->storage->txn_rollback;