Split mailing label formatting out from main format
[civicrm-core.git] / tests / phpunit / CRM / Utils / AddressTest.php
1 <?php
2
3 /**
4 * Class CRM_Utils_AddressTest
5 * @group headless
6 */
7 class CRM_Utils_AddressTest extends CiviUnitTestCase {
8
9 public function testAddressFormat(): void {
10 $contact = $this->callAPISuccess('contact', 'create', [
11 'first_name' => 'Micky',
12 'last_name' => 'mouse',
13 'contact_type' => 'Individual',
14 ]);
15 $address = $this->callAPISuccess('address', 'create', [
16 'street_address' => '1 Happy Place',
17 'city' => 'Miami',
18 'state_province' => 'Flordia',
19 'country' => 'United States',
20 'postal_code' => 33101,
21 'contact_id' => $contact['id'],
22 'location_type_id' => 5,
23 'is_primary' => 1,
24 ]);
25 $addressDetails = $address['values'][$address['id']];
26 $countries = CRM_Core_PseudoConstant::country();
27 $addressDetails['country'] = $countries[$addressDetails['country_id']];
28 $formatted_address = CRM_Utils_Address::formatMailingLabel($addressDetails, 'mailing_format', FALSE, TRUE);
29 $this->assertTrue((bool) strstr($formatted_address, 'UNITED STATES'));
30 }
31
32 /**
33 * Test state/province field's state_province_name token on getFormattedBillingAddressFieldsFromParameters
34 * and test using alternate names for state_province field
35 */
36 public function testStateProvinceFormattedBillingAddress() {
37 $params = [
38 'billing_street_address-99' => '123 Happy Place',
39 'billing_city-99' => 'Miami',
40 'billing_postal_code-99' => 33101,
41 // 1000 => Alabama (AL)
42 'state_province-99' => '1000',
43 'country-99' => 'United States',
44 ];
45
46 // set address_format (we are only interested in state_province & state_province_name)
47 $addFormat = '{contact.state_province}';
48 Civi::settings()->set('address_format', $addFormat);
49 $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
50 $this->assertTrue((bool) $formatted_address == 'AL');
51
52 $addFormat = '{contact.state_province_name}';
53 Civi::settings()->set('address_format', $addFormat);
54 $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
55 $this->assertTrue((bool) $formatted_address == 'Alabama');
56
57 // test using alternate names for state/province field
58 unset($params['state_province-99']);
59 // alternate name 1
60 $params['billing_state_province-99'] = '1000';
61 $addFormat = '{contact.state_province_name}';
62 Civi::settings()->set('address_format', $addFormat);
63 $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
64 $this->assertTrue((bool) $formatted_address == 'Alabama');
65
66 unset($params['state_province-99']);
67 // alternate name 2
68 $params['billing_state_province_id-99'] = '1000';
69 $addFormat = '{contact.state_province_name}';
70 Civi::settings()->set('address_format', $addFormat);
71 $formatted_address = CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters($params, '99');
72 $this->assertTrue((bool) $formatted_address == 'Alabama');
73 }
74
75 }