Add tests for Ensure OptionGroup exists fn & fix optionValueExists to accept ID
authoreileen <emcnaughton@wikimedia.org>
Tue, 17 May 2016 01:05:23 +0000 (13:05 +1200)
committerTim Otten <totten@civicrm.org>
Thu, 19 May 2016 22:50:31 +0000 (15:50 -0700)
The option_group_id field accepts name or id so use that.

CRM/Core/BAO/OptionValue.php
tests/phpunit/api/v3/OptionGroupTest.php

index 9eabbf380cb383090c20d00849c64cff1046f838..a529d1b18dcf01fa95b64f214a6372c247f301bd 100644 (file)
@@ -529,7 +529,7 @@ class CRM_Core_BAO_OptionValue extends CRM_Core_DAO_OptionValue {
    */
   public static function ensureOptionValueExists($params) {
     $existingValues = civicrm_api3('OptionValue', 'get', array(
-      'option_group_name' => $params['option_group_id'],
+      'option_group_id' => $params['option_group_id'],
       'name' => $params['name'],
     ));
     if (!$existingValues['count']) {
index da261662dd5f522b7ecb48bb2c2f2285ef8786d9..1e65e3f2cca383c9cd4a2ccbed5ffec48cc451e8 100644 (file)
@@ -169,4 +169,26 @@ class api_v3_OptionGroupTest extends CiviUnitTestCase {
     $this->callAPIAndDocument('OptionGroup', 'delete', array('id' => $result['id']), __FUNCTION__, __FILE__);
   }
 
+  /**
+   * Ensure only one option value exists after calling ensureOptionValueExists.
+   */
+  public function testEnsureOptionGroupExistsExistingValue() {
+    CRM_Core_BAO_OptionGroup::ensureOptionGroupExists(array('name' => 'participant_role'));
+    $this->callAPISuccessGetSingle('OptionGroup', array('name' => 'participant_role'));
+  }
+
+  /**
+   * Ensure only one option value exists adds a new value.
+   */
+  public function testEnsureOptionGroupExistsNewValue() {
+    $optionGroupID = CRM_Core_BAO_OptionGroup::ensureOptionGroupExists(array(
+      'name' => 'Bombed',
+      'title' => ts('Catastrophy'),
+      'description' => ts('blah blah'),
+      'is_reserved' => 1,
+    ));
+    $optionGroup = $this->callAPISuccessGetSingle('OptionGroup', array('name' => 'Bombed'));
+    $this->assertEquals($optionGroupID, $optionGroup['id']);
+  }
+
 }