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

(-)a/t/db_dependent/Koha/Patrons.t (-9 / +23 lines)
Lines 224-263 subtest 'is_expired' => sub { Link Here
224
};
224
};
225
225
226
subtest 'is_going_to_expire' => sub {
226
subtest 'is_going_to_expire' => sub {
227
    plan tests => 8;
227
    plan tests => 9;
228
229
    my $today = dt_from_string(undef, undef, 'floating');
228
    my $patron = $builder->build({ source => 'Borrower' });
230
    my $patron = $builder->build({ source => 'Borrower' });
229
    $patron = Koha::Patrons->find( $patron->{borrowernumber} );
231
    $patron = Koha::Patrons->find( $patron->{borrowernumber} );
230
    $patron->dateexpiry( undef )->store->discard_changes;
232
    $patron->dateexpiry( undef )->store->discard_changes;
231
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is not set');
233
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is not set');
232
234
233
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 0);
235
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 0);
234
    $patron->dateexpiry( dt_from_string )->store->discard_changes;
236
    $patron->dateexpiry( $today )->store->discard_changes;
235
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is today');
237
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is today');
236
238
237
    $patron->dateexpiry( dt_from_string )->store->discard_changes;
239
    $patron->dateexpiry( $today )->store->discard_changes;
238
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is today and pref is 0');
240
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is today and pref is 0');
239
241
240
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 10);
242
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 10);
241
    $patron->dateexpiry( dt_from_string->add( days => 11 ) )->store->discard_changes;
243
    $patron->dateexpiry( $today->clone->add( days => 11 ) )->store->discard_changes;
242
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 11 days ahead and pref is 10');
244
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 11 days ahead and pref is 10');
243
245
244
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 0);
246
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 0);
245
    $patron->dateexpiry( dt_from_string->add( days => 10 ) )->store->discard_changes;
247
    $patron->dateexpiry( $today->clone->add( days => 10 ) )->store->discard_changes;
246
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 10 days ahead and pref is 0');
248
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 10 days ahead and pref is 0');
247
249
248
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 10);
250
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 10);
249
    $patron->dateexpiry( dt_from_string->add( days => 10 ) )->store->discard_changes;
251
    $patron->dateexpiry( $today->clone->add( days => 10 ) )->store->discard_changes;
250
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 10 days ahead and pref is 10');
252
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 10 days ahead and pref is 10');
251
    $patron->delete;
253
    $patron->delete;
252
254
253
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 10);
255
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 10);
254
    $patron->dateexpiry( dt_from_string->add( days => 20 ) )->store->discard_changes;
256
    $patron->dateexpiry( $today->clone->add( days => 20 ) )->store->discard_changes;
255
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 20 days ahead and pref is 10');
257
    is( $patron->is_going_to_expire, 0, 'Patron should not be considered going to expire if dateexpiry is 20 days ahead and pref is 10');
256
258
257
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 20);
259
    t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 20);
258
    $patron->dateexpiry( dt_from_string->add( days => 10 ) )->store->discard_changes;
260
    $patron->dateexpiry( $today->clone->add( days => 10 ) )->store->discard_changes;
259
    is( $patron->is_going_to_expire, 1, 'Patron should be considered going to expire if dateexpiry is 10 days ahead and pref is 20');
261
    is( $patron->is_going_to_expire, 1, 'Patron should be considered going to expire if dateexpiry is 10 days ahead and pref is 20');
260
262
263
    { # Testing invalid is going to expiry date
264
        t::lib::Mocks::mock_preference('NotifyBorrowerDeparture', 30);
265
        # mock_config does not work here, because of tz vs timezone subroutines
266
        my $context = new Test::MockModule('C4::Context');
267
        $context->mock( 'tz', sub {
268
            'America/Sao_Paulo';
269
        });
270
        $patron->dateexpiry(DateTime->new( year => 2019, month => 12, day => 3 ))->store;
271
        eval { $patron->is_going_to_expire };
272
        is( $@, 'On invalid "is going to expire" date, the method should not crash with "Invalid local time for date in time zone"');
273
        $context->unmock('tz');
274
    };
275
261
    $patron->delete;
276
    $patron->delete;
262
};
277
};
263
278
264
- 

Return to bug 23079