You are here

public function UcAddressesApiTestCase::testAddressFormatWithoutDefaultCountry in Ubercart Addresses 6.2

Same name and namespace in other branches
  1. 7 tests/uc_addresses.api.test \UcAddressesApiTestCase::testAddressFormatWithoutDefaultCountry()

Tests if a proper address format is generated when there is no default country set.

File

tests/uc_addresses.api.test, line 248
Test cases for the api component.

Class

UcAddressesApiTestCase
Test cases for the api component.

Code

public function testAddressFormatWithoutDefaultCountry() {
  $this
    ->drupalLogin($this->adminUser);

  // Ensure there is no store country set.
  variable_del('uc_store_country');

  // Remove the U.S. country from Ubercart.
  // This will leave Canada as the only available country.
  $country_id = 840;
  db_query("DELETE FROM {uc_countries} WHERE country_id = %d", $country_id);
  db_query("DELETE FROM {uc_zones} WHERE zone_country_id = %d", $country_id);
  variable_del('uc_address_format_' . $country_id);

  // Adjust the address format for Canada.
  $canada_address_format = self::randomName();
  $this
    ->verbose($canada_address_format);
  variable_set('uc_addresses_address_format_124', $canada_address_format);

  // Disable the country field.
  $address_fields = variable_get('uc_address_fields', drupal_map_assoc(array(
    'first_name',
    'last_name',
    'phone',
    'company',
    'street1',
    'street2',
    'city',
    'zone',
    'postal_code',
    'country',
  )));
  unset($address_fields['country']);
  variable_set('uc_address_fields', $address_fields);

  // Create an address.
  $aid = $this
    ->createAddress($this->adminUser);
  $addressBook = UcAddressesAddressBook::get($this->adminUser->uid);
  $addressBook
    ->reset();
  $address = $addressBook
    ->getAddressById($aid);
  if ($address instanceof UcAddressesAddress) {

    // Ensure Canada is used for the address.
    $this
      ->assertEqual($address
      ->getField('country'), '124', strtr('Canada is used as the default country. (ID = !country_id)', array(
      '!country_id' => $address
        ->getField('country'),
    )));

    // Output the address for display.
    $this
      ->viewAddress($this->adminUser, $address
      ->getId());

    // Ensure Canada's address format is used.
    $this
      ->assertText($canada_address_format, 'The address format for Canada was used for the address label.');

    // Test also if the displayed address is not empty
    // when a country is used that does not exists.
    $address
      ->setField('country', 1234);
    $address
      ->save();
    $this
      ->viewAddress($this->adminUser, $address
      ->getId());
    $this
      ->assertText($address
      ->getFieldValue('last_name'), 'Last name was found in the outputted address label.');
    $this
      ->assertText($address
      ->getFieldValue('city'), 'City was found in the outputted address label.');
  }
}