View source
<?php
namespace Drupal\Tests\uc_store\Functional;
use Drupal\uc_store\Address;
use Drupal\Tests\uc_store\Traits\AddressTestTrait;
class AddressTest extends UbercartBrowserTestBase {
use AddressTestTrait;
protected $testAddresses = [];
protected function setUp() {
parent::setUp();
$this->testAddresses[] = $this
->createAddress();
$settings = [
'first_name' => 'Elmo',
'last_name' => 'Monster',
'company' => 'CTW, Inc.',
'street1' => '123 Sesame Street',
'street2' => '',
'city' => 'New York',
'zone' => 'NY',
'country' => 'US',
'postal_code' => '10010',
'phone' => '1234567890',
'email' => 'elmo@ctw.org',
];
$this->testAddresses[] = $this
->createAddress($settings);
}
public function testAddressFormat() {
$address = Address::create();
$address
->setCountry(NULL);
$formatted = (string) $address;
$expected = '';
$this
->assertEquals($expected, $formatted, 'Formatted empty address is an empty string.');
$address = clone $this->testAddresses[1];
$store_country = \Drupal::config('uc_store.settings')
->get('address.country');
$formatted = (string) $address;
if ($store_country == 'US') {
$expected = "CTW, INC.<br>\nELMO MONSTER<br>\n123 SESAME STREET<br>\nNEW YORK, NY 10010";
}
else {
$expected = "CTW, INC.<br>\nELMO MONSTER<br>\n123 SESAME STREET<br>\nNEW YORK, NY 10010<br>\nUNITED STATES";
}
$this
->assertEquals($expected, $formatted, 'Formatted address matches expected value.');
$address
->setCity('Victoria');
$address
->setZone('BC');
$address
->setCountry('CA');
$formatted = (string) $address;
if ($store_country == 'CA') {
$expected = "CTW, INC.<br>\nELMO MONSTER<br>\n123 SESAME STREET<br>\nVICTORIA BC 10010";
}
else {
$expected = "CTW, INC.<br>\nELMO MONSTER<br>\n123 SESAME STREET<br>\nVICTORIA BC 10010<br>\nCANADA";
}
$this
->assertEquals($expected, $formatted, 'Formatted address with non-default country matches expected value.');
}
public function testAddressComparison() {
$this
->assertTrue((string) $this->testAddresses[0]);
$this
->assertTrue((string) $this->testAddresses[1]);
$address = clone $this->testAddresses[0];
$address
->setPhone('this is not a valid phone number');
$this
->assertTrue($this->testAddresses[0]
->isSamePhysicalLocation($address), 'Physical address comparison ignores non-physical fields.');
$original = clone $this->testAddresses[1];
$original
->setCity('Victoria');
$original
->setZone('BC');
$original
->setCountry('CA');
$address = clone $original;
$address
->setCity('vIcToRia');
$this
->assertTrue($address
->isSamePhysicalLocation($original), 'Case-insensitive address comparison works.');
$address
->setCity(' vic toria ');
$this
->assertTrue($address
->isSamePhysicalLocation($original), 'Whitespace-insensitive address comparison works.');
}
}