geokit-rails 2.3.1 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +5 -5
  2. data/.travis.yml +29 -3
  3. data/CHANGELOG.md +9 -0
  4. data/README.markdown +13 -7
  5. data/gemfiles/rails3.gemfile +1 -0
  6. data/gemfiles/rails4.gemfile +1 -1
  7. data/gemfiles/rails5.gemfile +0 -1
  8. data/gemfiles/rails6.0.gemfile +8 -0
  9. data/gemfiles/rails6.1.gemfile +8 -0
  10. data/geokit-rails.gemspec +6 -5
  11. data/lib/geokit-rails/acts_as_mappable/class_methods.rb +297 -0
  12. data/lib/geokit-rails/acts_as_mappable/glue.rb +54 -0
  13. data/lib/geokit-rails/acts_as_mappable.rb +0 -329
  14. data/lib/geokit-rails/adapters/sqlite.rb +2 -2
  15. data/lib/geokit-rails/{core_extensions.rb → distance_collection.rb} +0 -0
  16. data/lib/geokit-rails/ip_geocode_lookup.rb +4 -7
  17. data/lib/geokit-rails/version.rb +1 -1
  18. data/lib/geokit-rails.rb +3 -1
  19. data/test/acts_as_mappable_test.rb +16 -0
  20. data/test/distance_collection_test.rb +42 -0
  21. data/test/dummy/Rakefile +6 -0
  22. data/test/dummy/app/assets/images/.keep +0 -0
  23. data/test/dummy/app/assets/stylesheets/application.css +1 -0
  24. data/test/dummy/app/channels/application_cable/channel.rb +4 -0
  25. data/test/dummy/app/channels/application_cable/connection.rb +4 -0
  26. data/test/dummy/app/controllers/application_controller.rb +3 -0
  27. data/test/dummy/app/controllers/concerns/.keep +0 -0
  28. data/test/dummy/app/controllers/location_aware_controller.rb +43 -0
  29. data/test/dummy/app/helpers/application_helper.rb +2 -0
  30. data/test/dummy/app/jobs/application_job.rb +7 -0
  31. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  32. data/test/dummy/app/models/application_record.rb +3 -0
  33. data/test/dummy/app/models/concerns/.keep +0 -0
  34. data/test/dummy/app/views/layouts/application.html.erb +15 -0
  35. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  36. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  37. data/test/dummy/bin/rails +4 -0
  38. data/test/dummy/bin/rake +4 -0
  39. data/test/dummy/bin/setup +33 -0
  40. data/test/dummy/config/application.rb +22 -0
  41. data/test/dummy/config/boot.rb +5 -0
  42. data/test/dummy/config/cable.yml +10 -0
  43. data/test/dummy/config/database.yml +25 -0
  44. data/test/dummy/config/environment.rb +5 -0
  45. data/test/dummy/config/environments/development.rb +68 -0
  46. data/test/dummy/config/environments/production.rb +87 -0
  47. data/test/dummy/config/environments/test.rb +60 -0
  48. data/test/dummy/config/initializers/content_security_policy.rb +25 -0
  49. data/test/dummy/config/initializers/filter_parameter_logging.rb +8 -0
  50. data/test/dummy/config/initializers/inflections.rb +16 -0
  51. data/test/dummy/config/initializers/permissions_policy.rb +11 -0
  52. data/test/dummy/config/locales/en.yml +33 -0
  53. data/test/dummy/config/puma.rb +43 -0
  54. data/test/dummy/config/routes.rb +6 -0
  55. data/test/dummy/config/storage.yml +34 -0
  56. data/test/dummy/config.ru +6 -0
  57. data/test/dummy/lib/assets/.keep +0 -0
  58. data/test/dummy/log/.keep +0 -0
  59. data/test/dummy/public/404.html +67 -0
  60. data/test/dummy/public/422.html +67 -0
  61. data/test/dummy/public/500.html +66 -0
  62. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  63. data/test/dummy/public/apple-touch-icon.png +0 -0
  64. data/test/dummy/public/favicon.ico +0 -0
  65. data/test/dummy/storage/.keep +0 -0
  66. data/test/dummy/tmp/.keep +0 -0
  67. data/test/dummy/tmp/pids/.keep +0 -0
  68. data/test/dummy/tmp/storage/.keep +0 -0
  69. data/test/fixtures/companies.yml +3 -1
  70. data/test/ip_geocode_lookup_test.rb +49 -0
  71. data/test/schema.rb +1 -0
  72. data/test/test_helper.rb +17 -0
  73. metadata +128 -27
  74. data/test/ip_geocode_lookup_test.disabled.rb +0 -82
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ .rails-default-error-page {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ .rails-default-error-page div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ .rails-default-error-page div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ .rails-default-error-page h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ .rails-default-error-page div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body class="rails-default-error-page">
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,7 +1,9 @@
1
1
  starbucks:
2
2
  id: 1
3
3
  name: Starbucks
4
+ max_distance: 1.7
4
5
 
5
6
  barnes_and_noble:
6
7
  id: 2
7
- name: Barnes & Noble
8
+ name: Barnes & Noble
9
+ max_distance: 2.0
@@ -0,0 +1,49 @@
1
+ require 'test_helper'
2
+
3
+ class IpGeocodeLookupTest < ActionDispatch::IntegrationTest#ActiveSupport::TestCase#ActionController::TestCase
4
+ # tests LocationAwareController
5
+
6
+ def setup
7
+ # @controller = LocationAwareController
8
+ @success = Geokit::GeoLoc.new
9
+ @success.provider = "hostip"
10
+ @success.lat = 41.7696
11
+ @success.lng = -88.4588
12
+ @success.city = "Sugar Grove"
13
+ @success.state = "IL"
14
+ @success.country_code = "US"
15
+ @success.success = true
16
+
17
+ @failure = Geokit::GeoLoc.new
18
+ @failure.provider = "hostip"
19
+ @failure.city = "(Private Address)"
20
+ @failure.success = false
21
+ end
22
+
23
+ def test_no_location_in_cookie_or_session
24
+ Geokit::Geocoders::MultiGeocoder.expects(:geocode).with("good ip").returns(@success)
25
+ get '/'
26
+ assert_response :success
27
+ assert_equal @success, @request.session[:geo_location]
28
+ assert_not_nil cookies[:geo_location]
29
+ assert_equal @success.to_json, cookies[:geo_location]
30
+ end
31
+
32
+ def test_location_in_cookie
33
+ get '/cookietest'
34
+ assert_not_nil cookies[:geo_location]
35
+ assert_equal @success.to_json, cookies[:geo_location]
36
+ end
37
+
38
+ def test_location_in_session
39
+ get '/sessiontest'
40
+ assert_response :success
41
+ assert_equal @success, Geokit::GeoLoc.new(JSON.parse(session[:geo_location]).transform_keys(&:to_sym))
42
+ end
43
+
44
+ def test_ip_not_located
45
+ Geokit::Geocoders::MultiGeocoder.expects(:geocode).with("bad ip").returns(@failure)
46
+ get '/failtest'
47
+ assert_nil @request.session[:geo_location]
48
+ end
49
+ end
data/test/schema.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  ActiveRecord::Schema.define(:version => 0) do
2
2
  create_table :companies, :force => true do |t|
3
3
  t.column :name, :string
4
+ t.column :max_distance, :float
4
5
  end
5
6
 
6
7
  create_table :locations, :force => true do |t|
data/test/test_helper.rb CHANGED
@@ -1,3 +1,19 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require_relative "../test/dummy/config/environment"
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../test/dummy/db/migrate", __dir__)]
6
+ require "rails/test_help"
7
+
8
+ # Load fixtures from the engine
9
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
10
+ ActiveSupport::TestCase.fixture_path = File.expand_path("fixtures", __dir__)
11
+ ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
12
+ ActiveSupport::TestCase.file_fixture_path = ActiveSupport::TestCase.fixture_path + "/files"
13
+ ActiveSupport::TestCase.fixtures :all
14
+ end
15
+
16
+
1
17
  require 'pathname'
2
18
 
3
19
  require 'boot'
@@ -7,6 +23,7 @@ unless ENV['COVERAGE'] == 'off'
7
23
  COVERAGE_THRESHOLD = 35
8
24
  require 'simplecov'
9
25
  require 'simplecov-rcov'
26
+ gem 'coveralls_reborn', '~> 0.26.0'
10
27
  require 'coveralls'
11
28
  Coveralls.wear!
12
29
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geokit-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.1
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Noack
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-05-04 00:00:00.000000000 Z
14
+ date: 2023-01-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -57,6 +57,20 @@ dependencies:
57
57
  version: '1.0'
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: simplecov
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 0.16.1
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: 0.16.1
72
+ - !ruby/object:Gem::Dependency
73
+ name: simplecov-rcov
60
74
  requirement: !ruby/object:Gem::Requirement
61
75
  requirements:
62
76
  - - ">="
@@ -70,7 +84,7 @@ dependencies:
70
84
  - !ruby/object:Gem::Version
71
85
  version: '0'
72
86
  - !ruby/object:Gem::Dependency
73
- name: simplecov-rcov
87
+ name: net-http
74
88
  requirement: !ruby/object:Gem::Requirement
75
89
  requirements:
76
90
  - - ">="
@@ -126,7 +140,7 @@ dependencies:
126
140
  - !ruby/object:Gem::Version
127
141
  version: '0.9'
128
142
  - !ruby/object:Gem::Dependency
129
- name: coveralls
143
+ name: coveralls_reborn
130
144
  requirement: !ruby/object:Gem::Requirement
131
145
  requirements:
132
146
  - - ">="
@@ -141,44 +155,30 @@ dependencies:
141
155
  version: '0'
142
156
  - !ruby/object:Gem::Dependency
143
157
  name: mysql2
144
- requirement: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '0.2'
149
- type: :development
150
- prerelease: false
151
- version_requirements: !ruby/object:Gem::Requirement
152
- requirements:
153
- - - "~>"
154
- - !ruby/object:Gem::Version
155
- version: '0.2'
156
- - !ruby/object:Gem::Dependency
157
- name: activerecord-mysql2spatial-adapter
158
158
  requirement: !ruby/object:Gem::Requirement
159
159
  requirements:
160
160
  - - ">="
161
161
  - !ruby/object:Gem::Version
162
- version: '0'
162
+ version: '0.2'
163
163
  type: :development
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: '0'
169
+ version: '0.2'
170
170
  - !ruby/object:Gem::Dependency
171
171
  name: pg
172
172
  requirement: !ruby/object:Gem::Requirement
173
173
  requirements:
174
- - - "~>"
174
+ - - ">="
175
175
  - !ruby/object:Gem::Version
176
176
  version: '0.10'
177
177
  type: :development
178
178
  prerelease: false
179
179
  version_requirements: !ruby/object:Gem::Requirement
180
180
  requirements:
181
- - - "~>"
181
+ - - ">="
182
182
  - !ruby/object:Gem::Version
183
183
  version: '0.10'
184
184
  - !ruby/object:Gem::Dependency
@@ -217,11 +217,15 @@ files:
217
217
  - gemfiles/rails3.gemfile
218
218
  - gemfiles/rails4.gemfile
219
219
  - gemfiles/rails5.gemfile
220
+ - gemfiles/rails6.0.gemfile
221
+ - gemfiles/rails6.1.gemfile
220
222
  - geokit-rails.gemspec
221
223
  - lib/generators/geokit_rails/install_generator.rb
222
224
  - lib/generators/templates/geokit_config.rb
223
225
  - lib/geokit-rails.rb
224
226
  - lib/geokit-rails/acts_as_mappable.rb
227
+ - lib/geokit-rails/acts_as_mappable/class_methods.rb
228
+ - lib/geokit-rails/acts_as_mappable/glue.rb
225
229
  - lib/geokit-rails/adapters/abstract.rb
226
230
  - lib/geokit-rails/adapters/mysql.rb
227
231
  - lib/geokit-rails/adapters/mysql2.rb
@@ -230,7 +234,7 @@ files:
230
234
  - lib/geokit-rails/adapters/postgresql.rb
231
235
  - lib/geokit-rails/adapters/sqlite.rb
232
236
  - lib/geokit-rails/adapters/sqlserver.rb
233
- - lib/geokit-rails/core_extensions.rb
237
+ - lib/geokit-rails/distance_collection.rb
234
238
  - lib/geokit-rails/geocoder_control.rb
235
239
  - lib/geokit-rails/ip_geocode_lookup.rb
236
240
  - lib/geokit-rails/railtie.rb
@@ -238,6 +242,55 @@ files:
238
242
  - test/acts_as_mappable_test.rb
239
243
  - test/boot.rb
240
244
  - test/database.yml
245
+ - test/distance_collection_test.rb
246
+ - test/dummy/Rakefile
247
+ - test/dummy/app/assets/images/.keep
248
+ - test/dummy/app/assets/stylesheets/application.css
249
+ - test/dummy/app/channels/application_cable/channel.rb
250
+ - test/dummy/app/channels/application_cable/connection.rb
251
+ - test/dummy/app/controllers/application_controller.rb
252
+ - test/dummy/app/controllers/concerns/.keep
253
+ - test/dummy/app/controllers/location_aware_controller.rb
254
+ - test/dummy/app/helpers/application_helper.rb
255
+ - test/dummy/app/jobs/application_job.rb
256
+ - test/dummy/app/mailers/application_mailer.rb
257
+ - test/dummy/app/models/application_record.rb
258
+ - test/dummy/app/models/concerns/.keep
259
+ - test/dummy/app/views/layouts/application.html.erb
260
+ - test/dummy/app/views/layouts/mailer.html.erb
261
+ - test/dummy/app/views/layouts/mailer.text.erb
262
+ - test/dummy/bin/rails
263
+ - test/dummy/bin/rake
264
+ - test/dummy/bin/setup
265
+ - test/dummy/config.ru
266
+ - test/dummy/config/application.rb
267
+ - test/dummy/config/boot.rb
268
+ - test/dummy/config/cable.yml
269
+ - test/dummy/config/database.yml
270
+ - test/dummy/config/environment.rb
271
+ - test/dummy/config/environments/development.rb
272
+ - test/dummy/config/environments/production.rb
273
+ - test/dummy/config/environments/test.rb
274
+ - test/dummy/config/initializers/content_security_policy.rb
275
+ - test/dummy/config/initializers/filter_parameter_logging.rb
276
+ - test/dummy/config/initializers/inflections.rb
277
+ - test/dummy/config/initializers/permissions_policy.rb
278
+ - test/dummy/config/locales/en.yml
279
+ - test/dummy/config/puma.rb
280
+ - test/dummy/config/routes.rb
281
+ - test/dummy/config/storage.yml
282
+ - test/dummy/lib/assets/.keep
283
+ - test/dummy/log/.keep
284
+ - test/dummy/public/404.html
285
+ - test/dummy/public/422.html
286
+ - test/dummy/public/500.html
287
+ - test/dummy/public/apple-touch-icon-precomposed.png
288
+ - test/dummy/public/apple-touch-icon.png
289
+ - test/dummy/public/favicon.ico
290
+ - test/dummy/storage/.keep
291
+ - test/dummy/tmp/.keep
292
+ - test/dummy/tmp/pids/.keep
293
+ - test/dummy/tmp/storage/.keep
241
294
  - test/fixtures/companies.yml
242
295
  - test/fixtures/custom_locations.yml
243
296
  - test/fixtures/locations.yml
@@ -247,7 +300,7 @@ files:
247
300
  - test/fixtures/mock_organizations.yml
248
301
  - test/fixtures/mock_people.yml
249
302
  - test/fixtures/stores.yml
250
- - test/ip_geocode_lookup_test.disabled.rb
303
+ - test/ip_geocode_lookup_test.rb
251
304
  - test/models/company.rb
252
305
  - test/models/custom_location.rb
253
306
  - test/models/location.rb
@@ -279,8 +332,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
332
  - !ruby/object:Gem::Version
280
333
  version: '0'
281
334
  requirements: []
282
- rubyforge_project:
283
- rubygems_version: 2.6.14.1
335
+ rubygems_version: 3.1.2
284
336
  signing_key:
285
337
  specification_version: 4
286
338
  summary: Geokit helpers for rails apps.
@@ -288,6 +340,55 @@ test_files:
288
340
  - test/acts_as_mappable_test.rb
289
341
  - test/boot.rb
290
342
  - test/database.yml
343
+ - test/distance_collection_test.rb
344
+ - test/dummy/Rakefile
345
+ - test/dummy/app/assets/images/.keep
346
+ - test/dummy/app/assets/stylesheets/application.css
347
+ - test/dummy/app/channels/application_cable/channel.rb
348
+ - test/dummy/app/channels/application_cable/connection.rb
349
+ - test/dummy/app/controllers/application_controller.rb
350
+ - test/dummy/app/controllers/concerns/.keep
351
+ - test/dummy/app/controllers/location_aware_controller.rb
352
+ - test/dummy/app/helpers/application_helper.rb
353
+ - test/dummy/app/jobs/application_job.rb
354
+ - test/dummy/app/mailers/application_mailer.rb
355
+ - test/dummy/app/models/application_record.rb
356
+ - test/dummy/app/models/concerns/.keep
357
+ - test/dummy/app/views/layouts/application.html.erb
358
+ - test/dummy/app/views/layouts/mailer.html.erb
359
+ - test/dummy/app/views/layouts/mailer.text.erb
360
+ - test/dummy/bin/rails
361
+ - test/dummy/bin/rake
362
+ - test/dummy/bin/setup
363
+ - test/dummy/config.ru
364
+ - test/dummy/config/application.rb
365
+ - test/dummy/config/boot.rb
366
+ - test/dummy/config/cable.yml
367
+ - test/dummy/config/database.yml
368
+ - test/dummy/config/environment.rb
369
+ - test/dummy/config/environments/development.rb
370
+ - test/dummy/config/environments/production.rb
371
+ - test/dummy/config/environments/test.rb
372
+ - test/dummy/config/initializers/content_security_policy.rb
373
+ - test/dummy/config/initializers/filter_parameter_logging.rb
374
+ - test/dummy/config/initializers/inflections.rb
375
+ - test/dummy/config/initializers/permissions_policy.rb
376
+ - test/dummy/config/locales/en.yml
377
+ - test/dummy/config/puma.rb
378
+ - test/dummy/config/routes.rb
379
+ - test/dummy/config/storage.yml
380
+ - test/dummy/lib/assets/.keep
381
+ - test/dummy/log/.keep
382
+ - test/dummy/public/404.html
383
+ - test/dummy/public/422.html
384
+ - test/dummy/public/500.html
385
+ - test/dummy/public/apple-touch-icon-precomposed.png
386
+ - test/dummy/public/apple-touch-icon.png
387
+ - test/dummy/public/favicon.ico
388
+ - test/dummy/storage/.keep
389
+ - test/dummy/tmp/.keep
390
+ - test/dummy/tmp/pids/.keep
391
+ - test/dummy/tmp/storage/.keep
291
392
  - test/fixtures/companies.yml
292
393
  - test/fixtures/custom_locations.yml
293
394
  - test/fixtures/locations.yml
@@ -297,7 +398,7 @@ test_files:
297
398
  - test/fixtures/mock_organizations.yml
298
399
  - test/fixtures/mock_people.yml
299
400
  - test/fixtures/stores.yml
300
- - test/ip_geocode_lookup_test.disabled.rb
401
+ - test/ip_geocode_lookup_test.rb
301
402
  - test/models/company.rb
302
403
  - test/models/custom_location.rb
303
404
  - test/models/location.rb
@@ -1,82 +0,0 @@
1
- require 'test_helper'
2
-
3
- module TestApp
4
- class Application < Rails::Application
5
- end
6
- end
7
-
8
- TestApp::Application.routes.draw do
9
- match ':controller(/:action(/:id(.:format)))'
10
- end
11
-
12
- class LocationAwareController < ActionController::Base #:nodoc: all
13
- geocode_ip_address
14
-
15
- def index
16
- render :nothing => true
17
- end
18
-
19
- def rescue_action(e) raise e end;
20
- end
21
-
22
- class ActionController::TestRequest #:nodoc: all
23
- attr_accessor :remote_ip
24
- end
25
-
26
- class IpGeocodeLookupTest < ActionController::TestCase
27
- tests LocationAwareController
28
-
29
- def setup
30
- @success = Geokit::GeoLoc.new
31
- @success.provider = "hostip"
32
- @success.lat = 41.7696
33
- @success.lng = -88.4588
34
- @success.city = "Sugar Grove"
35
- @success.state = "IL"
36
- @success.country_code = "US"
37
- @success.success = true
38
-
39
- @failure = Geokit::GeoLoc.new
40
- @failure.provider = "hostip"
41
- @failure.city = "(Private Address)"
42
- @failure.success = false
43
- end
44
-
45
- def test_no_location_in_cookie_or_session
46
- Geokit::Geocoders::MultiGeocoder.expects(:geocode).with("good ip").returns(@success)
47
- @request.remote_ip = "good ip"
48
- get :index
49
- verify
50
- end
51
-
52
- def test_location_in_cookie
53
- @request.remote_ip = "good ip"
54
- @request.cookies['geo_location'] = @success.to_yaml
55
- get :index
56
- verify
57
- end
58
-
59
- def test_location_in_session
60
- @request.remote_ip = "good ip"
61
- @request.session[:geo_location] = @success
62
- @request.cookies['geo_location'] = CGI::Cookie.new('geo_location', @success.to_yaml)
63
- get :index
64
- verify
65
- end
66
-
67
- def test_ip_not_located
68
- Geokit::Geocoders::MultiGeocoder.expects(:geocode).with("bad ip").returns(@failure)
69
- @request.remote_ip = "bad ip"
70
- get :index
71
- assert_nil @request.session[:geo_location]
72
- end
73
-
74
- private
75
-
76
- def verify
77
- assert_response :success
78
- assert_equal @success, @request.session[:geo_location]
79
- assert_not_nil cookies['geo_location']
80
- assert_equal @success, YAML.load(cookies['geo_location'])
81
- end
82
- end