Bug 14538: editing perl doc for CalcFine
[koha.git] / t / db_dependent / Circulation_issuingrules.t
blobaff1f9342fecff114be4292896c91c20adf8d855
1 #!/usr/bin/perl
3 use Modern::Perl;
5 use Test::More tests => 7;
6 use Test::MockModule;
7 use DBI;
8 use DateTime;
9 use t::lib::Mocks;
11 BEGIN {
12 t::lib::Mocks::mock_dbh;
15 use_ok('C4::Circulation');
17 my $dbh = C4::Context->dbh();
19 my $issuelength = 10;
20 my $renewalperiod = 5;
21 my $lengthunit = 'days';
23 my $expected = {
24 issuelength => $issuelength,
25 renewalperiod => $renewalperiod,
26 lengthunit => $lengthunit
29 my $default = {
30 issuelength => 21,
31 renewalperiod => 21,
32 lengthunit => 'days'
35 my $loanlength;
36 my $mock_undef = [
40 my $mock_loan_length = [
41 ['issuelength', 'renewalperiod', 'lengthunit'],
42 [$issuelength, $renewalperiod, $lengthunit]
45 my $categorycode = 'B';
46 my $itemtype = 'MX';
47 my $branchcode = 'FPL';
49 #=== GetLoanLength
50 $dbh->{mock_add_resultset} = $mock_loan_length;
51 $loanlength = C4::Circulation::GetLoanLength($categorycode, $itemtype, $branchcode);
52 is_deeply($loanlength, $expected, 'first matches');
54 $dbh->{mock_add_resultset} = $mock_undef;
55 $loanlength = C4::Circulation::GetLoanLength($categorycode, $itemtype, $branchcode);
56 is_deeply($loanlength, $default, 'none matches');
58 #=== CalcDateDue
60 #Set syspref ReturnBeforeExpiry = 1 and useDaysMode = 'Days'
61 t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 1);
62 t::lib::Mocks::mock_preference('useDaysMode', 'Days');
64 my $dateexpiry = '2013-01-01';
66 my $borrower = {categorycode => 'B', dateexpiry => $dateexpiry};
67 my $start_date = DateTime->new({year => 2013, month => 2, day => 9});
68 $dbh->{mock_add_resultset} = $mock_loan_length;
69 my $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower );
70 is($date, $dateexpiry . 'T23:59:00', 'date expiry');
71 $dbh->{mock_add_resultset} = $mock_loan_length;
72 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower, 1 );
75 #Set syspref ReturnBeforeExpiry = 1 and useDaysMode != 'Days'
76 t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 1);
77 t::lib::Mocks::mock_preference('useDaysMode', 'noDays');
79 $borrower = {categorycode => 'B', dateexpiry => $dateexpiry};
80 $start_date = DateTime->new({year => 2013, month => 2, day => 9});
81 $dbh->{mock_add_resultset} = $mock_loan_length;
82 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower );
83 is($date, $dateexpiry . 'T23:59:00', 'date expiry');
85 $dbh->{mock_add_resultset} = $mock_loan_length;
86 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower, 1 );
89 #Set syspref ReturnBeforeExpiry = 0 and useDaysMode = 'Days'
90 t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 0);
91 t::lib::Mocks::mock_preference('useDaysMode', 'Days');
93 $borrower = {categorycode => 'B', dateexpiry => $dateexpiry};
94 $start_date = DateTime->new({year => 2013, month => 2, day => 9});
95 $dbh->{mock_add_resultset} = $mock_loan_length;
96 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower );
97 is($date, '2013-02-' . (9 + $issuelength) . 'T23:59:00', "date expiry ( 9 + $issuelength )");
99 $dbh->{mock_add_resultset} = $mock_loan_length;
100 $date = C4::Circulation::CalcDateDue( $start_date, $itemtype, $branchcode, $borrower, 1 );
101 is($date, '2013-02-' . (9 + $renewalperiod) . 'T23:59:00', "date expiry ( 9 + $renewalperiod )");