1
- <?php namespace Geocoder \Laravel \Tests \Laravel5_5 \Providers ;
1
+ <?php namespace Geocoder \Laravel \Tests \Feature \Providers ;
2
2
3
3
use Geocoder \Exception \FunctionNotFound ;
4
- use Geocoder \Laravel \Tests \Laravel5_5 \TestCase ;
5
4
use Geocoder \Laravel \Exceptions \InvalidDumperException ;
6
5
use Geocoder \Laravel \Facades \Geocoder ;
7
6
use Geocoder \Laravel \ProviderAndDumperAggregator ;
7
+ use Geocoder \Laravel \Tests \FeatureTestCase ;
8
8
use Geocoder \Laravel \Providers \GeocoderService ;
9
+ use Geocoder \Model \Coordinates ;
9
10
use Geocoder \Provider \Chain \Chain ;
10
11
use Geocoder \Provider \GeoPlugin \GeoPlugin ;
11
- use Geocoder \Provider \MaxMindBinary \MaxMindBinary ;
12
12
use Geocoder \Provider \GoogleMaps \GoogleMaps ;
13
+ use Geocoder \Provider \GoogleMaps \Model \GoogleAddress ;
14
+ use Geocoder \Provider \MaxMindBinary \MaxMindBinary ;
13
15
use Geocoder \Query \GeocodeQuery ;
14
16
use Geocoder \Query \ReverseQuery ;
15
- use Geocoder \Model \Coordinates ;
16
17
use Http \Client \Curl \Client as CurlAdapter ;
17
18
use Illuminate \Support \Collection ;
18
19
21
22
* @SuppressWarnings(PHPMD.TooManyMethods)
22
23
* @SuppressWarnings(PHPMD.TooManyPublicMethods)
23
24
*/
24
- class GeocoderServiceTest extends TestCase
25
+ class GeocoderServiceTest extends FeatureTestCase
25
26
{
26
- public function setUp ()
27
- {
28
- parent ::setUp ();
29
-
30
- app ()->register (GeocoderService::class);
31
- }
32
-
33
27
public function testItReverseGeocodesCoordinates ()
34
28
{
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 ());
42
42
}
43
43
44
44
public function testItResolvesAGivenAddress ()
45
45
{
46
- $ results = app ('geocoder ' )
46
+ $ result = app ('geocoder ' )
47
47
->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 ();
50
51
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 ());
56
57
}
57
58
58
59
public function testItResolvesAGivenIPAddress ()
@@ -99,23 +100,26 @@ public function testItResolvesAGivenAddressWithUmlautsInRegion()
99
100
100
101
public function testItCanUseASpecificProvider ()
101
102
{
102
- $ results = app ('geocoder ' )
103
+ $ result = app ('geocoder ' )
103
104
->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 ());
111
114
}
112
115
113
116
public function testItDumpsAndAddress ()
114
117
{
115
118
$ results = app ('geocoder ' )
116
119
->using ('google_maps ' )
117
- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
120
+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
118
121
->dump ('geojson ' );
122
+
119
123
$ jsonAddress = json_decode ($ results ->first ());
120
124
121
125
$ this ->assertEquals ('1600 ' , $ jsonAddress ->properties ->streetNumber );
@@ -127,7 +131,7 @@ public function testItThrowsAnExceptionForInvalidDumper()
127
131
$ this ->expectException (InvalidDumperException::class);
128
132
$ results = app ('geocoder ' )
129
133
->using ('google_maps ' )
130
- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
134
+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
131
135
->dump ('test ' );
132
136
$ jsonAddress = json_decode ($ results ->first ());
133
137
@@ -160,9 +164,9 @@ public function testGeocoder()
160
164
161
165
public function testCacheIsUsed ()
162
166
{
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 ' )));
164
168
165
- $ result = app ('geocoder ' )->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
169
+ $ result = app ('geocoder ' )->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
166
170
->get ();
167
171
168
172
$ this ->assertTrue (app ('cache ' )->has ("geocoder- {$ cacheKey }" ));
@@ -174,7 +178,7 @@ public function testCacheIsUsed()
174
178
*/
175
179
public function testGeocodeQueryProvidesResults ()
176
180
{
177
- $ query = GeocodeQuery::create ('1600 Pennsylvania Ave. , Washington, DC USA ' );
181
+ $ query = GeocodeQuery::create ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' );
178
182
179
183
$ results = app ('geocoder ' )->geocodeQuery ($ query )->get ();
180
184
@@ -198,16 +202,16 @@ public function testReverseQueryProvidesResults()
198
202
199
203
public function testFacadeProvidesResults ()
200
204
{
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 ();
202
207
203
208
$ this ->assertInstanceOf (Collection::class, $ results );
204
209
$ this ->assertTrue ($ results ->isNotEmpty ());
205
210
}
206
211
207
212
public function testItCanUseMaxMindBinaryWithoutProvider ()
208
213
{
209
- $ provider = new MaxMindBinary (__DIR__ . '/../../assets/GeoIP.dat ' );
210
-
214
+ $ provider = new MaxMindBinary (__DIR__ . '/../../resources/assets/GeoIP.dat ' );
211
215
app ('geocoder ' )->registerProvider ($ provider );
212
216
}
213
217
@@ -232,11 +236,11 @@ public function testLimitingOfResults()
232
236
public function testFetchingAllResults ()
233
237
{
234
238
$ expectedResults = app ('geocoder ' )
235
- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
239
+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
236
240
->get ()
237
241
->all ();
238
242
$ actualResults = app ('geocoder ' )
239
- ->geocode ('1600 Pennsylvania Ave. , Washington, DC USA ' )
243
+ ->geocode ('1600 Pennsylvania Ave NW , Washington, DC 20500, USA ' )
240
244
->all ();
241
245
242
246
$ this ->assertEquals ($ expectedResults , $ actualResults );
@@ -265,20 +269,25 @@ public function testJapaneseCharacterGeocoding()
265
269
app ('geocoder ' )->geocode ('108-0075 東京都港区港南2丁目16-3 ' )
266
270
->get ();
267
271
268
- $ this ->assertEquals ($ cacheKey , '108-0075e69db1e4baace983bde6b8afe58cbae6b8afe58d97efbc92e4b881e79baeefbc91efbc96efbc8defbc93 ' );
272
+ $ this ->assertEquals (
273
+ $ cacheKey ,
274
+ '108-0075e69db1e4baace983bde6b8afe58cbae6b8afe58d97efbc92e4b881e79baeefbc91efbc96efbc8defbc93 '
275
+ );
269
276
$ this ->assertTrue (app ('cache ' )->has ("geocoder- {$ cacheKey }" ));
270
277
}
271
278
272
279
public function testItProvidesState ()
273
280
{
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 ();
275
283
276
284
$ this ->assertEquals ('Washington ' , $ results ->first ()->getLocality ());
277
285
}
278
286
279
287
public function testItProvidesAdminLevel ()
280
288
{
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 ();
282
291
283
292
$ this ->assertEquals ('District of Columbia ' , $ results ->first ()->getAdminLevels ()->first ()->getName ());
284
293
}
0 commit comments