View | Details | Raw Unified | Return to bug 14494
Collapse All | Expand All

(-)a/t/db_dependent/Circulation_dateexpiry.t (-6 / +51 lines)
Lines 18-36 Link Here
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use DateTime;
20
use DateTime;
21
use Time::HiRes qw/gettimeofday/;
21
use Time::HiRes qw/gettimeofday time/;
22
use Test::More tests => 2;
22
use C4::Members;
23
use C4::Members;
23
use Koha::DateUtils;
24
use Koha::DateUtils;
24
use t::lib::TestBuilder;
25
use t::lib::TestBuilder;
25
use Test::More tests => 1;
26
use t::lib::Mocks qw( mock_preference );
26
27
28
my $builder = t::lib::TestBuilder->new();
27
subtest 'Tests for CanBookBeIssued related to dateexpiry' => sub {
29
subtest 'Tests for CanBookBeIssued related to dateexpiry' => sub {
28
    plan tests => 4;
30
    plan tests => 4;
29
    date_expiry();
31
    can_book_be_issued();
32
};
33
subtest 'Tests for CalcDateDue related to dateexpiry' => sub {
34
    #plan tests => 4;
35
    calc_date_due();
30
};
36
};
31
37
32
sub date_expiry {
38
sub can_book_be_issued {
33
    my $builder = t::lib::TestBuilder->new();
34
    my $item    = $builder->build( { source => 'Item' } );
39
    my $item    = $builder->build( { source => 'Item' } );
35
    my $patron  = $builder->build(
40
    my $patron  = $builder->build(
36
        {   source => 'Borrower',
41
        {   source => 'Borrower',
Lines 66-68 sub date_expiry { Link Here
66
    is( not( exists $issuingimpossible->{EXPIRED} ), 1, 'The patron should not be considered as expired if dateexpiry is tomorrow' );
71
    is( not( exists $issuingimpossible->{EXPIRED} ), 1, 'The patron should not be considered as expired if dateexpiry is tomorrow' );
67
72
68
}
73
}
69
- 
74
75
sub calc_date_due {
76
    t::lib::Mocks::mock_preference('ReturnBeforeExpiry', 1);
77
        # this triggers the compare between expiry and due date
78
79
    my $patron  = $builder->build( {   source => 'Borrower' } );
80
    my $item = $builder->build( { source => 'Item' } );
81
    my $branch = $builder->build( { source => 'Branch' } );
82
    my $today = dt_from_string();
83
84
    # first test with empty expiry date
85
    # note that this expiry date will never lead to an issue btw !!
86
    $patron->{dateexpiry}='0000-00-00';
87
    my $d= C4::Circulation::CalcDateDue( $today, $item->{itype},
88
        $branch->{branchcode}, $patron );
89
    is( ref $d eq "DateTime" && $d->mdy()=~/^\d+/, 1, "CalcDateDue with expiry 0000-00-00" );
90
91
    # second test expiry date==today
92
    my $d2 = output_pref( { dt => $today, dateonly =>1, dateformat => 'sql' } );
93
    $patron->{dateexpiry} = $d2;
94
    $d= C4::Circulation::CalcDateDue( $today, $item->{itype},
95
        $branch->{branchcode}, $patron );
96
    is( ref $d eq "DateTime" && DateTime->compare( $d->truncate(to=>'day'), $today->truncate(to=>'day') )==0, 1, "CalcDateDue with expiry today" );
97
98
    # third test expiry date tomorrow
99
    my $dur =  DateTime::Duration->new( days => 1 );
100
    my $tomorrow= $today->clone->add_duration( $dur );
101
    $d2 = output_pref( { dt => $tomorrow, dateonly => 1, dateformat => 'sql' });
102
    $patron->{dateexpiry} = $d2;
103
    $d= C4::Circulation::CalcDateDue( $today, $item->{itype},
104
        $branch->{branchcode}, $patron );
105
    is( ref $d eq "DateTime" && $d->mdy()=~/^\d+/, 1, "CalcDateDue with expiry tomorrow" );
106
107
    # fourth test far future
108
    $patron->{dateexpiry} = '9876-12-31';
109
    my $t1=time;
110
    $d= C4::Circulation::CalcDateDue( $today, $item->{itype},
111
        $branch->{branchcode}, $patron );
112
    my $t2=time;
113
    is( ref $d eq "DateTime" && $t2-$t1 < 1, 1, "CalcDateDue with expiry in year 9876 in ".sprintf("%6.4f", $t2-$t1)." seconds.");
114
}

Return to bug 14494