Skip to content

Commit

Permalink
Merge pull request #15720 from eileenmcnaughton/test_clean
Browse files Browse the repository at this point in the history
Test improvements
  • Loading branch information
eileenmcnaughton authored Nov 4, 2019
2 parents b8725d6 + cc3f334 commit 9f4a97a
Showing 1 changed file with 40 additions and 33 deletions.
73 changes: 40 additions & 33 deletions tests/phpunit/CRM/Core/BAO/CustomQueryTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ public function testSearchCustomDataDateRelative() {
"civicrm_value_testsearchcus_1.date_field_2 BETWEEN '" . date('Y') . "0101000000' AND '" . date('Y') . "1231235959'",
$queryObj->_where[0][0]
);
$this->assertEquals("date field is This calendar year (between January 1st, " . date('Y') . " 12:00 AM and December 31st, " . date('Y') . " 11:59 PM)", $queryObj->_qill[0][0]);
$queryObj = new CRM_Core_BAO_CustomQuery($params);
$this->assertEquals('date field is This calendar year (between January 1st, ' . date('Y') . " 12:00 AM and December 31st, " . date('Y') . " 11:59 PM)", $queryObj->_qill[0][0]);
$queryObj = new CRM_Contact_BAO_Query($params);
$this->assertEquals([
'id' => $dateCustomField['id'],
'label' => 'date field',
Expand Down Expand Up @@ -84,7 +84,8 @@ public function testSearchCustomDataDateRelative() {
'name' => 'custom_' . $dateCustomField['id'],
'type' => 4,
'where' => 'civicrm_value_testsearchcus_' . $ids['custom_group_id'] . '.date_field_' . $dateCustomField['id'],
], $queryObj->getFields()[$dateCustomField['id']]);
'import' => 1,
], $queryObj->getFieldSpec('custom_' . $dateCustomField['id']));

}

Expand All @@ -111,8 +112,8 @@ public function testSearchCustomDataDateFromTo() {
$dateCustomFieldName . '_to' => '2015-06-06',
];

