Bug 24509: Fix API relared tests failing on MySQL8
authorTomas Cohen Arazi <tomascohen@theke.io>
Fri, 24 Jan 2020 12:16:09 +0000 (09:16 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 24 Jan 2020 15:20:46 +0000 (15:20 +0000)
This patch makes a trivial change to the tests so they catch the way
MySQL 8 reports the duplicate key message. The difference on the API
error message is irrelevant and so it is ok to just make the tests try
both MySQL 8 output and the rest of the supported engines.

To test:
1. Run:
   $ kshell
  k$ prove t/db_dependent/api/v1/acquisitions_orders.t \
           t/db_dependent/api/v1/libraries.t \
           t/db_dependent/api/v1/patrons.t
=> FAIL: Tests fail due to warning and conflict message differences
2. Apply this patch
3. Repeat 1
=> SUCCESS: Tests pass!
4. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
t/db_dependent/api/v1/acquisitions_orders.t
t/db_dependent/api/v1/libraries.t
t/db_dependent/api/v1/patrons.t

index f8c51d3..4fae8e4 100644 (file)
@@ -211,8 +211,8 @@ subtest 'add() tests' => sub {
         $t->post_ok( "//$auth_userid:$password@/api/v1/acquisitions/orders" => json => $order )
           ->status_is(409)
           ->json_has( '/error' => "Fails when trying to add an existing order_id")
-          ->json_is(  '/conflict', 'PRIMARY' ); } # WTF
-        qr/^DBD::mysql::st execute failed: Duplicate entry '(.*)' for key 'PRIMARY'/;
+          ->json_like( '/conflict' => qr/(aqorders\.)?PRIMARY/ ); }
+        qr/^DBD::mysql::st execute failed: Duplicate entry '(.*)' for key '(aqorders\.)?PRIMARY'/;
 
     $schema->storage->txn_rollback;
 };
index 8cdac30..590bbdf 100644 (file)
@@ -199,8 +199,8 @@ subtest 'add() tests' => sub {
         $t->post_ok( "//$auth_userid:$password@/api/v1/libraries" => json => $library )
           ->status_is(409)
           ->json_has( '/error' => "Fails when trying to add an existing library_id")
-          ->json_is(  '/conflict', 'PRIMARY' ); } # WTF
-        qr/^DBD::mysql::st execute failed: Duplicate entry '(.*)' for key 'PRIMARY'/;
+          ->json_like( '/conflict' => qr/(branches\.)?PRIMARY/ ); }
+        qr/^DBD::mysql::st execute failed: Duplicate entry '(.*)' for key '(branches\.)?PRIMARY'/;
 
     $schema->storage->txn_rollback;
 };
index 9579229..86f6bd5 100644 (file)
@@ -207,8 +207,8 @@ subtest 'add() tests' => sub {
             $t->post_ok("//$userid:$password@/api/v1/patrons" => json => $newpatron)
               ->status_is(409)
               ->json_has( '/error', 'Fails when trying to POST duplicate cardnumber' )
-              ->json_has( '/conflict', 'cardnumber' ); }
-            qr/^DBD::mysql::st execute failed: Duplicate entry '(.*?)' for key 'cardnumber'/;
+              ->json_like( '/conflict' => qr/(borrowers\.)?cardnumber/ ); }
+            qr/^DBD::mysql::st execute failed: Duplicate entry '(.*?)' for key '(borrowers\.)?cardnumber'/;
 
         $schema->storage->txn_rollback;
     };
@@ -311,8 +311,8 @@ subtest 'update() tests' => sub {
             $t->put_ok( "//$userid:$password@/api/v1/patrons/" . $patron_2->borrowernumber => json => $newpatron )
               ->status_is(409)
               ->json_has( '/error' => "Fails when trying to update to an existing cardnumber or userid")
-              ->json_is(  '/conflict', 'cardnumber' ); }
-            qr/^DBD::mysql::st execute failed: Duplicate entry '(.*?)' for key 'cardnumber'/;
+              ->json_like( '/conflict' => qr/(borrowers\.)?cardnumber/ ); }
+            qr/^DBD::mysql::st execute failed: Duplicate entry '(.*?)' for key '(borrowers\.)?cardnumber'/;
 
         $newpatron->{ cardnumber } = $patron_1->id . $patron_2->id;
         $newpatron->{ userid }     = "user" . $patron_1->id.$patron_2->id;