Summary: | Wrong mock of DateTime->now in tests | ||
---|---|---|---|
Product: | Koha | Reporter: | Jonathan Druart <jonathan.druart> |
Component: | Test Suite | Assignee: | Jonathan Druart <jonathan.druart> |
Status: | CLOSED FIXED | QA Contact: | Josef Moravec <josef.moravec> |
Severity: | normal | ||
Priority: | P5 - low | CC: | josef.moravec, martin.renvoize, nick |
Version: | unspecified | ||
Hardware: | All | ||
OS: | All | ||
Change sponsored?: | --- | Patch complexity: | Small patch |
Documentation contact: | Documentation submission: | ||
Text to go in the release notes: | Version(s) released in: | ||
Circulation function: | |||
Bug Depends on: | 19705, 20287 | ||
Bug Blocks: | |||
Attachments: |
Bug 21086: Fix wrong mock of DateTime->now
Bug 21086: Fix wrong mock of DateTime->now Bug 21086: Fix wrong mock of DateTime->now |
Description
Jonathan Druart
2018-07-18 21:11:27 UTC
Created attachment 77093 [details] [review] Bug 21086: Fix wrong mock of DateTime->now prove t/db_dependent/DecreaseLoanHighHolds.t t/db_dependent/DecreaseLoanHighHolds.t .. 1/17 Can't locate object method "truncate" via package "80" (perhaps you forgot to load "80"?) at /home/vagrant/kohaclone/C4/Circulation.pm line 3497. What is happening: We mock DateTime->now in the script to avoid the date comparaisons to fail on slow servers (see bug 19705). my $now_value = DateTime->now(); my $mocked_datetime = Test::MockModule->new('DateTime'); $mocked_datetime->mock( 'now', sub { return $now_value; } ); Since bug 20287, we have the following calls: Koha::Patron->store => Koha::Patron::Category->get_expiry_date which does: 221 return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' ); as enrolmentperiod is generated by t::lib::TestBuilder, it can be quite big, and so the date change from one call to the others. The failure is actually coming from the date becoming > 9999, which is not handled correctly, on purpose, by Koha::DateUtils (infinite) On the way this patch fixes the other occurrence, in Sitemapper.t (just in case) Test plan: Make sure the tests pass now. Created attachment 77098 [details] [review] Bug 21086: Fix wrong mock of DateTime->now prove t/db_dependent/DecreaseLoanHighHolds.t t/db_dependent/DecreaseLoanHighHolds.t .. 1/17 Can't locate object method "truncate" via package "80" (perhaps you forgot to load "80"?) at /home/vagrant/kohaclone/C4/Circulation.pm line 3497. What is happening: We mock DateTime->now in the script to avoid the date comparaisons to fail on slow servers (see bug 19705). my $now_value = DateTime->now(); my $mocked_datetime = Test::MockModule->new('DateTime'); $mocked_datetime->mock( 'now', sub { return $now_value; } ); Since bug 20287, we have the following calls: Koha::Patron->store => Koha::Patron::Category->get_expiry_date which does: 221 return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' ); as enrolmentperiod is generated by t::lib::TestBuilder, it can be quite big, and so the date change from one call to the others. The failure is actually coming from the date becoming > 9999, which is not handled correctly, on purpose, by Koha::DateUtils (infinite) On the way this patch fixes the other occurrence, in Sitemapper.t (just in case) Test plan: Make sure the tests pass now. Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Created attachment 77101 [details] [review] Bug 21086: Fix wrong mock of DateTime->now prove t/db_dependent/DecreaseLoanHighHolds.t t/db_dependent/DecreaseLoanHighHolds.t .. 1/17 Can't locate object method "truncate" via package "80" (perhaps you forgot to load "80"?) at /home/vagrant/kohaclone/C4/Circulation.pm line 3497. What is happening: We mock DateTime->now in the script to avoid the date comparaisons to fail on slow servers (see bug 19705). my $now_value = DateTime->now(); my $mocked_datetime = Test::MockModule->new('DateTime'); $mocked_datetime->mock( 'now', sub { return $now_value; } ); Since bug 20287, we have the following calls: Koha::Patron->store => Koha::Patron::Category->get_expiry_date which does: 221 return $date->add( months => $self->enrolmentperiod, end_of_month => 'limit' ); as enrolmentperiod is generated by t::lib::TestBuilder, it can be quite big, and so the date change from one call to the others. The failure is actually coming from the date becoming > 9999, which is not handled correctly, on purpose, by Koha::DateUtils (infinite) On the way this patch fixes the other occurrence, in Sitemapper.t (just in case) Test plan: Make sure the tests pass now. Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Awesome work all! Pushed to master for 18.11 |