$params[$dateCustomField['id']] = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Core_BAO_CustomQuery($params);
$params = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Contact_BAO_Query($params);
$queryObj->query();
$this->assertEquals(
'civicrm_value_testsearchcus_1.date_field_2 BETWEEN "20140606000000" AND "20150606235959"',
Expand All @@ -127,6 +128,8 @@ public function testSearchCustomDataDateFromTo() {

/**
* Test filtering by relative custom data.
*
* @throws \CRM_Core_Exception
*/
public function testSearchCustomDataFromTo() {
$ids = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, 'ContactTestTest');
Expand Down Expand Up @@ -156,11 +159,11 @@ public function testSearchCustomDataFromTo() {
$customFieldName . '_to' => $to,
];

$params = [$customField['id'] => CRM_Contact_BAO_Query::convertFormValues($formValues)];
$queryObj = new CRM_Core_BAO_CustomQuery($params);
$params = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Contact_BAO_Query($params);
$queryObj->query();
$this->assertEquals(
"civicrm_value_testsearchcus_1." . strtolower($type) . "_field_{$customField['id']} BETWEEN \"$from\" AND \"$to\"",
'civicrm_value_testsearchcus_1.' . strtolower($type) . "_field_{$customField['id']} BETWEEN \"$from\" AND \"$to\"",
$queryObj->_where[0][0]
);
$this->assertEquals($queryObj->_qill[0][0], "$type field BETWEEN $from, $to");
Expand All @@ -169,16 +172,20 @@ public function testSearchCustomDataFromTo() {

/**
* Test filtering by relative custom data.
*
* @throws \CRM_Core_Exception
*/
public function testSearchCustomDataFromAndTo() {
$ids = $this->entityCustomGroupWithSingleFieldCreate(__FUNCTION__, 'ContactTestTest');
$datas = [
'Date' => '2015-06-06',
'Int' => 2,
'Float' => 12.123,
'Money' => 91.21,
$dataSet = [
'Date' => ['value' => '2015-06-06', 'sql_string' => '"20150606235959"', 'qill_string' => "'June 6th, 2015 11:59 PM'", 'qill_string_greater' => "'June 6th, 2015 12:00 AM'"],
// @todo - investigate the impact of using quotes on what should be an integer field.
'Int' => ['value' => 2, 'sql_string' => '"2"'],
'Float' => ['value' => 12.123, 'sql_string' => '"12.123"'],
'Money' => ['value' => 91.21],
];
foreach ($datas as $type => $data) {
foreach ($dataSet as $type => $values) {
$data = $values['value'];
$isDate = ($type === 'Date');
$customField = $this->customFieldCreate(
[
Expand All @@ -191,49 +198,49 @@ public function testSearchCustomDataFromAndTo() {
);
$customFieldName = 'custom_' . $customField['id'];

$expectedValue = ($isDate) ? '"20150606235959"' : (($type == 'Money') ? $data : "\"$data\"");
$expectedQillValue = ($isDate) ? "'June 6th, 2015 11:59 PM'" : $data;
$expectedValue = $values['sql_string'] ?? $data;
$expectedQillValue = $values['qill_string'] ?? $data;
$toQillValue = chr(226) . chr(137) . chr(164) . ' ' . $expectedQillValue;
$fromQillValue = chr(226) . chr(137) . chr(165) . ' ' . ($values['qill_string_greater'] ?? $expectedQillValue);

// Assigning the relevant form value to be within a custom key is normally done in
// build field params. It would be better if it were all done in convertFormValues
// but for now we just imitate it.

//Scenrio 2 : TO date filter
//Scenario 2 : TO date filter
$formValues = [
$customFieldName . '_to' => $data,
];

$params = [$customField['id'] => CRM_Contact_BAO_Query::convertFormValues($formValues)];
$queryObj = new CRM_Core_BAO_CustomQuery($params);
$params = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Contact_BAO_Query($params);
$queryObj->query();
$wierdStringThatMeansGreaterEquals = chr(226) . chr(137) . chr(164);

$this->assertEquals(
"civicrm_value_testsearchcus_1." . strtolower($type) . "_field_{$customField['id']} <= $expectedValue",
'civicrm_value_testsearchcus_1.' . strtolower($type) . "_field_{$customField['id']} <= $expectedValue",
$queryObj->_where[0][0]
);
$this->assertEquals($queryObj->_qill[0][0],
"$type field " . $wierdStringThatMeansGreaterEquals . " $expectedQillValue"
"$type field $toQillValue"
);

//Scenrio 2 : FROM date filter
//Scenario 2 : FROM date filter
$formValues = [
$customFieldName . '_from' => $data,
$customFieldName . '_from' => $values['value'],
];

$params = [$customField['id'] => CRM_Contact_BAO_Query::convertFormValues($formValues)];
$queryObj = new CRM_Core_BAO_CustomQuery($params);
$params = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Contact_BAO_Query($params);
$queryObj->query();
$wierdStringThatMeansLessThanEquals = chr(226) . chr(137) . chr(165);

$expectedValue = ($isDate) ? '"20150606000000"' : $expectedValue;
$expectedQillValue = ($isDate) ? "'June 6th, 2015 12:00 AM'" : $expectedQillValue;
$this->assertEquals(
"civicrm_value_testsearchcus_1." . strtolower($type) . "_field_{$customField['id']} >= $expectedValue",
'civicrm_value_testsearchcus_1.' . strtolower($type) . "_field_{$customField['id']} >= $expectedValue",
$queryObj->_where[0][0]
);
$this->assertEquals($queryObj->_qill[0][0],
"$type field " . $wierdStringThatMeansLessThanEquals . " $expectedQillValue"
$this->assertEquals(
"$type field $fromQillValue",
$queryObj->_qill[0][0]
);
}
}
Expand All @@ -258,8 +265,8 @@ public function testSearchCustomDataDateEquals() {
// build field params. It would be better if it were all done in convertFormValues
// but for now we just imitate it.
$formValues = [$dateCustomFieldName => '2015-06-06'];
$params[$dateCustomField['id']] = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Core_BAO_CustomQuery($params);
$params = CRM_Contact_BAO_Query::convertFormValues($formValues);
$queryObj = new CRM_Contact_BAO_Query($params);
$queryObj->query();

$this->assertEquals(
Expand Down

0 comments on commit 9f4a97a

Please sign in to comment.