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

(-)a/t/db_dependent/Koha/Patron/Categories.t (-17 / +37 lines)
Lines 20-25 Link Here
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 10;
22
use Test::More tests => 10;
23
use Time::Fake;
23
24
24
use C4::Context;
25
use C4::Context;
25
use Koha::Database;
26
use Koha::Database;
Lines 61-88 is( $retrieved_category_1->checkprevcheckout, 'inherit', 'Koha::Patron::Category Link Here
61
is( $retrieved_category_2->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
62
is( $retrieved_category_2->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
62
63
63
subtest 'get_expiry_date' => sub {
64
subtest 'get_expiry_date' => sub {
64
    plan tests => 5;
65
    plan tests => 13;
65
    my $next_month = dt_from_string->add( months => 1 );
66
66
    my $next_year = dt_from_string->add( months => 12 );
67
    my $enrolementperioddate = dt_from_string()->add( months => 12);
67
    my $yesterday = dt_from_string->add( days => -1 );
68
    my $category = Koha::Patron::Category->new({
68
    my $category = Koha::Patron::Category->new({
69
        categorycode => 'mycat',
69
        categorycode          => 'mycat',
70
        category_type => 'A',
70
          category_type       => 'A',
71
        description  => 'mycatdesc',
71
          description         => 'mycatdesc',
72
        enrolmentperiod => undef,
72
          enrolmentperiod     => undef,
73
        enrolmentperioddate => $next_month,
73
          enrolmentperioddate => $enrolementperioddate,
74
    })->store;
74
    })->store;
75
    is( $category->get_expiry_date, $next_month, 'Without enrolmentperiod and parameter, ->get_expiry_date should return enrolmentperioddate' );
76
    is( $category->get_expiry_date( $next_year ), $next_month, 'Without enrolmentperiod, ->get_expiry_date should return enrolmentperiodadate even if a parameter is given' );
77
78
    $category->enrolmentperiod( 12 )->store;
79
    is( t::lib::Dates::compare($category->get_expiry_date, $next_year), 0, 'With enrolmentperiod defined and no parameter, ->get_expiry_date should return today + enrolmentperiod' );
80
    is( t::lib::Dates::compare($category->get_expiry_date( $yesterday ), $next_year->clone->add( days => -1 )), 0, 'With enrolmentperiod defined and a date given in parameter, ->get_expiry_date should take this date + enrolmentperiod' );
81
75
82
    my $hardcoded_date = '2000-01-31';
76
    my $hardcoded_date = '2000-01-31';
83
    is( t::lib::Dates::compare($category->get_expiry_date( $hardcoded_date ), dt_from_string( $hardcoded_date )->add( months => 12 )), 0, 'get_expiry_date accepts strings as well'  );
77
    is( $category->get_expiry_date, $enrolementperioddate, 'Without enrolmentperiod and parameter, ->get_expiry_date should return enrolmentperioddate' );
78
    is( $category->get_expiry_date( $hardcoded_date ), $enrolementperioddate, 'Without enrolmentperiod, ->get_expiry_date should return enrolmentperiodadate even if a parameter is given' );
84
79
80
    $category->enrolmentperiod( 12 )->store;
81
    is( t::lib::Dates::compare($category->get_expiry_date( $hardcoded_date ), dt_from_string( $hardcoded_date )->add( months => 12 )), 0, 'get_expiry_date accepts strings as well'  );
85
    $category->delete;
82
    $category->delete;
83
84
    for my $date ( '2016-03-31', '2016-11-30', '2019-01-31', '2019-03-01', dt_from_string() ) {
85
        my $dt = dt_from_string( $date, 'iso' );
86
        Time::Fake->offset( $dt->epoch );
87
88
        $enrolementperioddate = $dt->clone->add( months => 1 , end_of_month => 'limit' )->truncate( to => 'day' );
89
        $category = Koha::Patron::Category->new({
90
            categorycode          => 'mycat',
91
              category_type       => 'A',
92
              description         => 'mycatdesc',
93
              enrolmentperiod     => 12,
94
              enrolmentperioddate => $enrolementperioddate,
95
        })->store;
96
   
97
        my $a_year_later  = $dt->clone->add( months => 12, end_of_month => 'limit' )->truncate( to => 'day' );
98
        my $a_day_earlier = $dt->clone->subtract( days => 1, end_of_month => 'limit' )->truncate( to => 'day' );
99
        my $a_day_earlier_plus_a_year = $a_day_earlier->clone->add( months => 12, end_of_month => 'limit' )->truncate( to => 'day' );
100
   
101
        is( t::lib::Dates::compare($category->get_expiry_date, $a_year_later), 0, 'With enrolmentperiod defined and no parameter, ->get_expiry_date should return today + enrolmentperiod' );
102
        is( t::lib::Dates::compare($category->get_expiry_date( $a_day_earlier ), $a_day_earlier_plus_a_year), 0, 'With enrolmentperiod defined and a date given in parameter, ->get_expiry_date should take this date + enrolmentperiod' );
103
    
104
        $category->delete;
105
    }
106
    Time::Fake->reset;
86
};
107
};
87
108
88
subtest 'BlockExpiredPatronOpacActions' => sub {
109
subtest 'BlockExpiredPatronOpacActions' => sub {
89
- 

Return to bug 22443