You are here

public function UcAddressesFeedsTest::test in Ubercart Addresses 7

Test address creation.

File

tests/uc_addresses.feeds.test, line 49
Test for Feeds integration.

Class

UcAddressesFeedsTest
Test aggregating a feed as address records.

Code

public function test() {

  // In this test we use the default importer, which is called 'uc_addresses'.
  $this
    ->drupalGet('admin/structure/feeds/');

  // Ensure the importer is available.
  $this
    ->assertText(t('Ubercart Addresses address import'));

  // Ensure that we can access the processor setting pages without errors.
  $this
    ->drupalGet('admin/structure/feeds/uc_addresses/settings/FeedsUcAddressesProcessor');
  $this
    ->assertText('Settings for Ubercart Addresses processor');
  $this
    ->drupalGet('admin/structure/feeds/uc_addresses/mapping');
  $this
    ->assertText('Mapping for Ubercart Addresses processor');

  // Create the users we are referring to in the csv file except 1
  // (so we can test failing imports as well).
  $account1 = $this
    ->UcAddressesCreateUser('john.lefagity');
  $account2 = $this
    ->UcAddressesCreateUser('Paulie');
  $account3 = $this
    ->UcAddressesCreateUser('XeBukist');

  // Import CSV file.
  $this
    ->importFile('uc_addresses', $this
    ->absolutePath() . '/tests/feeds/uc_addresses.csv');

  // Assert result.
  $this
    ->assertText('Created 4 addresses');

  // One address belonged to an user that was not known on the system.
  // Another address was from a country that is not installed on the system.
  $this
    ->assertText('Failed importing 2 addresses');

  // Test the number of addresses in the database (should be 4).
  $count = db_query("SELECT count(aid) FROM {uc_addresses}")
    ->fetchField();
  $this
    ->assertEqual($count, 4, 'There are 4 addresses in the uc_addresses table.');

  // Test if the first and second addresses are saved correctly
  // to the database.
  $values1 = array(
    'uid' => $account1->uid,
    'first_name' => 'John',
    'last_name' => 'Lefagity',
    'phone' => '012-12345',
    'company' => '',
    'street1' => '123 Mainstreet',
    'street2' => '',
    'city' => 'Somecity',
    'postal_code' => '97005',
    'country' => 840,
    'address_name' => 'Home',
    'default_shipping' => 1,
    'default_billing' => 1,
  );
  $values2 = array(
    'uid' => $account1->uid,
    'first_name' => 'John',
    'last_name' => 'Lefagity',
    'phone' => '514 514 5414',
    'company' => 'Abbey',
    'street1' => '9 Sideway',
    'street2' => 'Room 45',
    'city' => 'Othercity',
    'postal_code' => 'G3S 1Q2',
    'country' => 124,
    'address_name' => 'Work',
    'default_shipping' => 0,
    'default_billing' => 0,
  );
  $this
    ->assertTrue(self::checkAddressValuesInDatabase($values1), 'The first address is correctly saved to the database.');
  $this
    ->assertTrue(self::checkAddressValuesInDatabase($values2), 'The second address is correctly saved to the database.');

  // Go to each address book and check if the addresses
  // are displayed as expected.
  $this
    ->viewAddressBook($account1);

  // Test if the first imported address is displayed.
  $this
    ->assertText('Home');
  $this
    ->assertText('John Lefagity');
  $this
    ->assertText('123 Mainstreet');
  $this
    ->assertText('Somecity, OR 97005');
  $this
    ->assertText('012-12345');

  // Test if the second imported address is displayed.
  $this
    ->assertText('Work');
  $this
    ->assertText('Abbey');
  $this
    ->assertText('9 Sideway');
  $this
    ->assertText('Room 45');
  $this
    ->assertText('Othercity QC  G3S 1Q2');
  $this
    ->assertText('Canada');
  $this
    ->assertText('514 514 5414');

  // Test if the fourth imported address is displayed.
  $this
    ->viewAddressBook($account3);
  $this
    ->assertText('Ringo Xebukist');
  $this
    ->assertText('1234 Everblue Street');
  $this
    ->assertText('LA for one day, CA 90011');
  $this
    ->assertText('485-1940');

  // Now install the United Kingdom country and import again.
  module_load_include('countries.inc', 'uc_store');
  uc_country_import('united_kingdom_826_2.cif');
  $this
    ->importFile('uc_addresses', $this
    ->absolutePath() . '/tests/feeds/uc_addresses.csv');

  // Assert result. One additional address should be created.
  // An other address should still fail.
  $this
    ->assertText('Created 1 address');
  $this
    ->assertText('Failed importing 1 address');

  // Test the number of addresses in the database (should be 5 now).
  $count = db_query("SELECT count(aid) FROM {uc_addresses}")
    ->fetchField();
  $this
    ->assertEqual($count, 5, 'There are 5 addresses in the uc_addresses table.');

  // Test if the fifth imported address is displayed.
  $this
    ->viewAddressBook($account2);
  $this
    ->assertText('Paul Sigouist');
  $this
    ->assertText('1965 Penny Lane');
  $this
    ->assertText('Liverpool');
  $this
    ->assertText('L99 685');
  $this
    ->assertText('United Kingdom');
}