uc_address.test 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. /**
  3. * @file
  4. * Tests for the UcAddress class.
  5. */
  6. /**
  7. * Tests for the UcAddress class.
  8. */
  9. class UbercartAddressTestCase extends UbercartTestHelper {
  10. /** Array of UcAddress objects */
  11. protected $test_address = array();
  12. public static function getInfo() {
  13. return array(
  14. 'name' => 'Address functionality',
  15. 'description' => 'Create and compare addresses.',
  16. 'group' => 'Ubercart',
  17. );
  18. }
  19. /**
  20. * Overrides DrupalWebTestCase::setUp().
  21. */
  22. public function setUp() {
  23. parent::setUp();
  24. // Create a random address object for use in tests.
  25. $this->test_address[] = $this->createAddress();
  26. // Create a specific address object for use in tests.
  27. $settings = array(
  28. 'first_name' => 'Elmo',
  29. 'last_name' => 'Monster',
  30. 'company' => 'CTW, Inc.',
  31. 'street1' => '123 Sesame Street',
  32. 'city' => 'New York',
  33. 'zone' => 43,
  34. 'country' => 840,
  35. 'postal_code' => '10010',
  36. 'phone' => '1234567890',
  37. 'email' => 'elmo@ctw.org',
  38. );
  39. $this->test_address[] = $this->createAddress($settings);
  40. }
  41. /**
  42. * Tests comparison of address objects.
  43. */
  44. function testAddressComparison() {
  45. $address1 = $this->test_address[0];
  46. $address2 = $this->test_address[1];
  47. $this->pass((string) $this->test_address[0]);
  48. $this->pass((string) $this->test_address[1]);
  49. // Use randomly generated address first.
  50. $address = clone($this->test_address[0]);
  51. // Modify phone number and test equality
  52. $address->phone = 'this is not a valid phone number';
  53. $this->assertTrue(
  54. $this->test_address[0]->isSamePhysicalLocation($address),
  55. t('Physical address comparison ignores non-physical fields.')
  56. );
  57. // Use specifc address.
  58. $address = clone($this->test_address[1]);
  59. // Modify city and test equality
  60. $address->city = 'nEw YoRk';
  61. $this->pass((string) $address);
  62. $this->assertTrue(
  63. $this->test_address[1]->isSamePhysicalLocation($address),
  64. t('Case-insensitive address comparison works.')
  65. );
  66. // Modify city and test equality
  67. $address->city = ' NewYork ';
  68. $this->pass((string) $address);
  69. $this->assertTrue(
  70. $this->test_address[1]->isSamePhysicalLocation($address),
  71. t('Whitespace-insensitive address comparison works.')
  72. );
  73. }
  74. /**
  75. * Creates an address object based on default settings.
  76. *
  77. * @param $settings
  78. * An associative array of settings to change from the defaults, keys are
  79. * address properties. For example, 'city' => 'London'.
  80. *
  81. * @return
  82. * UcAddress object.
  83. */
  84. public function createAddress($settings = array()) {
  85. $street = array_flip(array(
  86. 'Street',
  87. 'Avenue',
  88. 'Place',
  89. 'Way',
  90. 'Road',
  91. 'Boulevard',
  92. 'Court',
  93. ));
  94. // Populate object with defaults.
  95. $address = new UcAddress();
  96. $address->first_name = $this->randomName(6);
  97. $address->last_name = $this->randomName(12);
  98. $address->company = $this->randomName(10) . ', Inc.';
  99. $address->street1 = mt_rand(100, 1000) . ' ' .
  100. $this->randomName(10) . ' ' .
  101. array_rand($street);
  102. $address->street2 = 'Suite ' . mt_rand(100, 999);
  103. $address->city = $this->randomName(10);
  104. $address->zone = 23;
  105. $address->country = 840;
  106. $address->postal_code = mt_rand(10000, 99999);
  107. $address->phone = '(' . mt_rand(100, 999) . ') ' .
  108. mt_rand(100, 999) . '-' . mt_rand(0, 9999);
  109. $address->email = $this->randomName(6) . '@' .
  110. $this->randomName(8) . '.com';
  111. foreach ($settings as $property => $value) {
  112. $address->$property = $value;
  113. }
  114. return $address;
  115. }
  116. }