1- <?php namespace Geocoder \Laravel \Tests \Laravel5_5 \Providers ;
1+ <?php namespace Geocoder \Laravel \Tests \Feature \Providers ;
22
33use Geocoder \Exception \FunctionNotFound ;
4- use Geocoder \Laravel \Tests \Laravel5_5 \TestCase ;
54use Geocoder \Laravel \Exceptions \InvalidDumperException ;
65use Geocoder \Laravel \Facades \Geocoder ;
76use Geocoder \Laravel \ProviderAndDumperAggregator ;
7+ use Geocoder \Laravel \Tests \FeatureTestCase ;
88use Geocoder \Laravel \Providers \GeocoderService ;
9+ use Geocoder \Model \Coordinates ;
910use Geocoder \Provider \Chain \Chain ;
1011use Geocoder \Provider \GeoPlugin \GeoPlugin ;
11- use Geocoder \Provider \MaxMindBinary \MaxMindBinary ;
1212use Geocoder \Provider \GoogleMaps \GoogleMaps ;
13+ use Geocoder \Provider \GoogleMaps \Model \GoogleAddress ;
14+ use Geocoder \Provider \MaxMindBinary \MaxMindBinary ;
1315use Geocoder \Query \GeocodeQuery ;
1416use Geocoder \Query \ReverseQuery ;
15- use Geocoder \Model \Coordinates ;
1617use Http \Client \Curl \Client as CurlAdapter ;
1718use Illuminate \Support \Collection ;
1819
2122 * @SuppressWarnings(PHPMD.TooManyMethods)
2223 * @SuppressWarnings(PHPMD.TooManyPublicMethods)
2324 */
24- class GeocoderServiceTestextends TestCase
25+ class GeocoderServiceTestextends FeatureTestCase
2526{
26- public function setUp ()
27- {
28- parent ::setUp ();
29-
30- app ()->register (GeocoderService::class);
31- }
32-
3327public function testItReverseGeocodesCoordinates ()
3428 {
35- $ results =app ('geocoder ' )->reverse (38.8791981 , -76.9818437 )->get ();
36-
37- $ this ->assertEquals ('1600 ' ,$ results ->first ()->getStreetNumber ());
38- $ this ->assertEquals ('Pennsylvania Avenue Southeast ' ,$ results ->first ()->getStreetName ());
39- $ this ->assertEquals ('Washington ' ,$ results ->first ()->getLocality ());
40- $ this ->assertEquals ('20003 ' ,$ results ->first ()->getPostalCode ());
41- $ this ->assertTrue ($ results ->isNotEmpty ());
29+ $ result =app ('geocoder ' )
30+ ->reverse (38.897957 , -77.036560 )
31+ ->get ()
32+ ->filter (function (GoogleAddress $ address ) {
33+ return str_contains ($ address ->getStreetName () ??'' ,'Northwest ' );
34+ })
35+ ->first ();
36+
37+ $ this ->assertNotNull ($ result );
38+ $ this ->assertEquals ('1600 ' ,$ result ->getStreetNumber ());
39+ $ this ->assertEquals ('Pennsylvania Avenue Northwest ' ,$ result ->getStreetName ());
40+ $ this ->assertEquals ('Washington ' ,$ result ->getLocality ());
41+ $ this ->assertEquals ('20500 ' ,$ result ->getPostalCode ());
4242 }
4343
4444public function testItResolvesAGivenAddress ()
4545 {
46- $ results =app ('geocoder ' )
46+ $ result =app ('geocoder ' )
4747 ->using ('chain ' )
48- ->geocode ('1600 Pennsylvania Ave., Washington, DC USA ' )
49- ->get ();
48+ ->geocode ('1600 Pennsylvania Ave NW, Washington, DC 20500, USA ' )
49+ ->get ()
50+ ->first ();
5051
51- $ this ->assertEquals ( ' 1600 ' , $ results -> first ()-> getStreetNumber () );
52- $ this ->assertEquals ('Pennsylvania Avenue Northwest ' ,$ results -> first ()-> getStreetName ());
53- $ this ->assertEquals ('Washington ' ,$ results -> first ()-> getLocality ());
54- $ this ->assertEquals ('20500 ' ,$ results -> first ()-> getPostalCode ());
55- $ this ->assertTrue ( $ results -> isNotEmpty ());
52+ $ this ->assertNotNull ( $ result );
53+ $ this ->assertEquals ('1600 ' ,$ result -> getStreetNumber ());
54+ $ this ->assertEquals ('Pennsylvania Avenue Northwest ' ,$ result -> getStreetName ());
55+ $ this ->assertEquals ('Washington ' ,$ result -> getLocality ());
56+ $ this ->assertEquals ( ' 20500 ' , $ result -> getPostalCode ());
5657 }
5758
5859public function testItResolvesAGivenIPAddress ()
@@ -99,23 +100,26 @@ public function testItResolvesAGivenAddressWithUmlautsInRegion()
99100
100101public function testItCanUseASpecificProvider ()
101102 {
102- $ results =app ('geocoder ' )
103+ $ result =app ('geocoder ' )
103104 ->using ('google_maps ' )
104- ->geocode ('1600 Pennsylvania Ave., Washington, DC USA ' )
105- ->get ();
106- $ this ->assertEquals ('1600 ' ,$ results ->first ()->getStreetNumber ());
107- $ this ->assertEquals ('Pennsylvania Avenue Northwest ' ,$ results ->first ()->getStreetName ());
108- $ this ->assertEquals ('Washington ' ,$ results ->first ()->getLocality ());
109- $ this ->assertEquals ('20500 ' ,$ results ->first ()->getPostalCode ());
110- $ this ->assertTrue ($ results ->isNotEmpty ());
105+ ->geocode ('1600 Pennsylvania Ave NW, Washington, DC 20500, USA ' )
106+ ->get ()
107+ ->first ();
108+
109+ $ this ->assertNotNull ($ result );
110+ $ this ->assertEquals ('1600 ' ,$ result ->getStreetNumber ());
111+ $ this ->assertEquals ('Pennsylvania Avenue Northwest ' ,$ result ->getStreetName ());
112+ $ this ->assertEquals ('Washington ' ,$ result ->getLocality ());
113+ $ this ->assertEquals ('20500 ' ,$ result ->getPostalCode ());
111114 }
112115
113116public function testItDumpsAndAddress ()
114117 {
115118$ results =app ('geocoder ' )
116119 ->using ('google_maps ' )
117- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
120+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
118121 ->dump ('geojson ' );
122+
119123$ jsonAddress =json_decode ($ results ->first ());
120124
121125$ this ->assertEquals ('1600 ' ,$ jsonAddress ->properties ->streetNumber );
@@ -127,7 +131,7 @@ public function testItThrowsAnExceptionForInvalidDumper()
127131$ this ->expectException (InvalidDumperException::class);
128132$ results =app ('geocoder ' )
129133 ->using ('google_maps ' )
130- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
134+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
131135 ->dump ('test ' );
132136$ jsonAddress =json_decode ($ results ->first ());
133137
@@ -160,9 +164,9 @@ public function testGeocoder()
160164
161165public function testCacheIsUsed ()
162166 {
163- $ cacheKey =str_slug (strtolower (urlencode ('1600 Pennsylvania Ave. , Washington, DC USA ' )));
167+ $ cacheKey =str_slug (strtolower (urlencode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )));
164168
165- $ result =app ('geocoder ' )->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
169+ $ result =app ('geocoder ' )->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
166170 ->get ();
167171
168172$ this ->assertTrue (app ('cache ' )->has ("geocoder- {$ cacheKey }" ));
@@ -174,7 +178,7 @@ public function testCacheIsUsed()
174178 */
175179public function testGeocodeQueryProvidesResults ()
176180 {
177- $ query = GeocodeQuery::create ('1600 Pennsylvania Ave. , Washington, DC USA ' );
181+ $ query = GeocodeQuery::create ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' );
178182
179183$ results =app ('geocoder ' )->geocodeQuery ($ query )->get ();
180184
@@ -198,16 +202,16 @@ public function testReverseQueryProvidesResults()
198202
199203public function testFacadeProvidesResults ()
200204 {
201- $ results = Geocoder::geocode ('1600 Pennsylvania Ave., Washington, DC USA ' )->get ();
205+ $ results = Geocoder::geocode ('1600 Pennsylvania Ave NW, Washington, DC 20500, USA ' )
206+ ->get ();
202207
203208$ this ->assertInstanceOf (Collection::class,$ results );
204209$ this ->assertTrue ($ results ->isNotEmpty ());
205210 }
206211
207212public function testItCanUseMaxMindBinaryWithoutProvider ()
208213 {
209- $ provider =new MaxMindBinary (__DIR__ .'/../../assets/GeoIP.dat ' );
210-
214+ $ provider =new MaxMindBinary (__DIR__ .'/../../resources/assets/GeoIP.dat ' );
211215app ('geocoder ' )->registerProvider ($ provider );
212216 }
213217
@@ -232,11 +236,11 @@ public function testLimitingOfResults()
232236public function testFetchingAllResults ()
233237 {
234238$ expectedResults =app ('geocoder ' )
235- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
239+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
236240 ->get ()
237241 ->all ();
238242$ actualResults =app ('geocoder ' )
239- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
243+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
240244 ->all ();
241245
242246$ this ->assertEquals ($ expectedResults ,$ actualResults );
@@ -265,20 +269,25 @@ public function testJapaneseCharacterGeocoding()
265269app ('geocoder ' )->geocode ('108-0075 東京都港区港南2丁目16-3 ' )
266270 ->get ();
267271
268- $ this ->assertEquals ($ cacheKey ,'108-0075e69db1e4baace983bde6b8afe58cbae6b8afe58d97efbc92e4b881e79baeefbc91efbc96efbc8defbc93 ' );
272+ $ this ->assertEquals (
273+ $ cacheKey ,
274+ '108-0075e69db1e4baace983bde6b8afe58cbae6b8afe58d97efbc92e4b881e79baeefbc91efbc96efbc8defbc93 '
275+ );
269276$ this ->assertTrue (app ('cache ' )->has ("geocoder- {$ cacheKey }" ));
270277 }
271278
272279public function testItProvidesState ()
273280 {
274- $ results = Geocoder::geocode ('1600 Pennsylvania Ave., Washington, DC USA ' )->get ();
281+ $ results = Geocoder::geocode ('1600 Pennsylvania Ave NW, Washington, DC 20500, USA ' )
282+ ->get ();
275283
276284$ this ->assertEquals ('Washington ' ,$ results ->first ()->getLocality ());
277285 }
278286
279287public function testItProvidesAdminLevel ()
280288 {
281- $ results = Geocoder::geocode ('1600 Pennsylvania Ave., Washington, DC USA ' )->get ();
289+ $ results = Geocoder::geocode ('1600 Pennsylvania Ave NW, Washington, DC 20500, USA ' )
290+ ->get ();
282291
283292$ this ->assertEquals ('District of Columbia ' ,$ results ->first ()->getAdminLevels ()->first ()->getName ());
284293 }