diff --git a/src/Provider/GeocodeEarth/CHANGELOG.md b/src/Provider/GeocodeEarth/CHANGELOG.md index bf55e9c58..3e0044067 100644 --- a/src/Provider/GeocodeEarth/CHANGELOG.md +++ b/src/Provider/GeocodeEarth/CHANGELOG.md @@ -16,6 +16,7 @@ The change log describes what is "Added", "Removed", "Changed" or "Fixed" betwee ### Changed - Migrate from PHP-HTTP to PSR-18 client +- Admin levels are numbered in a strict top->down order. 1 is the Country level, 5 is the locality level. ## 1.3.0 diff --git a/src/Provider/GeocodeEarth/Tests/GeocodeEarthTest.php b/src/Provider/GeocodeEarth/Tests/GeocodeEarthTest.php index ec72b5383..617a810cd 100644 --- a/src/Provider/GeocodeEarth/Tests/GeocodeEarthTest.php +++ b/src/Provider/GeocodeEarth/Tests/GeocodeEarthTest.php @@ -60,7 +60,7 @@ public function testGeocodeWithRealAddress(): void $this->assertEquals('Acklam Road', $result->getStreetName()); $this->assertEquals('London', $result->getLocality()); $this->assertCount(3, $result->getAdminLevels()); - $this->assertEquals('London', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('London', $result->getAdminLevels()->get(5)->getName()); $this->assertEquals('United Kingdom', $result->getCountry()->getName()); $this->assertEquals('GBR', $result->getCountry()->getCode()); } @@ -87,8 +87,8 @@ public function testReverseWithRealCoordinates(): void $this->assertEquals('LA1 1UH', $result->getPostalCode()); $this->assertEquals('Lancaster', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Lancashire', $result->getAdminLevels()->get(1)->getName()); - $this->assertEquals('England', $result->getAdminLevels()->get(4)->getName()); + $this->assertEquals('England', $result->getAdminLevels()->get(2)->getName()); + $this->assertEquals('Lancashire', $result->getAdminLevels()->get(3)->getName()); $this->assertEquals('United Kingdom', $result->getCountry()->getName()); $this->assertEquals('GBR', $result->getCountry()->getCode()); } @@ -130,8 +130,8 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(9.787455, $result->getCoordinates()->getLongitude(), 0.01); $this->assertEquals('Hanover', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(1)->getName()); - $this->assertEquals('Hanover', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('Hanover', $result->getAdminLevels()->get(5)->getName()); $this->assertEquals('Germany', $result->getCountry()->getName()); /** @var \Geocoder\Model\Address $result */ @@ -140,7 +140,7 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(52.37362, $result->getCoordinates()->getLatitude(), 0.01); $this->assertEqualsWithDelta(9.73711, $result->getCoordinates()->getLongitude(), 0.01); $this->assertCount(3, $result->getAdminLevels()); - $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(1)->getName()); + $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(3)->getName()); $this->assertEquals('Germany', $result->getCountry()->getName()); /** @var \Geocoder\Model\Address $result */ @@ -150,7 +150,7 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(-78.107687, $result->getCoordinates()->getLongitude(), 0.01); $this->assertNull($result->getLocality()); $this->assertCount(2, $result->getAdminLevels()); - $this->assertEquals('Hanover', $result->getAdminLevels()->get(1)->getName()); + $this->assertEquals('Hanover', $result->getAdminLevels()->get(3)->getName()); $this->assertEquals('Jamaica', $result->getCountry()->getName()); /** @var \Geocoder\Model\Address $result */ @@ -160,7 +160,7 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(-76.724140000000006, $result->getCoordinates()->getLongitude(), 0.01); $this->assertEquals('Hanover', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Hanover', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('Hanover', $result->getAdminLevels()->get(5)->getName()); $this->assertEquals('United States', $result->getCountry()->getName()); } @@ -186,8 +186,8 @@ public function testGeocodeWithCityDistrict(): void $this->assertEquals(60437, $result->getPostalCode()); $this->assertEquals('Frankfurt', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Frankfurt', $result->getAdminLevels()->get(2)->getName()); - $this->assertEquals('Hessen', $result->getAdminLevels()->get(1)->getName()); + $this->assertEquals('Frankfurt', $result->getAdminLevels()->get(4)->getName()); + $this->assertEquals('Hessen', $result->getAdminLevels()->get(3)->getName()); $this->assertNull($result->getAdminLevels()->get(1)->getCode()); $this->assertEquals('Germany', $result->getCountry()->getName()); $this->assertEquals('DEU', $result->getCountry()->getCode()); diff --git a/src/Provider/OpenRouteService/CHANGELOG.md b/src/Provider/OpenRouteService/CHANGELOG.md index 78add6be9..e56d8dc23 100644 --- a/src/Provider/OpenRouteService/CHANGELOG.md +++ b/src/Provider/OpenRouteService/CHANGELOG.md @@ -2,6 +2,13 @@ The change log describes what is "Added", "Removed", "Changed" or "Fixed" between each release. +## 1.4.0 + +### Changed + + - Admin levels are numbered in a strict top->down order. 1 is the Country level, 5 is the locality level. + + ## 1.3.0 ### Added diff --git a/src/Provider/OpenRouteService/Tests/OpenRouteServiceTest.php b/src/Provider/OpenRouteService/Tests/OpenRouteServiceTest.php index 938794b7e..7887478b2 100644 --- a/src/Provider/OpenRouteService/Tests/OpenRouteServiceTest.php +++ b/src/Provider/OpenRouteService/Tests/OpenRouteServiceTest.php @@ -60,7 +60,7 @@ public function testGeocodeWithRealAddress(): void $this->assertEquals('Acklam Road', $result->getStreetName()); $this->assertEquals('London', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('London', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('London', $result->getAdminLevels()->get(5)->getName()); $this->assertEquals('United Kingdom', $result->getCountry()->getName()); $this->assertEquals('GBR', $result->getCountry()->getCode()); } @@ -87,8 +87,8 @@ public function testReverseWithRealCoordinates(): void $this->assertEquals('LA1 1UH', $result->getPostalCode()); $this->assertEquals('Lancaster', $result->getLocality()); $this->assertCount(5, $result->getAdminLevels()); - $this->assertEquals('Lancashire', $result->getAdminLevels()->get(1)->getName()); - $this->assertEquals('England', $result->getAdminLevels()->get(4)->getName()); + $this->assertEquals('England', $result->getAdminLevels()->get(2)->getName()); + $this->assertEquals('Lancashire', $result->getAdminLevels()->get(4)->getName()); $this->assertEquals('United Kingdom', $result->getCountry()->getName()); $this->assertEquals('GBR', $result->getCountry()->getCode()); } @@ -130,8 +130,8 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(9.787455, $result->getCoordinates()->getLongitude(), 0.01); $this->assertEquals('Hanover', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(1)->getName()); - $this->assertEquals('Hanover', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('Hanover', $result->getAdminLevels()->get(5)->getName()); $this->assertEquals('Germany', $result->getCountry()->getName()); /** @var \Geocoder\Model\Address $result */ @@ -140,7 +140,7 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(52.37362, $result->getCoordinates()->getLatitude(), 0.01); $this->assertEqualsWithDelta(9.73711, $result->getCoordinates()->getLongitude(), 0.01); $this->assertCount(3, $result->getAdminLevels()); - $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(1)->getName()); + $this->assertEquals('Niedersachsen', $result->getAdminLevels()->get(3)->getName()); $this->assertEquals('Germany', $result->getCountry()->getName()); /** @var \Geocoder\Model\Address $result */ @@ -150,7 +150,7 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(-78.107687, $result->getCoordinates()->getLongitude(), 0.01); $this->assertNull($result->getLocality()); $this->assertCount(2, $result->getAdminLevels()); - $this->assertEquals('Hanover', $result->getAdminLevels()->get(1)->getName()); + $this->assertEquals('Hanover', $result->getAdminLevels()->get(3)->getName()); $this->assertEquals('Jamaica', $result->getCountry()->getName()); /** @var \Geocoder\Model\Address $result */ @@ -160,7 +160,7 @@ public function testGeocodeWithCity(): void $this->assertEqualsWithDelta(-76.724140000000006, $result->getCoordinates()->getLongitude(), 0.01); $this->assertEquals('Hanover', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Hanover', $result->getAdminLevels()->get(3)->getName()); + $this->assertEquals('Hanover', $result->getAdminLevels()->get(5)->getName()); $this->assertEquals('United States', $result->getCountry()->getName()); } @@ -186,8 +186,8 @@ public function testGeocodeWithCityDistrict(): void $this->assertEquals(60437, $result->getPostalCode()); $this->assertEquals('Frankfurt', $result->getLocality()); $this->assertCount(4, $result->getAdminLevels()); - $this->assertEquals('Frankfurt', $result->getAdminLevels()->get(2)->getName()); - $this->assertEquals('Hessen', $result->getAdminLevels()->get(1)->getName()); + $this->assertEquals('Frankfurt', $result->getAdminLevels()->get(4)->getName()); + $this->assertEquals('Hessen', $result->getAdminLevels()->get(3)->getName()); $this->assertNull($result->getAdminLevels()->get(1)->getCode()); $this->assertEquals('Germany', $result->getCountry()->getName()); $this->assertEquals('DEU', $result->getCountry()->getCode()); diff --git a/src/Provider/Pelias/CHANGELOG.md b/src/Provider/Pelias/CHANGELOG.md index 0ae88d80a..dc4ddf41d 100644 --- a/src/Provider/Pelias/CHANGELOG.md +++ b/src/Provider/Pelias/CHANGELOG.md @@ -16,6 +16,7 @@ The change log describes what is "Added", "Removed", "Changed" or "Fixed" betwee ### Changed - Migrate from PHP-HTTP to PSR-18 client +- Admin levels are numbered in a strict top->down order. 1 is the Country level, 5 is the locality level. ## 1.3.0 diff --git a/src/Provider/Pelias/Pelias.php b/src/Provider/Pelias/Pelias.php index 3bf9a79cb..65c3c03c7 100644 --- a/src/Provider/Pelias/Pelias.php +++ b/src/Provider/Pelias/Pelias.php @@ -151,7 +151,7 @@ protected function executeQuery(string $url): AddressCollection $props = $location['properties']; $adminLevels = []; - foreach (['region', 'county', 'locality', 'macroregion', 'country'] as $i => $component) { + foreach (['country', 'macroregion', 'region', 'county', 'locality'] as $i => $component) { if (isset($props[$component])) { $adminLevels[] = ['name' => $props[$component], 'level' => $i + 1]; } diff --git a/src/Provider/Pelias/Tests/AdminLevelTest.php b/src/Provider/Pelias/Tests/AdminLevelTest.php new file mode 100644 index 000000000..8f291acce --- /dev/null +++ b/src/Provider/Pelias/Tests/AdminLevelTest.php @@ -0,0 +1,73 @@ +getMockedHttpClient($response), 'http://localhost/'); + $result = $provider->geocodeQuery(GeocodeQuery::create('foobar')); + + $this->assertInstanceOf(Collection::class, $result); + $this->assertCount(1, $result); + $address = $result->get(0); + + $expectedOrder = [ + 'COUNTRY', + 'MACROREGION', + 'REGION', + 'COUNTY', + 'LOCALITY', + ]; + + foreach ($address->getAdminLevels()->all() as $key => $adminLevel) { + $this->assertSame($expectedOrder[$key - 1], $adminLevel->getName()); + $this->assertSame($key, $adminLevel->getLevel(), 'Invalid admin level number for level '.$adminLevel->getName()); + } + } +}