Bug 17579: Make sure we are testing the real life
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 9 Nov 2016 13:23:54 +0000 (13:23 +0000)
committerKyle M Hall <kyle@bywatersolutions.com>
Tue, 15 Nov 2016 15:24:51 +0000 (15:24 +0000)
Without this patch, the tests are not testing the same things as what
happens on the interface.
We need to refresh the object to make sure the date set into dateexpiry
is the one in DB.
Without this patch, ->is_expired test a datetime object, with this patch
it compares with a date oject

Without the changes made in Koha::Patron->is_expired, a patron which has
a dateexpiry set to today was marked as expired on the interface. This
is a change in the behavior, what this refactoring does not want to do.

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Koha/Patron.pm
t/db_dependent/Koha/Patrons.t

index 478a0cd..c05dbd2 100644 (file)
@@ -291,7 +291,7 @@ sub is_expired {
     my ($self) = @_;
     return 0 unless $self->dateexpiry;
     return 0 if $self->dateexpiry eq '0000-00-00';
-    return 1 if dt_from_string( $self->dateexpiry ) < dt_from_string;
+    return 1 if dt_from_string( $self->dateexpiry ) < dt_from_string->truncate( to => 'day' );
     return 0;
 }
 
index 692cd20..9108f1a 100644 (file)
@@ -176,15 +176,15 @@ subtest 'is_expired' => sub {
     plan tests => 5;
     my $patron = $builder->build({ source => 'Borrower' });
     $patron = Koha::Patrons->find( $patron->{borrowernumber} );
-    $patron->dateexpiry( undef )->store;
+    $patron->dateexpiry( undef )->store->discard_changes;
     is( $patron->is_expired, 0, 'Patron should not be considered expired if dateexpiry is not set');
-    $patron->dateexpiry( '0000-00-00' )->store;
+    $patron->dateexpiry( '0000-00-00' )->store->discard_changes;
     is( $patron->is_expired, 0, 'Patron should not be considered expired if dateexpiry is not 0000-00-00');
-    $patron->dateexpiry( dt_from_string )->store;
+    $patron->dateexpiry( dt_from_string )->store->discard_changes;
     is( $patron->is_expired, 0, 'Patron should not be considered expired if dateexpiry is today');
-    $patron->dateexpiry( dt_from_string->add( days => 1 ) )->store;
+    $patron->dateexpiry( dt_from_string->add( days => 1 ) )->store->discard_changes;
     is( $patron->is_expired, 0, 'Patron should not be considered expired if dateexpiry is tomorrow');
-    $patron->dateexpiry( dt_from_string->add( days => -1 ) )->store;
+    $patron->dateexpiry( dt_from_string->add( days => -1 ) )->store->discard_changes;
     is( $patron->is_expired, 1, 'Patron should be considered expired if dateexpiry is yesterday');
 
     $patron->delete;