X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=tests%2Fphpunit%2FCRM%2FUtils%2FQueryFormatterTest.php;h=de557c933e8910091af695ff3e3bdccea0ca4bc6;hb=772dc650964a584808bbdc256c24988e9467475b;hp=fbd9cffd99e5a96e1c27ec2caa81ca6687b74049;hpb=1ccaf542e7b9a67301ab5cfefbf5de395c7323c7;p=civicrm-core.git diff --git a/tests/phpunit/CRM/Utils/QueryFormatterTest.php b/tests/phpunit/CRM/Utils/QueryFormatterTest.php index fbd9cffd99..de557c933e 100644 --- a/tests/phpunit/CRM/Utils/QueryFormatterTest.php +++ b/tests/phpunit/CRM/Utils/QueryFormatterTest.php @@ -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,67 +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 = []; + + $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; @@ -131,6 +134,7 @@ class CRM_Utils_QueryFormatterTest extends CiviUnitTestCase { * @param string $language * @param string $mode * @param string $expectedText + * @param array|NULL $expectedRowIds * * @dataProvider dataProvider */ @@ -144,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));