Merge pull request #17095 from civicrm/5.25
[civicrm-core.git] / tests / phpunit / CRM / Utils / AddressTest.php
index df22b6d6722312ed71196f304316adc3d1131c1a..3ce0a367fc5676a7a14b5557a8bcf96d8e523cd2 100644 (file)
@@ -11,12 +11,12 @@ class CRM_Utils_AddressTest extends CiviUnitTestCase {
   }
 
   public function testAddressFormat() {
-    $contact = $this->callAPISuccess('contact', 'create', array(
+    $contact = $this->callAPISuccess('contact', 'create', [
       'first_name' => 'Micky',
       'last_name' => 'mouse',
       'contact_type' => 'Individual',
-    ));
-    $address = $this->callAPISuccess('address', 'create', array(
+    ]);
+    $address = $this->callAPISuccess('address', 'create', [
       'street_address' => '1 Happy Place',
       'city' => 'Miami',
       'state_province' => 'Flordia',
@@ -25,7 +25,7 @@ class CRM_Utils_AddressTest extends CiviUnitTestCase {
       'contact_id' => $contact['id'],
       'location_type_id' => 5,
       'is_primary' => 1,
-    ));
+    ]);
     $addressDetails = $address['values'][$address['id']];
     $countries = CRM_Core_PseudoConstant::country();
     $addressDetails['country'] = $countries[$addressDetails['country_id']];
@@ -33,4 +33,47 @@ class CRM_Utils_AddressTest extends CiviUnitTestCase {
     $this->assertTrue((bool) strstr($formatted_address, 'UNITED STATES'));
   }
 
+  /**
+   * Test state/province field's state_province_name token on getFormattedBillingAddressFieldsFromParameters
+   * and test using alternate names for state_province field
+   */
+  public function testStateProvinceFormattedBillingAddress() {
+    $params = [
+      'billing_street_address-99' => '123 Happy Place',
+      'billing_city-99' => 'Miami',
+      'billing_postal_code-99' => 33101,
+      // 1000 => Alabama (AL)
+      'state_province-99' => '1000',
+      'country-99' => 'United States',
+    ];
+
+    // set address_format (we are only interested in state_province & state_province_name)
+    $addFormat = '{contact.state_province}';
+    Civi::settings()->set('address_format', $addFormat);
+    $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
+    $this->assertTrue((bool) $formatted_address == 'AL');
+
+    $addFormat = '{contact.state_province_name}';
+    Civi::settings()->set('address_format', $addFormat);
+    $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
+    $this->assertTrue((bool) $formatted_address == 'Alabama');
+
+    // test using alternate names for state/province field
+    unset($params['state_province-99']);
+    // alternate name 1
+    $params['billing_state_province-99'] = '1000';
+    $addFormat = '{contact.state_province_name}';
+    Civi::settings()->set('address_format', $addFormat);
+    $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
+    $this->assertTrue((bool) $formatted_address == 'Alabama');
+
+    unset($params['state_province-99']);
+    // alternate name 2
+    $params['billing_state_province_id-99'] = '1000';
+    $addFormat = '{contact.state_province_name}';
+    Civi::settings()->set('address_format', $addFormat);
+    $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
+    $this->assertTrue((bool) $formatted_address == 'Alabama');
+  }
+
 }