Merge pull request #17233 from alifrumin/rn5.25
[civicrm-core.git] / tests / phpunit / Civi / Core / SettingsBagTest.php
1 <?php
2 namespace Civi\Core;
3
4 class SettingsBagTest extends \CiviUnitTestCase {
5
6 protected $origSetting;
7
8 protected function setUp() {
9 $this->origSetting = $GLOBALS['civicrm_setting'];
10
11 parent::setUp();
12 $this->useTransaction(TRUE);
13
14 $this->mandates = [];
15 }
16
17 public function tearDown() {
18 $GLOBALS['civicrm_setting'] = $this->origSetting;
19 parent::tearDown();
20 }
21
22 /**
23 * CRM-19610 - Ensure InnoDb FTS doesn't break search preferenes when disabled.
24 */
25 public function testInnoDbFTS() {
26
27 $settingsBag = \Civi::settings();
28
29 $settingsBag->set("enable_innodb_fts", "0");
30 $this->assertEquals(0, $settingsBag->get('enable_innodb_fts'));
31 }
32
33 /**
34 * The setting "contribution_invoice_settings" is actually a virtual value built on other settings.
35 * Check that various updates work as expected.
36 */
37 public function testVirtualContributionSetting_explicit() {
38 $s = \Civi::settings();
39
40 $this->assertEquals(10, $s->get('contribution_invoice_settings')['due_date']);
41 $this->assertEquals(10, $s->get('invoice_due_date'));
42 $this->assertEquals(NULL, $s->getExplicit('invoice_due_date'));
43
44 $s->set('invoice_due_date', 20);
45 $this->assertEquals(20, $s->get('contribution_invoice_settings')['due_date']);
46 $this->assertEquals(20, $s->get('invoice_due_date'));
47 $this->assertEquals(20, $s->getExplicit('invoice_due_date'));
48
49 $s->set('contribution_invoice_settings', array_merge($s->get('contribution_invoice_settings'), [
50 'due_date' => 30,
51 ]));
52 $this->assertEquals(30, $s->get('contribution_invoice_settings')['due_date']);
53 $this->assertEquals(30, $s->get('invoice_due_date'));
54 $this->assertEquals(30, $s->getExplicit('invoice_due_date'));
55
56 $s->revert('invoice_due_date');
57 $this->assertEquals(10, $s->get('contribution_invoice_settings')['due_date']);
58 $this->assertEquals(10, $s->get('invoice_due_date'));
59 $this->assertEquals(NULL, $s->getExplicit('invoice_due_date'));
60 }
61
62 /**
63 * The setting "contribution_invoice_settings" is actually a virtual value built on other settings.
64 * Check that mandatory values ($civicrm_settings) are respected.
65 */
66 public function testVirtualContributionSetting_mandatory() {
67 $s = \Civi::settings();
68 $this->assertEquals(10, $s->get('contribution_invoice_settings')['due_date']);
69 $this->assertEquals(10, $s->get('invoice_due_date'));
70 $this->assertEquals(NULL, $s->getExplicit('invoice_due_date'));
71
72 $s->loadMandatory(['invoice_due_date' => 30]);
73
74 $this->assertEquals(30, $s->get('contribution_invoice_settings')['due_date']);
75 $this->assertEquals(30, $s->get('invoice_due_date'));
76 $this->assertEquals(NULL, $s->getExplicit('invoice_due_date'));
77 }
78
79 }