Merge pull request #17557 from ngo360/master
[civicrm-core.git] / tests / phpunit / CRM / Utils / QueryFormatterTest.php
index 04ff5dc283f929dfd759338d0e3248708768a095..de557c933e8910091af695ff3e3bdccea0ca4bc6 100644 (file)
@@ -17,29 +17,29 @@ class CRM_Utils_QueryFormatterTest extends CiviUnitTestCase {
         PRIMARY KEY (id)
       )
     ');
-    $idx = new CRM_Core_InnoDBIndexer(self::supportsFts(), array(
-      'civicrm_contact' => array(
-        array('first_name', 'last_name'),
-      ),
-    ));
+    $idx = new CRM_Core_InnoDBIndexer(self::supportsFts(), [
+      'civicrm_contact' => [
+        ['first_name', 'last_name'],
+      ],
+    ]);
     $idx->fixSchemaDifferences();
-    $rows = array(
-      array(1, 'someone@example.com'),
-      array(2, 'this is someone@example.com!'),
-      array(3, 'first second'),
-      array(4, 'zeroth first second'),
-      array(5, 'zeroth first second third'),
-      array(6, 'never say never'),
-      array(7, 'first someone@example.com second'),
-      array(8, 'first someone'),
-      array(9, 'firstly someone'),
-    );
+    $rows = [
+      [1, 'someone@example.com'],
+      [2, 'this is someone@example.com!'],
+      [3, 'first second'],
+      [4, 'zeroth first second'],
+      [5, 'zeroth first second third'],
+      [6, 'never say never'],
+      [7, 'first someone@example.com second'],
+      [8, 'first someone'],
+      [9, 'firstly someone'],
+    ];
     foreach ($rows as $row) {
       CRM_Core_DAO::executeQuery("INSERT INTO civicrm_fts_example (id,name) VALUES (%1, %2)",
-        array(
-          1 => array($row[0], 'Int'),
-          2 => array($row[1], 'String'),
-        ));
+        [
+          1 => [$row[0], 'Int'],
+          2 => [$row[1], 'String'],
+        ]);
     }
   }
 
