diff --git a/src/Geocoder/Model/Address.php b/src/Geocoder/Model/Address.php index 8eaf4cd47..b2f91cd3c 100644 --- a/src/Geocoder/Model/Address.php +++ b/src/Geocoder/Model/Address.php @@ -246,11 +246,12 @@ public function toArray() foreach ($this->adminLevels as $adminLevel) { $adminLevels[$adminLevel->getLevel()] = [ 'name' => $adminLevel->getName(), - 'code' => $adminLevel->getCode() + 'code' => $adminLevel->getCode(), + 'level' => $adminLevel->getLevel(), ]; } - return array( + return [ 'latitude' => $this->getLatitude(), 'longitude' => $this->getLongitude(), 'bounds' => $this->bounds->toArray(), @@ -263,6 +264,6 @@ public function toArray() 'country' => $this->country->getName(), 'countryCode' => $this->country->getCode(), 'timezone' => $this->timezone, - ); + ]; } } diff --git a/tests/Geocoder/Tests/Model/AddressTest.php b/tests/Geocoder/Tests/Model/AddressTest.php new file mode 100644 index 000000000..b4dcaaba8 --- /dev/null +++ b/tests/Geocoder/Tests/Model/AddressTest.php @@ -0,0 +1,70 @@ + + */ +class AddressTest extends TestCase +{ + public function testToArray() + { + $data = [ + 'latitude' => 48.8631507, + 'longitude' => 2.3889114, + 'bounds' => [ + 'south' => 48.8631507, + 'west' => 2.3889114, + 'north' => 48.8631507, + 'east' => 2.388911, + ], + 'streetNumber' => '10', + 'streetName' => 'Avenue Gambetta', + 'postalCode' => '75020', + 'locality' => 'Paris', + 'subLocality' => '20e Arrondissement', + 'adminLevels' => [1 => ['name' => 'Ile-de-France', 'code' => 'Ile-de-France', 'level' => 1]], + 'country' => 'France', + 'countryCode' => 'FR', + 'timezone' => null, + ]; + + $address = $this->createAddress($data); + + $this->assertSame($data, $address->toArray()); + } + + public function testCreateFromArrayFromToArray() + { + $factory = new AddressFactory(); + + $data = [ + 'latitude' => 48.8631507, + 'longitude' => 2.3889114, + 'bounds' => [ + 'south' => 48.8631507, + 'west' => 2.3889114, + 'north' => 48.8631507, + 'east' => 2.388911, + ], + 'streetNumber' => '10', + 'streetName' => 'Avenue Gambetta', + 'postalCode' => '75020', + 'locality' => 'Paris', + 'subLocality' => '20e Arrondissement', + 'adminLevels' => [1 => ['name' => 'Ile-de-France', 'code' => 'Ile-de-France', 'level' => 1]], + 'country' => 'France', + 'countryCode' => 'FR', + 'timezone' => null, + ]; + + $address = $this->createAddress($data); + $array = $address->toArray(); + $addresses = $factory->createFromArray([$array]); + + $this->assertEquals($address, $addresses->get(0)); + } +}