From 7c7578121d78bbd372bf2f78ccb5b83f122dd31a Mon Sep 17 00:00:00 2001 From: Aidan Saunders Date: Fri, 2 Mar 2018 13:58:20 +0000 Subject: [PATCH] Test for CRM-21816 --- tests/phpunit/CRM/Contact/BAO/QueryTest.php | 38 +++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/tests/phpunit/CRM/Contact/BAO/QueryTest.php b/tests/phpunit/CRM/Contact/BAO/QueryTest.php index 7ffcd046c2..62e426be9e 100644 --- a/tests/phpunit/CRM/Contact/BAO/QueryTest.php +++ b/tests/phpunit/CRM/Contact/BAO/QueryTest.php @@ -531,4 +531,42 @@ civicrm_relationship.is_active = 1 AND $this->disableFinancialACLs(); } + /** + * When we have a relative date in search criteria, check that convertFormValues() sets _low & _high date fields and returns other criteria. + * CRM-21816 fix relative dates in search bug + */ + public function testConvertFormValuesCRM21816() { + $fv = array( + "member_end_date_relative" => "starting_2.month", // next 60 days + "member_end_date_low" => "20180101000000", + "member_end_date_high" => "20180331235959", + "membership_is_current_member" => "1", + "member_is_primary" => "1", + ); + $fv_orig = $fv; // $fv is modified by convertFormValues() + $params = CRM_Contact_BAO_Query::convertFormValues($fv); + + // restructure for easier testing + $modparams = array(); + foreach ($params as $p) { + $modparams[$p[0]] = $p; + } + + // Check member_end_date_low is in params + $this->assertTrue(is_array($modparams['member_end_date_low'])); + // ... fv and params should match + $this->assertEquals($modparams['member_end_date_low'][2], $fv['member_end_date_low']); + // ... fv & fv_orig should be different + $this->assertNotEquals($fv['member_end_date_low'], $fv_orig['member_end_date_low']); + + // same for member_end_date_high + $this->assertTrue(is_array($modparams['member_end_date_high'])); + $this->assertEquals($modparams['member_end_date_high'][2], $fv['member_end_date_high']); + $this->assertNotEquals($fv['member_end_date_high'], $fv_orig['member_end_date_high']); + + // Check other fv values are in params + $this->assertEquals($modparams['membership_is_current_member'][2], $fv_orig['membership_is_current_member']); + $this->assertEquals($modparams['member_is_primary'][2], $fv_orig['member_is_primary']); + } + } -- 2.25.1