14
14
15
15
use Geocoder \Exception \InvalidServerResponse ;
16
16
use Geocoder \IntegrationTest \BaseTestCase ;
17
- use Geocoder \Location ;
18
17
use Geocoder \Model \Address ;
19
18
use Geocoder \Model \AddressCollection ;
20
19
use Geocoder \Provider \GoogleMaps \Model \GoogleAddress ;
@@ -94,7 +93,7 @@ public function testGeocodeWithRealAddress()
94
93
$ this ->assertInstanceOf (AddressCollection::class, $ results );
95
94
$ this ->assertCount (1 , $ results );
96
95
97
- /** @var Location $result */
96
+ /** @var GoogleAddress $result */
98
97
$ result = $ results ->first ();
99
98
$ this ->assertInstanceOf (Address::class, $ result );
100
99
$ this ->assertEqualsWithDelta (48.8630462 , $ result ->getCoordinates ()->getLatitude (), 0.001 );
@@ -128,7 +127,7 @@ public function testGeocodeBoundsWithRealAddressForNonRooftopLocation()
128
127
$ this ->assertInstanceOf (AddressCollection::class, $ results );
129
128
$ this ->assertCount (1 , $ results );
130
129
131
- /** @var Location $result */
130
+ /** @var GoogleAddress $result */
132
131
$ result = $ results ->first ();
133
132
$ this ->assertInstanceOf (Address::class, $ result );
134
133
$ this ->assertNotNull ($ result ->getBounds ());
@@ -156,7 +155,7 @@ public function testReverseWithRealCoordinates()
156
155
$ this ->assertInstanceOf (AddressCollection::class, $ results );
157
156
$ this ->assertCount (5 , $ results );
158
157
159
- /** @var Location $result */
158
+ /** @var GoogleAddress $result */
160
159
$ result = $ results ->first ();
161
160
$ this ->assertInstanceOf (Address::class, $ result );
162
161
$ this ->assertEquals (12 , $ result ->getStreetNumber ());
@@ -180,7 +179,7 @@ public function testReverseWithRealCoordinatesAndLocale()
180
179
$ this ->assertInstanceOf (AddressCollection::class, $ results );
181
180
$ this ->assertCount (5 , $ results );
182
181
183
- /** @var Location $result */
182
+ /** @var GoogleAddress $result */
184
183
$ result = $ results ->first ();
185
184
$ this ->assertInstanceOf (Address::class, $ result );
186
185
$ this ->assertEquals (12 , $ result ->getStreetNumber ());
@@ -204,7 +203,7 @@ public function testGeocodeWithCityDistrict()
204
203
$ this ->assertInstanceOf (AddressCollection::class, $ results );
205
204
$ this ->assertCount (1 , $ results );
206
205
207
- /** @var Location $result */
206
+ /** @var GoogleAddress $result */
208
207
$ result = $ results ->first ();
209
208
$ this ->assertInstanceOf (Address::class, $ result );
210
209
$ this ->assertEquals ('Kalbach-Riedberg ' , $ result ->getSubLocality ());
@@ -228,7 +227,7 @@ public function testGeocodeWithRealValidApiKey()
228
227
$ this ->assertInstanceOf (AddressCollection::class, $ results );
229
228
$ this ->assertCount (1 , $ results );
230
229
231
- /** @var Location $result */
230
+ /** @var GoogleAddress $result */
232
231
$ result = $ results ->first ();
233
232
$ this ->assertInstanceOf (Address::class, $ result );
234
233
$ this ->assertNotNull ($ result ->getCoordinates ()->getLatitude ());
@@ -251,7 +250,7 @@ public function testGeocodeWithComponentFiltering()
251
250
$ this ->assertInstanceOf (AddressCollection::class, $ results );
252
251
$ this ->assertCount (1 , $ results );
253
252
254
- /** @var Location $result */
253
+ /** @var GoogleAddress $result */
255
254
$ result = $ results ->first ();
256
255
$ this ->assertInstanceOf (Address::class, $ result );
257
256
$ this ->assertEquals ('Malmö ' , $ result ->getLocality ());
@@ -340,7 +339,7 @@ public function testGeocodePostalTown()
340
339
$ this ->assertInstanceOf (AddressCollection::class, $ results );
341
340
$ this ->assertCount (1 , $ results );
342
341
343
- /** @var Location $result */
342
+ /** @var GoogleAddress $result */
344
343
$ result = $ results ->first ();
345
344
$ this ->assertInstanceOf (Address::class, $ result );
346
345
$ this ->assertEquals ('Pontypridd ' , $ result ->getLocality ());
@@ -558,7 +557,7 @@ public function testGeocodeBoundsWithRealAddressWithViewportOnly()
558
557
$ this ->assertInstanceOf (AddressCollection::class, $ results );
559
558
$ this ->assertCount (1 , $ results );
560
559
561
- /** @var \Geocoder\Model\Address $result */
560
+ /** @var GoogleAddress $result */
562
561
$ result = $ results ->first ();
563
562
$ this ->assertInstanceOf (Address::class, $ result );
564
563
$ this ->assertNotNull ($ result ->getBounds ());
@@ -569,6 +568,28 @@ public function testGeocodeBoundsWithRealAddressWithViewportOnly()
569
568
$ this ->assertEquals (false , $ result ->isPartialMatch ());
570
569
}
571
570
571
+ public function testGeocodeDuplicateSubLocalityLevel ()
572
+ {
573
+ $ provider = $ this ->getGoogleMapsProvider ();
574
+ $ results = $ provider ->geocodeQuery (GeocodeQuery::create ('Rue de Pont-A-Migneloux, 6210 Wayaux, Belgique ' ));
575
+
576
+ $ this ->assertInstanceOf (AddressCollection::class, $ results );
577
+ $ this ->assertCount (1 , $ results );
578
+
579
+ /** @var GoogleAddress $result */
580
+ $ result = $ results ->first ();
581
+ $ this ->assertInstanceOf (Address::class, $ result );
582
+ $ this ->assertEquals ('Rue de Pont-à-Migneloux, 6210 Les Bons Villers, Belgium ' , $ result ->getFormattedAddress ());
583
+ $ this ->assertEquals ('Les Bons Villers ' , $ result ->getSubLocality ());
584
+ $ this ->assertCount (2 , $ result ->getAdminLevels ());
585
+ $ this ->assertEquals ('Région Wallonne ' , $ result ->getAdminLevels ()->get (1 )->getName ());
586
+ $ this ->assertEquals ('Hainaut ' , $ result ->getAdminLevels ()->get (2 )->getName ());
587
+ $ this ->assertInstanceOf ('\Geocoder\Model\AdminLevelCollection ' , $ result ->getSubLocalityLevels ());
588
+ $ this ->assertEquals (1 , $ result ->getSubLocalityLevels ()->get (1 )->getLevel ());
589
+ $ this ->assertEquals ('Wayaux / Les Bons Villers ' , $ result ->getSubLocalityLevels ()->get (1 )->getName ());
590
+ $ this ->assertEquals ('Wayaux / Les Bons Villers ' , $ result ->getSubLocalityLevels ()->get (1 )->getCode ());
591
+ }
592
+
572
593
private function getGoogleMapsProvider (): GoogleMaps
573
594
{
574
595
if (!isset ($ _SERVER ['GOOGLE_GEOCODING_KEY ' ])) {
0 commit comments