Merge pull request #17323 from JKingsnorth/patch-14
[civicrm-core.git] / tests / phpunit / CRM / Core / BAO / SettingTest.php
index 2901412599e2514b53dd836f124b86caf7218821..34cf4a8f47d7e286eb3c4aa6c3ed6db4bc740286 100644 (file)
  */
 class CRM_Core_BAO_SettingTest extends CiviUnitTestCase {
 
+  /**
+   * Original value of civicrm_setting global.
+   * @var array
+   */
+  private $origSetting;
+
   public function setUp() {
     parent::setUp();
     global $civicrm_setting;
     $this->origSetting = $civicrm_setting;
-    CRM_Utils_Cache::singleton()->flush();
+    CRM_Utils_Cache::singleton()->clear();
   }
 
+  /**
+   * Clean up after test.
+   *
+   * @throws \CRM_Core_Exception
+   */
   public function tearDown() {
     global $civicrm_setting;
     $civicrm_setting = $this->origSetting;
-    CRM_Utils_Cache::singleton()->flush();
+    $this->quickCleanup(['civicrm_contribution']);
+    CRM_Utils_Cache::singleton()->clear();
     parent::tearDown();
   }
 
@@ -79,6 +91,7 @@ class CRM_Core_BAO_SettingTest extends CiviUnitTestCase {
       'notes' => '<p>Give me money</p>',
       'tax_term' => 'Extortion',
       'tax_display_settings' => 'Exclusive',
+      // NOTE: This form of `invoicing` is accepted, but it may be normalized to the idiomatic form with a nested array.
       'invoicing' => 1,
       'is_email_pdf' => '1',
     ];
@@ -88,7 +101,7 @@ class CRM_Core_BAO_SettingTest extends CiviUnitTestCase {
     $getVersion = $this->callAPISuccessGetValue('Setting', ['name' => 'contribution_invoice_settings']);
     $this->assertEquals($settingsFromAPI, $settingsFromGet);
     $this->assertAPIArrayComparison($getVersion, $settingsFromGet);
-    $this->assertEquals($contributionSettings, $settingsFromGet);
+    $this->assertEquals(['invoicing' => ['invoicing' => 1]] + $contributionSettings, $settingsFromGet);
 
     // These are the preferred retrieval methods.
     $this->assertEquals('G_', Civi::settings()->get('invoice_prefix'));
@@ -227,4 +240,13 @@ class CRM_Core_BAO_SettingTest extends CiviUnitTestCase {
     $this->assertEquals('Development', $environment);
   }
 
+  /**
+   * Test that options defined as a pseudoconstant can be converted to options.
+   */
+  public function testPseudoConstants() {
+    $this->contributionPageCreate();
+    $metadata = \Civi\Core\SettingsMetadata::getMetadata(['name' => ['default_invoice_page']], NULL, TRUE);
+    $this->assertEquals('Test Contribution Page', $metadata['default_invoice_page']['options'][1]);
+  }
+
 }