@@ -, +, @@ --- Koha/Patron/Category.pm | 1 + t/db_dependent/Koha/Patron/Categories.t | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) --- a/Koha/Patron/Category.pm +++ a/Koha/Patron/Category.pm @@ -182,6 +182,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; --- a/t/db_dependent/Koha/Patron/Categories.t +++ a/t/db_dependent/Koha/Patron/Categories.t @@ -51,7 +51,7 @@ is_deeply( $retrieved_category_1->branch_limitations, [ $branch->{branchcode} ], is_deeply( $retrieved_category_1->default_messaging, [], 'By default there is not messaging option' ); 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 ); @@ -68,6 +68,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; }; --