From 4056c4e51e632feb372a9b30f22af79e77a5a143 Mon Sep 17 00:00:00 2001
From: Tomas Cohen Arazi <tomascohen@theke.io>
Date: Fri, 24 Jan 2020 09:16:09 -0300
Subject: [PATCH] Bug 24509: Fix API relared tests failing on MySQL8
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>
---
t/db_dependent/api/v1/acquisitions_orders.t | 4 ++--
t/db_dependent/api/v1/libraries.t | 4 ++--
t/db_dependent/api/v1/patrons.t | 8 ++++----
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/t/db_dependent/api/v1/acquisitions_orders.t b/t/db_dependent/api/v1/acquisitions_orders.t
index f8c51d3134..4fae8e440d 100644
--- a/t/db_dependent/api/v1/acquisitions_orders.t
+++ b/t/db_dependent/api/v1/acquisitions_orders.t
@@ -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;
};
diff --git a/t/db_dependent/api/v1/libraries.t b/t/db_dependent/api/v1/libraries.t
index 8cdac30dfe..590bbdfc63 100644
--- a/t/db_dependent/api/v1/libraries.t
+++ b/t/db_dependent/api/v1/libraries.t
@@ -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;
};
diff --git a/t/db_dependent/api/v1/patrons.t b/t/db_dependent/api/v1/patrons.t
index 9579229bb4..86f6bd5e90 100644
--- a/t/db_dependent/api/v1/patrons.t
+++ b/t/db_dependent/api/v1/patrons.t
@@ -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;
--
2.11.0