From 069b13f6daa9b89fade5374b830175fe52488f76 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Tue, 18 Apr 2017 07:28:43 +1000 Subject: [PATCH] CRM-20427 add more tests in --- tests/phpunit/CRM/Core/I18n/SchemaTest.php | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tests/phpunit/CRM/Core/I18n/SchemaTest.php b/tests/phpunit/CRM/Core/I18n/SchemaTest.php index 12e1ee7bfb..345c2c290e 100644 --- a/tests/phpunit/CRM/Core/I18n/SchemaTest.php +++ b/tests/phpunit/CRM/Core/I18n/SchemaTest.php @@ -61,15 +61,42 @@ class CRM_Core_I18n_SchemaTest extends CiviUnitTestCase { CRM_Core_I18n_Schema::makeMultilingual('en_US'); global $dbLocale; $dbLocale = '_en_US'; + // Test problematic queriy as per CRM-20427 $query = "Select * FROM {$table}"; $new_query = CRM_Core_I18n_Schema::rewriteQuery($query); $this->assertEquals("Select * FROM {$expectedRewrite}", $new_query); + // Test query where table is not at the end $query2 = "Select * FROM {$table} LIMIT 1"; $new_query2 = CRM_Core_I18n_Schema::rewriteQuery($query2); $this->assertEquals("Select * FROM {$expectedRewrite} LIMIT 1", $new_query2); + // Test query where there is a 2nd table that shouldn't be re-wrten $query3 = "SELECT * FROM {$table} JOIN civicrm_contact LIMIT 1"; $new_query3 = CRM_Core_I18n_Schema::rewriteQuery($query3); $this->assertEquals("SELECT * FROM {$expectedRewrite} JOIN civicrm_contact LIMIT 1", $new_query3); + // Test table when name is escaped + $query4 = "SELECT * FROM `{$table}` WHERE id = 123"; + $new_query4 = CRM_Core_I18n_Schema::rewriteQuery($query4); + $this->assertEquals("SELECT * FROM `{$expectedRewrite}` WHERE id = 123", $new_query4); + // Test where translatable table is quoted + // The `$table` appears in a string -- it should not be rewritten. + $query5 = 'SELECT id FROM civicrm_activity WHERE subject = "civicrm_option_group"'; + $new_query5 = CRM_Core_I18n_Schema::rewriteQuery($query5); + $this->assertEquals($query5, $new_query5); + // Test where table is not the last thing to be in a quoted string + $query6 = 'SELECT "' . "Fixed the the {$table} ticket" . '"'; + $new_query6 = CRM_Core_I18n_Schema::rewriteQuery($query6); + $this->assertEquals($query6, $new_query6); + // Test where table is part of a sub query + $query7 = "SELECT * FROM civicrm_foo WHERE foo_id = (SELECT value FROM {$table})"; + $new_query7 = CRM_Core_I18n_Schema::rewriteQuery($query7); + $this->assertEquals("SELECT * FROM civicrm_foo WHERE foo_id = (SELECT value FROM {$expectedRewrite})", $new_query7); + // Test differern verbs + $query8 = "DELETE FROM {$table}"; + $new_query8 = CRM_Core_I18n_Schema::rewriteQuery($query8); + $this->assertEquals("DELETE FROM {$expectedRewrite}", $new_query8); + $query9 = 'INSERT INTO ' . "{$table}" . ' (foo, bar) VALUES (123, "' . "Just a {$table} string" . '")'; + $new_query9 = CRM_Core_I18n_Schema::rewriteQuery($query9); + $this->assertEquals('INSERT INTO ' . "{$expectedRewrite}" . ' (foo, bar) VALUES (123, "' . "Just a {$table} string)", $new_query9); } } -- 2.25.1