4 * Class CRM_UF_Page_ProfileEditorTest
7 class CRM_Upgrade_Incremental_BaseTest
extends CiviUnitTestCase
{
9 public function tearDown() {
10 $this->quickCleanup(['civicrm_saved_search']);
14 * Test message upgrade process.
16 public function testMessageTemplateUpgrade() {
17 $workFlowID = civicrm_api3('OptionValue', 'getvalue', ['return' => 'id', 'name' => 'membership_online_receipt', 'options' => ['limit' => 1, 'sort' => 'id DESC']]);
19 $templates = $this->callAPISuccess('MessageTemplate', 'get', ['workflow_id' => $workFlowID])['values'];
20 foreach ($templates as $template) {
21 $originalText = $template['msg_text'];
22 $this->callAPISuccess('MessageTemplate', 'create', ['msg_text' => 'great what a cool member you are', 'id' => $template['id']]);
23 $msg_text = $this->callAPISuccessGetValue('MessageTemplate', ['id' => $template['id'], 'return' => 'msg_text']);
24 $this->assertEquals('great what a cool member you are', $msg_text);
26 $messageTemplateObject = new CRM_Upgrade_Incremental_MessageTemplates('5.4.alpha1');
27 $messageTemplateObject->updateTemplates();
29 foreach ($templates as $template) {
30 $msg_text = $this->callAPISuccessGetValue('MessageTemplate', ['id' => $template['id'], 'return' => 'msg_text']);
31 $this->assertContains('{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}', $msg_text);
32 if ($msg_text !== $originalText) {
33 // Reset value for future tests.
34 $this->callAPISuccess('MessageTemplate', 'create', ['msg_text' => $originalText, 'id' => $template['id']]);
40 * Test message upgrade process only edits the default if the template is customised.
42 public function testMessageTemplateUpgradeAlreadyCustomised() {
43 $workFlowID = civicrm_api3('OptionValue', 'getvalue', ['return' => 'id', 'name' => 'membership_online_receipt', 'options' => ['limit' => 1, 'sort' => 'id DESC']]);
45 $templates = $this->callAPISuccess('MessageTemplate', 'get', ['workflow_id' => $workFlowID])['values'];
46 foreach ($templates as $template) {
47 if ($template['is_reserved']) {
48 $originalText = $template['msg_text'];
49 $this->callAPISuccess('MessageTemplate', 'create', ['msg_text' => 'great what a cool member you are', 'id' => $template['id']]);
52 $this->callAPISuccess('MessageTemplate', 'create', ['msg_text' => 'great what a silly sausage you are', 'id' => $template['id']]);
55 $messageTemplateObject = new CRM_Upgrade_Incremental_MessageTemplates('5.4.alpha1');
56 $messageTemplateObject->updateTemplates();
58 foreach ($templates as $template) {
59 $msg_text = $this->callAPISuccessGetValue('MessageTemplate', ['id' => $template['id'], 'return' => 'msg_text']);
60 if ($template['is_reserved']) {
61 $this->assertContains('{assign var="greeting" value="{contact.email_greeting}"}{if $greeting}{$greeting},{/if}', $msg_text);
64 $this->assertEquals('great what a silly sausage you are', $msg_text);
67 if ($msg_text !== $originalText) {
68 // Reset value for future tests.
69 $this->callAPISuccess('MessageTemplate', 'create', ['msg_text' => $originalText, 'id' => $template['id']]);
75 * Test function for messages on upgrade.
77 public function testMessageTemplateGetUpgradeMessages() {
78 $messageTemplateObject = new CRM_Upgrade_Incremental_MessageTemplates('5.4.alpha1');
79 $messages = $messageTemplateObject->getUpgradeMessages();
81 'Memberships - Receipt (on-line)' => 'Use email greeting at top where available',
82 'Contributions - Receipt (on-line)' => 'Use email greeting at top where available',
83 'Events - Registration Confirmation and Receipt (on-line)' => 'Use email greeting at top where available',
88 * Test converting a datepicker field.
90 public function testSmartGroupDatePickerConversion() {
91 $this->callAPISuccess('SavedSearch', 'create', [
93 ['grant_application_received_date_high', '=', '01/20/2019'],
94 ['grant_due_date_low', '=', '01/22/2019'],
97 $smartGroupConversionObject = new CRM_Upgrade_Incremental_SmartGroups();
98 $smartGroupConversionObject->updateGroups([
99 'datepickerConversion' => [
100 'grant_application_received_date',
101 'grant_decision_date',
102 'grant_money_transfer_date',
106 $savedSearch = $this->callAPISuccessGetSingle('SavedSearch', []);
107 $this->assertEquals('grant_application_received_date_high', $savedSearch['form_values'][0][0]);
108 $this->assertEquals('2019-01-20 23:59:59', $savedSearch['form_values'][0][2]);
109 $this->assertEquals('grant_due_date_low', $savedSearch['form_values'][1][0]);
110 $this->assertEquals('2019-01-22 00:00:00', $savedSearch['form_values'][1][2]);
111 $hasRelative = FALSE;
112 foreach ($savedSearch['form_values'] as $form_value) {
113 if ($form_value[0] === 'grant_due_date_relative') {
117 $this->assertEquals(TRUE, $hasRelative);
121 * Test conversion of on hold group.
123 public function testOnHoldConversion() {
124 $this->callAPISuccess('SavedSearch', 'create', [
126 ['on_hold', '=', '1'],
129 $smartGroupConversionObject = new CRM_Upgrade_Incremental_SmartGroups('5.11.alpha1');
130 $smartGroupConversionObject->convertEqualsStringToInArray('on_hold');
131 $savedSearch = $this->callAPISuccessGetSingle('SavedSearch', []);
132 $this->assertEquals('IN', $savedSearch['form_values'][0][1]);
133 $this->assertEquals(['1'], $savedSearch['form_values'][0][2]);
138 * Test renaming a field.
140 public function testRenameField() {
141 $this->callAPISuccess('SavedSearch', 'create', [
143 ['activity_date_low', '=', '01/22/2019'],
146 $smartGroupConversionObject = new CRM_Upgrade_Incremental_SmartGroups();
147 $smartGroupConversionObject->renameField('activity_date_low', 'activity_date_time_low');
148 $savedSearch = $this->callAPISuccessGetSingle('SavedSearch', []);
149 $this->assertEquals('activity_date_time_low', $savedSearch['form_values'][0][0]);
153 * Test renaming multiple fields.
157 public function testRenameFields() {
158 $this->callAPISuccess('SavedSearch', 'create', [
160 ['activity_date_low', '=', '01/22/2019'],
161 ['activity_date_relative', '=', 0],
164 $smartGroupConversionObject = new CRM_Upgrade_Incremental_SmartGroups();
165 $smartGroupConversionObject->renameFields([
166 ['old' => 'activity_date_low', 'new' => 'activity_date_time_low'],
167 ['old' => 'activity_date_relative', 'new' => 'activity_date_time_relative'],
169 $savedSearch = $this->callAPISuccessGetSingle('SavedSearch', []);
170 $this->assertEquals('activity_date_time_low', $savedSearch['form_values'][0][0]);
171 $this->assertEquals('activity_date_time_relative', $savedSearch['form_values'][1][0]);
175 * Test that a mis-saved variable in 'contribute settings' can be converted to a
178 public function testConvertUpgradeContributeSettings() {
179 Civi
::settings()->set('contribution_invoice_settings', ['foo' => 'bar', 'deferred_revenue_enabled' => 1]);
180 $this->assertEquals(0, Civi
::settings()->get('deferred_revenue_enabled'));
181 CRM_Upgrade_Incremental_Base
::updateContributeSettings(NULL, 5.1);
182 $this->assertEquals(1, Civi
::settings()->get('deferred_revenue_enabled'));