From e5143849b7e46e9119fa95fa58b0af2825c681f2 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Wed, 20 Jul 2016 19:03:53 +0100 Subject: [PATCH] Bug 16911: ->get_expiry_date accepts strings To make sure nothing else will be broken, it's certainly better to handle date strings in a first phase. --- Koha/Patron/Category.pm | 1 + t/db_dependent/Koha/Patron/Categories.t | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Koha/Patron/Category.pm b/Koha/Patron/Category.pm index 399d329..331a1ce 100644 --- a/Koha/Patron/Category.pm +++ b/Koha/Patron/Category.pm @@ -189,6 +189,7 @@ sub get_expiry_date { my ($self, $date ) = @_; if ( $self->enrolmentperiod ) { $date ||= dt_from_string; + $date = dt_from_string( $date ) unless ref $date; return $date->add( months => $self->enrolmentperiod ); } else { return $self->enrolmentperioddate; diff --git a/t/db_dependent/Koha/Patron/Categories.t b/t/db_dependent/Koha/Patron/Categories.t index 75f2747..585b940 100644 --- a/t/db_dependent/Koha/Patron/Categories.t +++ b/t/db_dependent/Koha/Patron/Categories.t @@ -56,7 +56,7 @@ is( $retrieved_category_1->checkprevcheckout, 'inherit', 'Koha::Patron::Category is( $retrieved_category_2->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' ); subtest 'get_expiry_date' => sub { - plan tests => 4; + plan tests => 5; my $next_month = dt_from_string->add( months => 1 ); my $next_year = dt_from_string->add( months => 12 ); my $yesterday = dt_from_string->add( days => -1 ); @@ -73,6 +73,10 @@ subtest 'get_expiry_date' => sub { $category->enrolmentperiod( 12 )->store; is( $category->get_expiry_date, $next_year, 'With enrolmentperiod defined and no parameter, ->get_expiry_date should return today + enrolmentperiod' ); is( $category->get_expiry_date( $yesterday ), $next_year->clone->add( days => -1 ), 'With enrolmentperiod defined and a date given in parameter, ->get_expiry_date should take this date + enrolmentperiod' ); + + my $hardcoded_date = '2000-01-31'; + is( $category->get_expiry_date( $hardcoded_date ), dt_from_string( $hardcoded_date )->add( months => 12 ), 'get_expiry_date accepts strings as well' ); + $category->delete; }; -- 2.8.1