From 63b568946e60c53da85fcacf18412579c4d8e6b6 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 27 Mar 2019 19:48:00 -0400 Subject: [PATCH] Fix api validate of states and improve test --- CRM/Core/BAO/Address.php | 2 +- tests/phpunit/api/v3/AddressTest.php | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CRM/Core/BAO/Address.php b/CRM/Core/BAO/Address.php index b2c594ad9c..00a70f91f8 100644 --- a/CRM/Core/BAO/Address.php +++ b/CRM/Core/BAO/Address.php @@ -1311,7 +1311,7 @@ SELECT is_primary, case 'state_province': // change $fieldName to DB specific names. $fieldName = 'state_province_id'; - if (empty($props['country_id'])) { + if (empty($props['country_id']) && $context !== 'validate') { $config = CRM_Core_Config::singleton(); if (!empty($config->provinceLimit)) { $props['country_id'] = $config->provinceLimit; diff --git a/tests/phpunit/api/v3/AddressTest.php b/tests/phpunit/api/v3/AddressTest.php index ad1c1c401e..70b3c34600 100644 --- a/tests/phpunit/api/v3/AddressTest.php +++ b/tests/phpunit/api/v3/AddressTest.php @@ -408,6 +408,14 @@ class api_v3_AddressTest extends CiviUnitTestCase { $address1 = $this->callAPISuccess('address', 'create', $params); // should find state_province_id of 1019, Maryland, United States ... NOT 3497, Maryland, Liberia $this->assertEquals('1019', $address1['values'][0]['state_province_id']); + + // Now try it in Liberia + $params = $this->_params; + $params['sequential'] = 1; + $params['country_id'] = '1122'; // Liberia country id + $params['state_province_id'] = 'Maryland'; + $address2 = $this->callAPISuccess('address', 'create', $params); + $this->assertEquals('3497', $address2['values'][0]['state_province_id']); } } -- 2.25.1