From 1915f8d2e691cd26c68fa15d85b4e728841e4b55 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Tue, 3 Sep 2019 09:50:07 +1000 Subject: [PATCH] Alter smartGroup conversion array to match 5.15 standard of groups and add in unit test of problem with mulitple relative dates in the one smart group Fix test that was just added by moving assigning of fieldPossibilities lower --- CRM/Upgrade/Incremental/SmartGroups.php | 16 +++++--- .../CRM/Upgrade/Incremental/BaseTest.php | 39 +++++++++++++++++++ 2 files changed, 50 insertions(+), 5 deletions(-) diff --git a/CRM/Upgrade/Incremental/SmartGroups.php b/CRM/Upgrade/Incremental/SmartGroups.php index feb9c6438a..2ff9287b82 100644 --- a/CRM/Upgrade/Incremental/SmartGroups.php +++ b/CRM/Upgrade/Incremental/SmartGroups.php @@ -56,20 +56,26 @@ class CRM_Upgrade_Incremental_SmartGroups { */ public function datePickerConversion($fields) { $fieldPossibilities = $relativeFieldNames = []; - foreach ($fields as $field) { - $fieldPossibilities[] = $field; - $fieldPossibilities[] = $field . '_high'; - $fieldPossibilities[] = $field . '_low'; - } $relativeDateMappings = [ 'activity_date_time' => 'activity', 'participant_register_date' => 'participant', 'receive_date' => 'contribution', 'contribution_cancel_date' => 'contribution_cancel', + 'membership_join_date' => 'member_join', + 'membership_start_date' => 'member_start', + 'membership_end_date' => 'member_end', + 'pledge_payment_scheduled_date' => 'pledge_payment', + 'pledge_create_date' => 'pledge_create', + 'pledge_end_date' => 'pledge_end', + 'pledge_start_date' => 'pledge_start', ]; foreach ($fields as $field) { foreach ($this->getSearchesWithField($field) as $savedSearch) { + // Only populate field possibilities as we go to convert each field + $fieldPossibilities[] = $field; + $fieldPossibilities[] = $field . '_high'; + $fieldPossibilities[] = $field . '_low'; $formValues = $savedSearch['form_values']; $isRelative = $hasRelative = FALSE; $relativeFieldName = $field . '_relative'; diff --git a/tests/phpunit/CRM/Upgrade/Incremental/BaseTest.php b/tests/phpunit/CRM/Upgrade/Incremental/BaseTest.php index a990e124fc..be60f5ff4c 100644 --- a/tests/phpunit/CRM/Upgrade/Incremental/BaseTest.php +++ b/tests/phpunit/CRM/Upgrade/Incremental/BaseTest.php @@ -117,6 +117,45 @@ class CRM_Upgrade_Incremental_BaseTest extends CiviUnitTestCase { $this->assertEquals(TRUE, $hasRelative); } + /** + * Test Multiple Relative Date conversions + */ + public function testSmartGroupMultipleRelatvieDateConversions() { + $this->callAPISuccess('SavedSearch', 'create', [ + 'form_values' => [ + ['membership_join_date_low', '=', '20190903000000'], + ['membership_join_date_high', '=', '20190903235959'], + ['membership_start_date_low', '=' , '20190901000000'], + ['membership_start_date_high', '=', '20190907235959'], + ['membership_end_date_low', '=', '20190901000000'], + ['membership_end_date_high', '=', '20190907235959'], + 'relative_dates' => [ + 'member_join' => 'this.day', + 'member_start' => 'this.week', + 'member_end' => 'this.week', + ], + ], + ]); + $smartGroupConversionObject = new CRM_Upgrade_Incremental_SmartGroups(); + $smartGroupConversionObject->updateGroups([ + 'datepickerConversion' => [ + 'membership_join_date', + 'membership_start_date', + 'membership_end_date', + ], + ]); + $savedSearch = $this->callAPISuccessGetSingle('SavedSearch', []); + $this->assertContains('6', array_keys($savedSearch['form_values'])); + $this->assertEquals('membership_join_date_relative', $savedSearch['form_values'][6][0]); + $this->assertEquals('this.day', $savedSearch['form_values'][6][2]); + $this->assertContains('7', array_keys($savedSearch['form_values'])); + $this->assertEquals('membership_start_date_relative', $savedSearch['form_values'][7][0]); + $this->assertEquals('this.week', $savedSearch['form_values'][7][2]); + $this->assertContains('8', array_keys($savedSearch['form_values'])); + $this->assertEquals('membership_end_date_relative', $savedSearch['form_values'][8][0]); + $this->assertEquals('this.week', $savedSearch['form_values'][8][2]); + } + /** * Test conversion of on hold group. */ -- 2.25.1