@@ -58,70 +58,70 @@ class CRM_Utils_QueryFormatterTest extends CiviUnitTestCase {
    */
   public function dataProvider() {
     // Array(0=>$inputText, 1=>$language, 2=>$options, 3=>$expectedText, 4=>$matchingIds).
-    $cases = array();
-
-    $allEmailRows = array(1, 2, 7);
-
-    $cases[] = array('someone@example.com', 'like', 'simple', '%someone@example.com%', $allEmailRows);
-    $cases[] = array('someone@example.com', 'like', 'phrase', '%someone@example.com%', $allEmailRows);
-    $cases[] = array('someone@example.com', 'like', 'wildphrase', '%someone@example.com%', $allEmailRows);
-    $cases[] = array('someone@example.com', 'like', 'wildwords', '%someone@example.com%', $allEmailRows);
-    $cases[] = array('someone@example.com', 'like', 'wildwords-suffix', '%someone@example.com%', $allEmailRows);
-
-    $cases[] = array('someone@example.com', 'fts', 'simple', 'someone@example.com', $allEmailRows);
-    $cases[] = array('someone@example.com', 'fts', 'phrase', '"someone@example.com"', $allEmailRows);
-    $cases[] = array('someone@example.com', 'fts', 'wildphrase', '"*someone@example.com*"', $allEmailRows);
-    $cases[] = array('someone@example.com', 'fts', 'wildwords', '*someone* *example*', $allEmailRows);
-    $cases[] = array('someone@example.com', 'fts', 'wildwords-suffix', 'someone* example*', $allEmailRows);
-
-    $cases[] = array('someone@example.com', 'ftsbool', 'simple', '+"someone" +"example"', $allEmailRows);
-    $cases[] = array('someone@example.com', 'ftsbool', 'phrase', '+"someone@example.com"', $allEmailRows);
-    $cases[] = array('someone@example.com', 'ftsbool', 'wildphrase', '+"*someone@example.com*"', $allEmailRows);
-    $cases[] = array('someone@example.com', 'ftsbool', 'wildwords', '+*someone* +*example*', $allEmailRows);
-    $cases[] = array('someone@example.com', 'ftsbool', 'wildwords-suffix', '+someone* +example*', $allEmailRows);
-
-    $cases[] = array('first second', 'like', 'simple', '%first second%', array(3, 4, 5));
-    $cases[] = array('first second', 'like', 'phrase', '%first second%', array(3, 4, 5));
-    $cases[] = array('first second', 'like', 'wildphrase', '%first second%', array(3, 4, 5));
-    $cases[] = array('first second', 'like', 'wildwords', '%first%second%', array(3, 4, 5, 7));
-    $cases[] = array('first second', 'like', 'wildwords-suffix', '%first%second%', array(3, 4, 5, 7));
-
-    $cases[] = array('first second', 'fts', 'simple', 'first second', array(3, 4, 5));
-    $cases[] = array('first second', 'fts', 'phrase', '"first second"', array(3, 4, 5));
-    $cases[] = array('first second', 'fts', 'wildphrase', '"*first second*"', array(3, 4, 5));
-    $cases[] = array('first second', 'fts', 'wildwords', '*first* *second*', array(3, 4, 5, 7));
-    $cases[] = array('first second', 'fts', 'wildwords-suffix', 'first* second*', array(3, 4, 5, 7));
-
-    $cases[] = array('first second', 'ftsbool', 'simple', '+"first" +"second"', array(3, 4, 5));
-    $cases[] = array('first second', 'ftsbool', 'phrase', '+"first second"', array(3, 4, 5));
-    $cases[] = array('first second', 'ftsbool', 'wildphrase', '+"*first second*"', array(3, 4, 5));
-    $cases[] = array('first second', 'ftsbool', 'wildwords', '+*first* +*second*', array(3, 4, 5, 7));
-    $cases[] = array('first second', 'ftsbool', 'wildwords-suffix', '+first* +second*', array(3, 4, 5, 7));
-
-    $cases[] = array('first second', 'solr', 'simple', 'first second', NULL);
-    $cases[] = array('first second', 'solr', 'phrase', '"first second"', NULL);
-    $cases[] = array('first second', 'solr', 'wildphrase', '"*first second*"', NULL);
-    $cases[] = array('first second', 'solr', 'wildwords', '*first* *second*', NULL);
-    $cases[] = array('first second', 'solr', 'wildwords-suffix', 'first* second*', NULL);
-
-    $cases[] = array('someone@', 'ftsbool', 'simple', '+"someone"', $allEmailRows);
-    $cases[] = array('@example.com', 'ftsbool', 'simple', '+"example.com"', $allEmailRows);
+    $cases = [];
+
+    $allEmailRows = [1, 2, 7];
+
+    $cases[] = ['someone@example.com', 'like', 'simple', '%someone@example.com%', $allEmailRows];
+    $cases[] = ['someone@example.com', 'like', 'phrase', '%someone@example.com%', $allEmailRows];
+    $cases[] = ['someone@example.com', 'like', 'wildphrase', '%someone@example.com%', $allEmailRows];
+    $cases[] = ['someone@example.com', 'like', 'wildwords', '%someone@example.com%', $allEmailRows];
+    $cases[] = ['someone@example.com', 'like', 'wildwords-suffix', '%someone@example.com%', $allEmailRows];
+
+    $cases[] = ['someone@example.com', 'fts', 'simple', 'someone@example.com', $allEmailRows];
+    $cases[] = ['someone@example.com', 'fts', 'phrase', '"someone@example.com"', $allEmailRows];
+    $cases[] = ['someone@example.com', 'fts', 'wildphrase', '"*someone@example.com*"', $allEmailRows];
+    $cases[] = ['someone@example.com', 'fts', 'wildwords', '*someone* *example*', $allEmailRows];
+    $cases[] = ['someone@example.com', 'fts', 'wildwords-suffix', 'someone* example*', $allEmailRows];
+
+    $cases[] = ['someone@example.com', 'ftsbool', 'simple', '+"someone" +"example"', $allEmailRows];
+    $cases[] = ['someone@example.com', 'ftsbool', 'phrase', '+"someone@example.com"', $allEmailRows];
+    $cases[] = ['someone@example.com', 'ftsbool', 'wildphrase', '+"*someone@example.com*"', $allEmailRows];
+    $cases[] = ['someone@example.com', 'ftsbool', 'wildwords', '+*someone* +*example*', $allEmailRows];
+    $cases[] = ['someone@example.com', 'ftsbool', 'wildwords-suffix', '+someone* +example*', $allEmailRows];
+
+    $cases[] = ['first second', 'like', 'simple', '%first second%', [3, 4, 5]];
+    $cases[] = ['first second', 'like', 'phrase', '%first second%', [3, 4, 5]];
+    $cases[] = ['first second', 'like', 'wildphrase', '%first second%', [3, 4, 5]];
+    $cases[] = ['first second', 'like', 'wildwords', '%first%second%', [3, 4, 5, 7]];
+    $cases[] = ['first second', 'like', 'wildwords-suffix', '%first%second%', [3, 4, 5, 7]];
+
+    $cases[] = ['first second', 'fts', 'simple', 'first second', [3, 4, 5]];
+    $cases[] = ['first second', 'fts', 'phrase', '"first second"', [3, 4, 5]];
+    $cases[] = ['first second', 'fts', 'wildphrase', '"*first second*"', [3, 4, 5]];
+    $cases[] = ['first second', 'fts', 'wildwords', '*first* *second*', [3, 4, 5, 7]];
+    $cases[] = ['first second', 'fts', 'wildwords-suffix', 'first* second*', [3, 4, 5, 7]];
+
+    $cases[] = ['first second', 'ftsbool', 'simple', '+"first" +"second"', [3, 4, 5]];
+    $cases[] = ['first second', 'ftsbool', 'phrase', '+"first second"', [3, 4, 5]];
+    $cases[] = ['first second', 'ftsbool', 'wildphrase', '+"*first second*"', [3, 4, 5]];
+    $cases[] = ['first second', 'ftsbool', 'wildwords', '+*first* +*second*', [3, 4, 5, 7]];
+    $cases[] = ['first second', 'ftsbool', 'wildwords-suffix', '+first* +second*', [3, 4, 5, 7]];
+
+    $cases[] = ['first second', 'solr', 'simple', 'first second', NULL];
+    $cases[] = ['first second', 'solr', 'phrase', '"first second"', NULL];
+    $cases[] = ['first second', 'solr', 'wildphrase', '"*first second*"', NULL];
+    $cases[] = ['first second', 'solr', 'wildwords', '*first* *second*', NULL];
+    $cases[] = ['first second', 'solr', 'wildwords-suffix', 'first* second*', NULL];
+
+    $cases[] = ['someone@', 'ftsbool', 'simple', '+"someone"', $allEmailRows];
+    $cases[] = ['@example.com', 'ftsbool', 'simple', '+"example.com"', $allEmailRows];
 
     // If user supplies wildcards, then ignore mode.
-    foreach (array(
-               'simple',
-               'wildphrase',
-               'wildwords',
-               'wildwords-suffix',
-             ) as $mode) {
-      $cases[] = array('first% second', 'like', $mode, 'first% second', array(3, 7));
-      $cases[] = array('first% second', 'fts', $mode, 'first* second', array(3, 7));
-      $cases[] = array('first% second', 'ftsbool', $mode, '+first* +second', array(3, 7));
-      $cases[] = array('first% second', 'solr', $mode, 'first* second', NULL);
-      $cases[] = array('first second%', 'like', $mode, 'first second%', array(3));
-      $cases[] = array('first second%', 'fts', $mode, 'first second*', array(3));
-      $cases[] = array('first second%', 'ftsbool', $mode, '+first +second*', array(3));
-      $cases[] = array('first second%', 'solr', $mode, 'first second*', NULL);
+    foreach ([
+      'simple',
+      'wildphrase',
+      'wildwords',
+      'wildwords-suffix',
+    ] as $mode) {
+      $cases[] = ['first% second', 'like', $mode, 'first% second', [3, 7]];
+      $cases[] = ['first% second', 'fts', $mode, 'first* second', [3, 7]];
+      $cases[] = ['first% second', 'ftsbool', $mode, '+first* +second', [3, 7]];
+      $cases[] = ['first% second', 'solr', $mode, 'first* second', NULL];
+      $cases[] = ['first second%', 'like', $mode, 'first second%', [3]];
+      $cases[] = ['first second%', 'fts', $mode, 'first second*', [3]];
+      $cases[] = ['first second%', 'ftsbool', $mode, '+first +second*', [3]];
+      $cases[] = ['first second%', 'solr', $mode, 'first second*', NULL];
     }
 
     return $cases;
@@ -134,6 +134,7 @@ class CRM_Utils_QueryFormatterTest extends CiviUnitTestCase {
    * @param string $language
    * @param string $mode
    * @param string $expectedText
+   * @param array|NULL $expectedRowIds
    *
    * @dataProvider dataProvider
    */
@@ -147,7 +148,7 @@ class CRM_Utils_QueryFormatterTest extends CiviUnitTestCase {
         $this->createExampleTable();
         $this->assertSqlIds($expectedRowIds, "SELECT id FROM civicrm_fts_example WHERE " . $formatter->formatSql('civicrm_fts_example', 'name', $text));
       }
-      elseif (in_array($language, array('fts', 'ftsbool'))) {
+      elseif (in_array($language, ['fts', 'ftsbool'])) {
         if ($this->supportsFts()) {
           $this->createExampleTable();
           $this->assertSqlIds($expectedRowIds, "SELECT id FROM civicrm_fts_example WHERE " . $formatter->formatSql('civicrm_fts_example', 'name', $text));