public function testCollectionFetchAndGeocodeFetchForAddress()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $address = array();
     $address['street1'] = '123 Knob Street';
     $address['street2'] = 'Apartment 4b';
     $address['city'] = 'Chicago';
     $address['state'] = 'Illinois';
     $address['postalCode'] = '60606';
     $address['country'] = 'USA';
     $account1 = AddressGeoCodeTestHelper::createTestAccountsWithBillingAddressAndGetAccount($address, $super);
     $accountId1 = $account1->id;
     unset($account1);
     $address = array();
     $address['street1'] = '1600 Amphitheatre Parkway';
     $address['street2'] = '';
     $address['city'] = 'Mountain View';
     $address['state'] = 'California';
     $address['postalCode'] = '94043';
     $address['country'] = 'USA';
     $account2 = AddressGeoCodeTestHelper::createTestAccountsWithBillingAddressAndGetAccount($address, $super);
     $accountId2 = $account2->id;
     unset($account2);
     $address = array();
     $address['street1'] = '36826 East Oak Road';
     $address['street2'] = '';
     $address['city'] = 'New York';
     $address['state'] = 'NY';
     $address['postalCode'] = '10001';
     $address['country'] = 'USA';
     $account3 = AddressGeoCodeTestHelper::createTestAccountsWithBillingAddressAndGetAccount($address, $super);
     $accountId3 = $account3->id;
     unset($account3);
     $address = array();
     $address['street1'] = '24948 West Thomas Trail';
     $address['street2'] = '';
     $address['city'] = 'Milwaukee';
     $address['state'] = 'WI';
     $address['postalCode'] = '53219';
     $address['country'] = '';
     $account4 = AddressGeoCodeTestHelper::createTestAccountsWithBillingAddressAndGetAccount($address, $super);
     $accountId4 = $account4->id;
     unset($account4);
     $account1 = Account::getById($accountId1);
     $this->assertEquals(null, $account1->billingAddress->latitude);
     $this->assertEquals(null, $account1->billingAddress->longitude);
     $this->assertEquals(0, $account1->billingAddress->invalid);
     $account2 = Account::getById($accountId2);
     $this->assertEquals(null, $account2->billingAddress->latitude);
     $this->assertEquals(null, $account2->billingAddress->longitude);
     $this->assertEquals(0, $account2->billingAddress->invalid);
     $account3 = Account::getById($accountId3);
     $this->assertEquals(null, $account3->billingAddress->latitude);
     $this->assertEquals(null, $account3->billingAddress->longitude);
     $this->assertEquals(0, $account3->billingAddress->invalid);
     $account4 = Account::getById($accountId4);
     $this->assertEquals(null, $account4->billingAddress->latitude);
     $this->assertEquals(null, $account4->billingAddress->longitude);
     $this->assertEquals(0, $account4->billingAddress->invalid);
     $addressCollection = AddressMappingUtil::fetchChangedAddressCollection(2);
     $this->assertEquals(2, count($addressCollection));
     $account1 = Account::getById($accountId1);
     $addressString = $account1->billingAddress->makeAddress();
     $latitudeLongitudeCoordinates = AddressMappingUtil::fetchGeocodeForAddress($addressString);
     $this->assertTrue(is_array($latitudeLongitudeCoordinates));
     $this->assertEquals(2, count($latitudeLongitudeCoordinates));
     $this->assertTrue(isset($latitudeLongitudeCoordinates['latitude']));
     $this->assertTrue(isset($latitudeLongitudeCoordinates['longitude']));
     $this->assertEquals(round('41.8817767', 4), round($latitudeLongitudeCoordinates['latitude'], 4));
     $this->assertEquals(round('-87.6371461', 4), round($latitudeLongitudeCoordinates['longitude'], 4));
 }