From c84199671846e3ff492319fffedca9e0fc3c18f0 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 28 Apr 2020 14:24:34 -0700 Subject: [PATCH] dev/core#1724 - SettingsBagTest - Add coverage for contribution_invoice_settings --- tests/phpunit/Civi/Core/SettingsBagTest.php | 46 +++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/phpunit/Civi/Core/SettingsBagTest.php b/tests/phpunit/Civi/Core/SettingsBagTest.php index 54993ff031..6271337b29 100644 --- a/tests/phpunit/Civi/Core/SettingsBagTest.php +++ b/tests/phpunit/Civi/Core/SettingsBagTest.php @@ -30,4 +30,50 @@ class SettingsBagTest extends \CiviUnitTestCase { $this->assertEquals(0, $settingsBag->get('enable_innodb_fts')); } + /** + * The setting "contribution_invoice_settings" is actually a virtual value built on other settings. + * Check that various updates work as expected. + */ + public function testVirtualContributionSetting_explicit() { + $s = \Civi::settings(); + + $this->assertEquals(10, $s->get('contribution_invoice_settings')['due_date']); + $this->assertEquals(10, $s->get('invoice_due_date')); + $this->assertEquals(NULL, $s->getExplicit('invoice_due_date')); + + $s->set('invoice_due_date', 20); + $this->assertEquals(20, $s->get('contribution_invoice_settings')['due_date']); + $this->assertEquals(20, $s->get('invoice_due_date')); + $this->assertEquals(20, $s->getExplicit('invoice_due_date')); + + $s->set('contribution_invoice_settings', array_merge($s->get('contribution_invoice_settings'), [ + 'due_date' => 30, + ])); + $this->assertEquals(30, $s->get('contribution_invoice_settings')['due_date']); + $this->assertEquals(30, $s->get('invoice_due_date')); + $this->assertEquals(30, $s->getExplicit('invoice_due_date')); + + $s->revert('invoice_due_date'); + $this->assertEquals(10, $s->get('contribution_invoice_settings')['due_date']); + $this->assertEquals(10, $s->get('invoice_due_date')); + $this->assertEquals(NULL, $s->getExplicit('invoice_due_date')); + } + + /** + * The setting "contribution_invoice_settings" is actually a virtual value built on other settings. + * Check that mandatory values ($civicrm_settings) are respected. + */ + public function testVirtualContributionSetting_mandatory() { + $s = \Civi::settings(); + $this->assertEquals(10, $s->get('contribution_invoice_settings')['due_date']); + $this->assertEquals(10, $s->get('invoice_due_date')); + $this->assertEquals(NULL, $s->getExplicit('invoice_due_date')); + + $s->loadMandatory(['invoice_due_date' => 30]); + + $this->assertEquals(30, $s->get('contribution_invoice_settings')['due_date']); + $this->assertEquals(30, $s->get('invoice_due_date')); + $this->assertEquals(NULL, $s->getExplicit('invoice_due_date')); + } + } -- 2.25.1