Bug 22453: Make TestBuilder generates dates taking into account the timezone
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Mon, 4 Mar 2019 21:12:56 +0000 (18:12 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Wed, 8 May 2019 15:35:00 +0000 (16:35 +0100)
I have no idea why this only appears today but TestBuilder generates dates using DateTime->now,
which does not take into account the timezone.

It has been highlights by a failing test today on U18.
Why today whereas this patch was pushed few weeks ago?
Why U18 and not D9?

The output of the test is:
koha_1       |     #   Failed test 'With BorrowerLogs and TrackLastPatronActivity we should not spam the logs'
koha_1       |     #   at t/db_dependent/Koha/Patrons.t line 1421.
koha_1       |     #          got: '2'
koha_1       |     #     expected: '1'
koha_1       |     # Looks like you failed 1 test of 4.
koha_1       |
koha_1       | #   Failed test 'BorrowersLog tests'
koha_1       | #   at t/db_dependent/Koha/Patrons.t line 1422.
koha_1       | # Looks like you failed 1 test of 33.
koha_1       | [19:51:44] t/db_dependent/Koha/Patrons.t

Actually there are 2 logs, one for the cardnumber that is expected, and on for updated_on:
   "updated_on" : {
      "after" : "2019-03-04 21:10:00",
      "before" : "2019-03-04 18:10:00"
   }
Apart from the fact that we may want to remove this updated_on field from MODIFY,
the before/after dates differ from 3 hours.
Here it's currently 18:10 and in UTC-3

To prevent such behaviors in tests (create stuffs in the future...), we should
use our Koha::DateUtils::dt_from_string method that takes care of the timezone
used in other places of Koha.

Test plan:
prove t/db_dependent/Koha/Patrons.t
May fail without this patch.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
This patch is fine in itself, but there may still be an issue around
the failing test for TrackLastPatronActivity. Reopened bug 22741.

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit c1513a10c35f721e3c519d5ab3c38c7154b7fa1c)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

t/lib/TestBuilder.pm

index be2a834..b0eb922 100644 (file)
@@ -7,6 +7,7 @@ use C4::Biblio;
 use C4::Items;
 use Koha::Biblios;
 use Koha::Items;
+use Koha::DateUtils qw( dt_from_string );
 
 use Bytes::Random::Secure;
 use Carp;
@@ -485,12 +486,12 @@ sub _gen_real {
 
 sub _gen_date {
     my ($self, $params) = @_;
-    return $self->schema->storage->datetime_parser->format_date(DateTime->now())
+    return $self->schema->storage->datetime_parser->format_date(dt_from_string)
 }
 
 sub _gen_datetime {
     my ($self, $params) = @_;
-    return $self->schema->storage->datetime_parser->format_datetime(DateTime->now());
+    return $self->schema->storage->datetime_parser->format_datetime(dt_from_string);
 }
 
 sub _gen_text {