Bug 25638: Add tests for JSON conversion vs DBD::mysql
authorTomas Cohen Arazi <tomascohen@theke.io>
Fri, 5 Jun 2020 18:44:39 +0000 (15:44 -0300)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Sun, 7 Jun 2020 10:00:59 +0000 (12:00 +0200)
We have the situation of needing to cast numbers so they are not
confused in JSON with strings by DBD::mysql returning them with the
wrong internal flags.

We have also recently removed the cast, and adding it back now.
This test could help us detect this situation in case we make changes in
the area, and even on specific libraries versions.

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

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

t/db_dependent/Koha/Object.t

index c23f023..919472e 100755 (executable)
@@ -27,11 +27,14 @@ use C4::Circulation; # AddIssue
 use C4::Biblio; # AddBiblio
 
 use Koha::Database;
+
+use Koha::Acquisition::Orders;
 use Koha::DateUtils qw( dt_from_string );
 use Koha::Libraries;
 use Koha::Patrons;
 use Koha::ApiKeys;
 
+use JSON;
 use Scalar::Util qw( isvstring );
 use Try::Tiny;
 
@@ -164,7 +167,7 @@ subtest 'discard_changes' => sub {
 
 subtest 'TO_JSON tests' => sub {
 
-    plan tests => 8;
+    plan tests => 9;
 
     $schema->storage->txn_begin;
 
@@ -210,6 +213,11 @@ subtest 'TO_JSON tests' => sub {
     like( $updated_on, $rfc3999_regex, "Date-time $updated_on formatted correctly");
     like( $lastseen, $rfc3999_regex, "Date-time $updated_on formatted correctly");
 
+    # Test JSON doesn't receive strings
+    my $order = $builder->build_object({ class => 'Koha::Acquisition::Orders' });
+    $order = Koha::Acquisition::Orders->find( $order->ordernumber );
+    is_deeply( $order->TO_JSON, decode_json( encode_json( $order->TO_JSON ) ), 'Orders are similar' );
+
     $schema->storage->txn_rollback;
 };