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

(-)a/t/db_dependent/Circulation_dateexpiry.t (-6 / +48 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
78
    # this triggers the compare between expiry and due date
79
80
    my $patron = $builder->build( { source => 'Borrower' } );
81
    my $item   = $builder->build( { source => 'Item' } );
82
    my $branch = $builder->build( { source => 'Branch' } );
83
    my $today  = dt_from_string();
84
85
    # first test with empty expiry date
86
    # note that this expiry date will never lead to an issue btw !!
87
    $patron->{dateexpiry} = '0000-00-00';
88
    my $d = C4::Circulation::CalcDateDue( $today, $item->{itype}, $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}, $branch->{branchcode}, $patron );
95
    is( ref $d eq "DateTime" && DateTime->compare( $d->truncate( to => 'day' ), $today->truncate( to => 'day' ) ) == 0, 1, "CalcDateDue with expiry today" );
96
97
    # third test expiry date tomorrow
98
    my $dur = DateTime::Duration->new( days => 1 );
99
    my $tomorrow = $today->clone->add_duration($dur);
100
    $d2 = output_pref( { dt => $tomorrow, dateonly => 1, dateformat => 'sql' } );
101
    $patron->{dateexpiry} = $d2;
102
    $d = C4::Circulation::CalcDateDue( $today, $item->{itype}, $branch->{branchcode}, $patron );
103
    is( ref $d eq "DateTime" && $d->mdy() =~ /^\d+/, 1, "CalcDateDue with expiry tomorrow" );
104
105
    # fourth test far future
106
    $patron->{dateexpiry} = '9876-12-31';
107
    my $t1 = time;
108
    $d = C4::Circulation::CalcDateDue( $today, $item->{itype}, $branch->{branchcode}, $patron );
109
    my $t2 = time;
110
    is( ref $d eq "DateTime" && $t2 - $t1 < 1, 1, "CalcDateDue with expiry in year 9876 in " . sprintf( "%6.4f", $t2 - $t1 ) . " seconds." );
111
}

Return to bug 14494