geokit-rails3-1beta 0.2.0.beta1 → 0.3.1.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CONFIG.markdown +67 -0
- data/Gemfile +3 -0
- data/MIT-LICENSE +20 -0
- data/README.markdown +653 -0
- data/Rakefile +17 -0
- data/geokit-rails3-1beta.gemspec +31 -0
- data/lib/geokit-rails3-1beta.rb +10 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/acts_as_mappable.old.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/acts_as_mappable.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/adapters/abstract.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/adapters/mysql.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/adapters/mysql2.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/adapters/postgresql.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/adapters/sqlserver.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/core_extensions.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/defaults.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/geocoder_control.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/ip_geocode_lookup.rb +0 -0
- data/lib/{geokit-rails3 → geokit-rails3-1beta}/railtie.rb +3 -3
- data/lib/geokit-rails3-1beta/version.rb +3 -0
- metadata +26 -69
- data/lib/geokit-rails3.rb +0 -10
- data/lib/geokit-rails3/version.rb +0 -3
- data/test/acts_as_mappable_test.rb +0 -420
- data/test/boot.rb +0 -32
- data/test/database.yml +0 -20
- data/test/fixtures/companies.yml +0 -7
- data/test/fixtures/custom_locations.yml +0 -54
- data/test/fixtures/locations.yml +0 -54
- data/test/fixtures/mock_addresses.yml +0 -17
- data/test/fixtures/mock_families.yml +0 -2
- data/test/fixtures/mock_houses.yml +0 -9
- data/test/fixtures/mock_organizations.yml +0 -5
- data/test/fixtures/mock_people.yml +0 -5
- data/test/fixtures/stores.yml +0 -0
- data/test/ip_geocode_lookup_test.disabled.rb +0 -82
- data/test/models/company.rb +0 -3
- data/test/models/custom_location.rb +0 -12
- data/test/models/location.rb +0 -4
- data/test/models/mock_address.rb +0 -4
- data/test/models/mock_family.rb +0 -3
- data/test/models/mock_house.rb +0 -3
- data/test/models/mock_organization.rb +0 -4
- data/test/models/mock_person.rb +0 -4
- data/test/models/store.rb +0 -3
- data/test/schema.rb +0 -60
- data/test/tasks.rake +0 -38
- data/test/test_helper.rb +0 -23
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
Rake::RDocTask.new do |rdoc|
|
6
|
+
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
7
|
+
|
8
|
+
rdoc.rdoc_dir = 'rdoc'
|
9
|
+
rdoc.title = "geokit-rails3-1beta #{version}"
|
10
|
+
rdoc.rdoc_files.include('README*')
|
11
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
12
|
+
end
|
13
|
+
|
14
|
+
load 'test/tasks.rake'
|
15
|
+
|
16
|
+
desc 'Default: run unit tests.'
|
17
|
+
task :default => :test
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path("../lib/geokit-rails3-1beta/version", __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "geokit-rails3-1beta"
|
6
|
+
s.version = GeokitRails31Beta::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Bruno S. Barros"]
|
9
|
+
s.email = ["bkether@gmail.com"]
|
10
|
+
s.homepage = "http://github.com/bkether/geokit-rails3-1beta"
|
11
|
+
s.summary = "Integrate Geokit with Rails 3.1.beta1"
|
12
|
+
s.description = "Port of the Rails plugin \"geokit-rails\" to Rails 3.1.beta1, as a gem"
|
13
|
+
|
14
|
+
s.required_rubygems_version = ">= 1.3.6"
|
15
|
+
# s.rubyforge_project = "test_gem"
|
16
|
+
|
17
|
+
s.add_runtime_dependency 'rails', '~> 3.1.0.beta1'
|
18
|
+
s.add_runtime_dependency 'geokit', '~> 1.5.0'
|
19
|
+
|
20
|
+
s.add_development_dependency "bundler", "~> 1.0.0"
|
21
|
+
s.add_development_dependency "rcov", "~> 0.9.9"
|
22
|
+
s.add_development_dependency "mocha", "~> 0.9.8"
|
23
|
+
s.add_development_dependency "mysql", "~> 2.8.1"
|
24
|
+
s.add_development_dependency "mysql2", "~> 0.2.6"
|
25
|
+
s.add_development_dependency "pg", "~> 0.10.0"
|
26
|
+
|
27
|
+
s.files = `git ls-files`.split("\n")
|
28
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
29
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
30
|
+
s.require_paths = ["lib"]
|
31
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'geokit'
|
2
|
+
|
3
|
+
require 'geokit-rails3-1beta/railtie'
|
4
|
+
require 'geokit-rails3-1beta/core_extensions'
|
5
|
+
|
6
|
+
require 'geokit-rails3-1beta/defaults'
|
7
|
+
require 'geokit-rails3-1beta/adapters/abstract'
|
8
|
+
require 'geokit-rails3-1beta/acts_as_mappable'
|
9
|
+
require 'geokit-rails3-1beta/geocoder_control'
|
10
|
+
require 'geokit-rails3-1beta/ip_geocode_lookup'
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'geokit-rails3'
|
1
|
+
require 'geokit-rails3-1beta'
|
2
2
|
require 'rails'
|
3
3
|
|
4
4
|
module Geokit
|
@@ -8,14 +8,14 @@ module Geokit
|
|
8
8
|
config.geokit = ActiveSupport::OrderedOptions.new
|
9
9
|
config.geokit.geocoders = ActiveSupport::OrderedOptions.new
|
10
10
|
|
11
|
-
initializer 'geokit-rails3.insert_into_active_record' do
|
11
|
+
initializer 'geokit-rails3-1beta.insert_into_active_record' do
|
12
12
|
ActiveSupport.on_load :active_record do
|
13
13
|
ActiveRecord::Base.send(:include, Geokit::ActsAsMappable::Glue)
|
14
14
|
Geokit::Geocoders.logger = ActiveRecord::Base.logger
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
initializer 'geokit-rails3.insert_into_action_controller' do
|
18
|
+
initializer 'geokit-rails3-1beta.insert_into_action_controller' do
|
19
19
|
ActiveSupport.on_load :action_controller do
|
20
20
|
ActionController::Base.send(:include, Geokit::GeocoderControl)
|
21
21
|
ActionController::Base.send(:include, GeoKit::IpGeocodeLookup)
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: geokit-rails3-1beta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease: 6
|
5
|
-
version: 0.
|
5
|
+
version: 0.3.1.beta1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Bruno S. Barros
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-16 00:00:00 -03:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -101,7 +101,7 @@ dependencies:
|
|
101
101
|
version: 0.10.0
|
102
102
|
type: :development
|
103
103
|
version_requirements: *id008
|
104
|
-
description: Port of the Rails plugin "geokit-rails" to Rails 3.1, as a gem
|
104
|
+
description: Port of the Rails plugin "geokit-rails" to Rails 3.1.beta1, as a gem
|
105
105
|
email:
|
106
106
|
- bkether@gmail.com
|
107
107
|
executables: []
|
@@ -111,45 +111,26 @@ extensions: []
|
|
111
111
|
extra_rdoc_files: []
|
112
112
|
|
113
113
|
files:
|
114
|
-
-
|
115
|
-
-
|
116
|
-
-
|
117
|
-
-
|
118
|
-
-
|
119
|
-
-
|
120
|
-
- lib/geokit-rails3
|
121
|
-
- lib/geokit-rails3/
|
122
|
-
- lib/geokit-rails3/
|
123
|
-
- lib/geokit-rails3/
|
124
|
-
- lib/geokit-rails3/
|
125
|
-
- lib/geokit-rails3/
|
126
|
-
- lib/geokit-rails3/
|
127
|
-
- lib/geokit-rails3.rb
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
-
|
132
|
-
-
|
133
|
-
-
|
134
|
-
- test/fixtures/mock_addresses.yml
|
135
|
-
- test/fixtures/mock_families.yml
|
136
|
-
- test/fixtures/mock_houses.yml
|
137
|
-
- test/fixtures/mock_organizations.yml
|
138
|
-
- test/fixtures/mock_people.yml
|
139
|
-
- test/fixtures/stores.yml
|
140
|
-
- test/ip_geocode_lookup_test.disabled.rb
|
141
|
-
- test/models/company.rb
|
142
|
-
- test/models/custom_location.rb
|
143
|
-
- test/models/location.rb
|
144
|
-
- test/models/mock_address.rb
|
145
|
-
- test/models/mock_family.rb
|
146
|
-
- test/models/mock_house.rb
|
147
|
-
- test/models/mock_organization.rb
|
148
|
-
- test/models/mock_person.rb
|
149
|
-
- test/models/store.rb
|
150
|
-
- test/schema.rb
|
151
|
-
- test/tasks.rake
|
152
|
-
- test/test_helper.rb
|
114
|
+
- CONFIG.markdown
|
115
|
+
- Gemfile
|
116
|
+
- MIT-LICENSE
|
117
|
+
- README.markdown
|
118
|
+
- Rakefile
|
119
|
+
- geokit-rails3-1beta.gemspec
|
120
|
+
- lib/geokit-rails3-1beta.rb
|
121
|
+
- lib/geokit-rails3-1beta/acts_as_mappable.old.rb
|
122
|
+
- lib/geokit-rails3-1beta/acts_as_mappable.rb
|
123
|
+
- lib/geokit-rails3-1beta/adapters/abstract.rb
|
124
|
+
- lib/geokit-rails3-1beta/adapters/mysql.rb
|
125
|
+
- lib/geokit-rails3-1beta/adapters/mysql2.rb
|
126
|
+
- lib/geokit-rails3-1beta/adapters/postgresql.rb
|
127
|
+
- lib/geokit-rails3-1beta/adapters/sqlserver.rb
|
128
|
+
- lib/geokit-rails3-1beta/core_extensions.rb
|
129
|
+
- lib/geokit-rails3-1beta/defaults.rb
|
130
|
+
- lib/geokit-rails3-1beta/geocoder_control.rb
|
131
|
+
- lib/geokit-rails3-1beta/ip_geocode_lookup.rb
|
132
|
+
- lib/geokit-rails3-1beta/railtie.rb
|
133
|
+
- lib/geokit-rails3-1beta/version.rb
|
153
134
|
has_rdoc: true
|
154
135
|
homepage: http://github.com/bkether/geokit-rails3-1beta
|
155
136
|
licenses: []
|
@@ -177,30 +158,6 @@ rubyforge_project:
|
|
177
158
|
rubygems_version: 1.5.0
|
178
159
|
signing_key:
|
179
160
|
specification_version: 3
|
180
|
-
summary: Integrate Geokit with Rails 3.1
|
181
|
-
test_files:
|
182
|
-
|
183
|
-
- test/boot.rb
|
184
|
-
- test/database.yml
|
185
|
-
- test/fixtures/companies.yml
|
186
|
-
- test/fixtures/custom_locations.yml
|
187
|
-
- test/fixtures/locations.yml
|
188
|
-
- test/fixtures/mock_addresses.yml
|
189
|
-
- test/fixtures/mock_families.yml
|
190
|
-
- test/fixtures/mock_houses.yml
|
191
|
-
- test/fixtures/mock_organizations.yml
|
192
|
-
- test/fixtures/mock_people.yml
|
193
|
-
- test/fixtures/stores.yml
|
194
|
-
- test/ip_geocode_lookup_test.disabled.rb
|
195
|
-
- test/models/company.rb
|
196
|
-
- test/models/custom_location.rb
|
197
|
-
- test/models/location.rb
|
198
|
-
- test/models/mock_address.rb
|
199
|
-
- test/models/mock_family.rb
|
200
|
-
- test/models/mock_house.rb
|
201
|
-
- test/models/mock_organization.rb
|
202
|
-
- test/models/mock_person.rb
|
203
|
-
- test/models/store.rb
|
204
|
-
- test/schema.rb
|
205
|
-
- test/tasks.rake
|
206
|
-
- test/test_helper.rb
|
161
|
+
summary: Integrate Geokit with Rails 3.1.beta1
|
162
|
+
test_files: []
|
163
|
+
|
data/lib/geokit-rails3.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'geokit'
|
2
|
-
|
3
|
-
require 'geokit-rails3/railtie'
|
4
|
-
require 'geokit-rails3/core_extensions'
|
5
|
-
|
6
|
-
require 'geokit-rails3/defaults'
|
7
|
-
require 'geokit-rails3/adapters/abstract'
|
8
|
-
require 'geokit-rails3/acts_as_mappable'
|
9
|
-
require 'geokit-rails3/geocoder_control'
|
10
|
-
require 'geokit-rails3/ip_geocode_lookup'
|
@@ -1,420 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
Geokit::Geocoders::provider_order = [:google, :us]
|
4
|
-
|
5
|
-
class ActsAsMappableTest < GeokitTestCase
|
6
|
-
|
7
|
-
LOCATION_A_IP = "217.10.83.5"
|
8
|
-
|
9
|
-
def setup
|
10
|
-
@location_a = GeoKit::GeoLoc.new
|
11
|
-
@location_a.lat = 32.918593
|
12
|
-
@location_a.lng = -96.958444
|
13
|
-
@location_a.city = "Irving"
|
14
|
-
@location_a.state = "TX"
|
15
|
-
@location_a.country_code = "US"
|
16
|
-
@location_a.success = true
|
17
|
-
|
18
|
-
@sw = GeoKit::LatLng.new(32.91663,-96.982841)
|
19
|
-
@ne = GeoKit::LatLng.new(32.96302,-96.919495)
|
20
|
-
@bounds_center=GeoKit::LatLng.new((@sw.lat+@ne.lat)/2,(@sw.lng+@ne.lng)/2)
|
21
|
-
|
22
|
-
@starbucks = companies(:starbucks)
|
23
|
-
@loc_a = locations(:a)
|
24
|
-
@custom_loc_a = custom_locations(:a)
|
25
|
-
@loc_e = locations(:e)
|
26
|
-
@custom_loc_e = custom_locations(:e)
|
27
|
-
|
28
|
-
@barnes_and_noble = mock_organizations(:barnes_and_noble)
|
29
|
-
@address = mock_addresses(:address_barnes_and_noble)
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_override_default_units_the_hard_way
|
33
|
-
Location.default_units = :kms
|
34
|
-
locations = Location.geo_scope(:origin => @loc_a).where("distance < 3.97")
|
35
|
-
assert_equal 5, locations.all.size
|
36
|
-
assert_equal 5, locations.count
|
37
|
-
Location.default_units = :miles
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_include
|
41
|
-
locations = Location.geo_scope(:origin => @loc_a).includes(:company).where("company_id = 1").all
|
42
|
-
assert !locations.empty?
|
43
|
-
assert_equal 1, locations[0].company.id
|
44
|
-
assert_equal 'Starbucks', locations[0].company.name
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_distance_between_geocoded
|
48
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with("Irving, TX").returns(@location_a)
|
49
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with("San Francisco, CA").returns(@location_a)
|
50
|
-
assert_equal 0, Location.distance_between("Irving, TX", "San Francisco, CA")
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_distance_to_geocoded
|
54
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with("Irving, TX").returns(@location_a)
|
55
|
-
assert_equal 0, @custom_loc_a.distance_to("Irving, TX")
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_distance_to_geocoded_error
|
59
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with("Irving, TX").returns(GeoKit::GeoLoc.new)
|
60
|
-
assert_raise(GeoKit::Geocoders::GeocodeError) { @custom_loc_a.distance_to("Irving, TX") }
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_custom_attributes_distance_calculations
|
64
|
-
assert_equal 0, @custom_loc_a.distance_to(@loc_a)
|
65
|
-
assert_equal 0, CustomLocation.distance_between(@custom_loc_a, @loc_a)
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_distance_column_in_select
|
69
|
-
locations = Location.geo_scope(:origin => @loc_a).order("distance ASC")
|
70
|
-
assert_equal 6, locations.all.size
|
71
|
-
assert_equal 0, @loc_a.distance_to(locations.first)
|
72
|
-
assert_in_delta 3.97, @loc_a.distance_to(locations.last, :units => :miles, :formula => :sphere), 0.01
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_find_with_distance_condition
|
76
|
-
locations = Location.geo_scope(:origin => @loc_a, :within => 3.97)
|
77
|
-
assert_equal 5, locations.all.size
|
78
|
-
assert_equal 5, locations.count
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_find_with_distance_condition_with_units_override
|
82
|
-
locations = Location.geo_scope(:origin => @loc_a, :units => :kms, :within => 6.387)
|
83
|
-
assert_equal 5, locations.all.size
|
84
|
-
assert_equal 5, locations.count
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_find_with_distance_condition_with_formula_override
|
88
|
-
locations = Location.geo_scope(:origin => @loc_a, :formula => :flat, :within => 6.387)
|
89
|
-
assert_equal 6, locations.all.size
|
90
|
-
assert_equal 6, locations.count
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_find_within
|
94
|
-
locations = Location.within(3.97, :origin => @loc_a)
|
95
|
-
assert_equal 5, locations.all.size
|
96
|
-
assert_equal 5, locations.count
|
97
|
-
end
|
98
|
-
|
99
|
-
def test_find_within_with_coordinates
|
100
|
-
locations = Location.within(3.97, :origin =>[@loc_a.lat,@loc_a.lng])
|
101
|
-
assert_equal 5, locations.all.size
|
102
|
-
assert_equal 5, locations.count
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_find_with_compound_condition
|
106
|
-
locations = Location.geo_scope(:origin => @loc_a).where("distance < 5 and city = 'Coppell'")
|
107
|
-
assert_equal 2, locations.all.size
|
108
|
-
assert_equal 2, locations.count
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_find_with_secure_compound_condition
|
112
|
-
locations = Location.geo_scope(:origin => @loc_a).where(["distance < ? and city = ?", 5, 'Coppell'])
|
113
|
-
assert_equal 2, locations.all.size
|
114
|
-
assert_equal 2, locations.count
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_find_beyond
|
118
|
-
locations = Location.beyond(3.95, :origin => @loc_a)
|
119
|
-
assert_equal 1, locations.all.size
|
120
|
-
assert_equal 1, locations.count
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_find_beyond_with_token
|
124
|
-
# locations = Location.find(:all, :beyond => 3.95, :origin => @loc_a)
|
125
|
-
locations = Location.geo_scope(:beyond => 3.95, :origin => @loc_a)
|
126
|
-
assert_equal 1, locations.all.size
|
127
|
-
assert_equal 1, locations.count
|
128
|
-
end
|
129
|
-
|
130
|
-
def test_find_beyond_with_coordinates
|
131
|
-
locations = Location.beyond(3.95, :origin =>[@loc_a.lat, @loc_a.lng])
|
132
|
-
assert_equal 1, locations.all.size
|
133
|
-
assert_equal 1, locations.count
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_find_range_with_token
|
137
|
-
locations = Location.geo_scope(:range => 0..10, :origin => @loc_a)
|
138
|
-
assert_equal 6, locations.all.size
|
139
|
-
assert_equal 6, locations.count
|
140
|
-
end
|
141
|
-
|
142
|
-
def test_find_range_with_token_with_conditions
|
143
|
-
locations = Location.geo_scope(:origin => @loc_a, :range => 0..10).where(["city = ?", 'Coppell'])
|
144
|
-
assert_equal 2, locations.all.size
|
145
|
-
assert_equal 2, locations.count
|
146
|
-
end
|
147
|
-
|
148
|
-
def test_find_range_with_token_with_hash_conditions
|
149
|
-
locations = Location.geo_scope(:origin => @loc_a, :range => 0..10).where(:city => 'Coppell')
|
150
|
-
assert_equal 2, locations.all.size
|
151
|
-
assert_equal 2, locations.count
|
152
|
-
end
|
153
|
-
|
154
|
-
def test_find_range_with_token_excluding_end
|
155
|
-
locations = Location.geo_scope(:range => 0...10, :origin => @loc_a)
|
156
|
-
assert_equal 6, locations.all.size
|
157
|
-
assert_equal 6, locations.count
|
158
|
-
end
|
159
|
-
|
160
|
-
def test_find_nearest
|
161
|
-
assert_equal @loc_a, Location.nearest(:origin => @loc_a).first
|
162
|
-
end
|
163
|
-
|
164
|
-
def test_find_nearest_with_coordinates
|
165
|
-
assert_equal @loc_a, Location.nearest(:origin =>[@loc_a.lat, @loc_a.lng]).first
|
166
|
-
end
|
167
|
-
|
168
|
-
def test_find_farthest
|
169
|
-
assert_equal @loc_e, Location.farthest(:origin => @loc_a).first
|
170
|
-
end
|
171
|
-
|
172
|
-
def test_find_farthest_with_coordinates
|
173
|
-
assert_equal @loc_e, Location.farthest(:origin =>[@loc_a.lat, @loc_a.lng]).first
|
174
|
-
end
|
175
|
-
|
176
|
-
def test_scoped_distance_column_in_select
|
177
|
-
locations = @starbucks.locations.geo_scope(:origin => @loc_a).order("distance ASC")
|
178
|
-
assert_equal 5, locations.all.size
|
179
|
-
assert_equal 0, @loc_a.distance_to(locations.first)
|
180
|
-
assert_in_delta 3.97, @loc_a.distance_to(locations.last, :units => :miles, :formula => :sphere), 0.01
|
181
|
-
end
|
182
|
-
|
183
|
-
def test_scoped_find_with_distance_condition
|
184
|
-
locations = @starbucks.locations.geo_scope(:origin => @loc_a).where("distance < 3.97")
|
185
|
-
assert_equal 4, locations.all.size
|
186
|
-
assert_equal 4, locations.count
|
187
|
-
end
|
188
|
-
|
189
|
-
def test_scoped_find_within
|
190
|
-
locations = @starbucks.locations.within(3.97, :origin => @loc_a)
|
191
|
-
assert_equal 4, locations.all.size
|
192
|
-
assert_equal 4, locations.count
|
193
|
-
end
|
194
|
-
|
195
|
-
def test_scoped_find_with_compound_condition
|
196
|
-
locations = @starbucks.locations.geo_scope(:origin => @loc_a).where("distance < 5 and city = 'Coppell'")
|
197
|
-
assert_equal 2, locations.all.size
|
198
|
-
assert_equal 2, locations.count
|
199
|
-
end
|
200
|
-
|
201
|
-
def test_scoped_find_beyond
|
202
|
-
locations = @starbucks.locations.beyond(3.95, :origin => @loc_a)
|
203
|
-
assert_equal 1, locations.all.size
|
204
|
-
assert_equal 1, locations.count
|
205
|
-
end
|
206
|
-
|
207
|
-
def test_scoped_find_nearest
|
208
|
-
assert_equal @loc_a, @starbucks.locations.nearest(:origin => @loc_a).first
|
209
|
-
end
|
210
|
-
|
211
|
-
def test_scoped_find_farthest
|
212
|
-
assert_equal @loc_e, @starbucks.locations.farthest(:origin => @loc_a).first
|
213
|
-
end
|
214
|
-
|
215
|
-
def test_ip_geocoded_distance_column_in_select
|
216
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
217
|
-
locations = Location.geo_scope(:origin => LOCATION_A_IP).order("distance ASC")
|
218
|
-
assert_equal 6, locations.all.size
|
219
|
-
assert_equal 0, @loc_a.distance_to(locations.first)
|
220
|
-
assert_in_delta 3.97, @loc_a.distance_to(locations.last, :units => :miles, :formula => :sphere), 0.01
|
221
|
-
end
|
222
|
-
|
223
|
-
def test_ip_geocoded_find_with_distance_condition
|
224
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
225
|
-
locations = Location.geo_scope(:origin => LOCATION_A_IP).where2("distance < 3.97")
|
226
|
-
assert_equal 5, locations.all.size
|
227
|
-
assert_equal 5, locations.count
|
228
|
-
end
|
229
|
-
|
230
|
-
def test_ip_geocoded_find_within
|
231
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
232
|
-
locations = Location.within(3.97, :origin => LOCATION_A_IP)
|
233
|
-
assert_equal 5, locations.all.size
|
234
|
-
assert_equal 5, locations.count
|
235
|
-
end
|
236
|
-
|
237
|
-
def test_ip_geocoded_find_with_compound_condition
|
238
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
239
|
-
locations = Location.geo_scope(:origin => LOCATION_A_IP).where("distance < 5 and city = 'Coppell'")
|
240
|
-
assert_equal 2, locations.all.size
|
241
|
-
assert_equal 2, locations.count
|
242
|
-
end
|
243
|
-
|
244
|
-
def test_ip_geocoded_find_with_secure_compound_condition
|
245
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
246
|
-
locations = Location.geo_scope(:origin => LOCATION_A_IP).where(["distance < ? and city = ?", 5, 'Coppell'])
|
247
|
-
assert_equal 2, locations.all.size
|
248
|
-
assert_equal 2, locations.count
|
249
|
-
end
|
250
|
-
|
251
|
-
def test_ip_geocoded_find_beyond
|
252
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
253
|
-
locations = Location.beyond(3.95, :origin => LOCATION_A_IP)
|
254
|
-
assert_equal 1, locations.all.size
|
255
|
-
assert_equal 1, locations.count
|
256
|
-
end
|
257
|
-
|
258
|
-
def test_ip_geocoded_find_nearest
|
259
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
260
|
-
assert_equal @loc_a, Location.nearest(:origin => LOCATION_A_IP).first
|
261
|
-
end
|
262
|
-
|
263
|
-
def test_ip_geocoded_find_farthest
|
264
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
|
265
|
-
assert_equal @loc_e, Location.farthest(:origin => LOCATION_A_IP).first
|
266
|
-
end
|
267
|
-
|
268
|
-
def test_ip_geocoder_exception
|
269
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with('127.0.0.1').returns(GeoKit::GeoLoc.new)
|
270
|
-
assert_raises GeoKit::Geocoders::GeocodeError do
|
271
|
-
Location.farthest(:origin => '127.0.0.1').first
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
|
-
def test_address_geocode
|
276
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with('Irving, TX').returns(@location_a)
|
277
|
-
locations = Location.geo_scope(:origin => 'Irving, TX').where(["distance < ? and city = ?", 5, 'Coppell'])
|
278
|
-
assert_equal 2, locations.all.size
|
279
|
-
assert_equal 2, locations.count
|
280
|
-
end
|
281
|
-
|
282
|
-
def test_find_with_custom_distance_condition
|
283
|
-
locations = CustomLocation.geo_scope(:origin => @loc_a).where("dist < 3.97")
|
284
|
-
assert_equal 5, locations.all.size
|
285
|
-
assert_equal 5, locations.count
|
286
|
-
end
|
287
|
-
|
288
|
-
def test_find_with_custom_distance_condition_using_custom_origin
|
289
|
-
locations = CustomLocation.geo_scope(:origin => @custom_loc_a).where("dist < 3.97")
|
290
|
-
assert_equal 5, locations.all.size
|
291
|
-
locations = CustomLocation.count(:origin => @custom_loc_a).where("dist < 3.97")
|
292
|
-
assert_equal 5, locations.count
|
293
|
-
end
|
294
|
-
|
295
|
-
def test_find_within_with_custom
|
296
|
-
locations = CustomLocation.within(3.97, :origin => @loc_a)
|
297
|
-
assert_equal 5, locations.all.size
|
298
|
-
assert_equal 5, locations.count
|
299
|
-
end
|
300
|
-
|
301
|
-
def test_find_within_with_coordinates_with_custom
|
302
|
-
locations = CustomLocation.within(3.97, :origin =>[@loc_a.lat, @loc_a.lng])
|
303
|
-
assert_equal 5, locations.all.size
|
304
|
-
assert_equal 5, locations.count
|
305
|
-
end
|
306
|
-
|
307
|
-
def test_find_with_compound_condition_with_custom
|
308
|
-
locations = CustomLocation.geo_scope(:origin => @loc_a).where("dist < 5 and city = 'Coppell'")
|
309
|
-
assert_equal 1, locations.all.size
|
310
|
-
assert_equal 1, locations.count
|
311
|
-
end
|
312
|
-
|
313
|
-
def test_find_with_secure_compound_condition_with_custom
|
314
|
-
locations = CustomLocation.geo_scope(:origin => @loc_a).where(["dist < ? and city = ?", 5, 'Coppell'])
|
315
|
-
assert_equal 1, locations.all.size
|
316
|
-
assert_equal 1, locations.count
|
317
|
-
end
|
318
|
-
|
319
|
-
def test_find_beyond_with_custom
|
320
|
-
locations = CustomLocation.beyond(3.95, :origin => @loc_a)
|
321
|
-
assert_equal 1, locations.all.size
|
322
|
-
assert_equal 1, locations.count
|
323
|
-
end
|
324
|
-
|
325
|
-
def test_find_beyond_with_coordinates_with_custom
|
326
|
-
locations = CustomLocation.beyond(3.95, :origin =>[@loc_a.lat, @loc_a.lng])
|
327
|
-
assert_equal 1, locations.all.size
|
328
|
-
assert_equal 1, locations.count
|
329
|
-
end
|
330
|
-
|
331
|
-
def test_find_nearest_with_custom
|
332
|
-
assert_equal @custom_loc_a, CustomLocation.nearest(:origin => @loc_a).first
|
333
|
-
end
|
334
|
-
|
335
|
-
def test_find_nearest_with_coordinates_with_custom
|
336
|
-
assert_equal @custom_loc_a, CustomLocation.nearest(:origin =>[@loc_a.lat, @loc_a.lng]).first
|
337
|
-
end
|
338
|
-
|
339
|
-
def test_find_farthest_with_custom
|
340
|
-
assert_equal @custom_loc_e, CustomLocation.farthest(:origin => @loc_a).first
|
341
|
-
end
|
342
|
-
|
343
|
-
def test_find_farthest_with_coordinates_with_custom
|
344
|
-
assert_equal @custom_loc_e, CustomLocation.farthest(:origin =>[@loc_a.lat, @loc_a.lng]).first
|
345
|
-
end
|
346
|
-
|
347
|
-
def test_find_with_array_origin
|
348
|
-
locations = Location.geo_scope(:origin =>[@loc_a.lat,@loc_a.lng]).where("distance < 3.97")
|
349
|
-
assert_equal 5, locations.all.size
|
350
|
-
assert_equal 5, locations.count
|
351
|
-
end
|
352
|
-
|
353
|
-
|
354
|
-
# Bounding box tests
|
355
|
-
|
356
|
-
def test_find_within_bounds
|
357
|
-
locations = Location.in_bounds([@sw,@ne])
|
358
|
-
assert_equal 2, locations.all.size
|
359
|
-
assert_equal 2, locations.count
|
360
|
-
end
|
361
|
-
|
362
|
-
def test_find_within_bounds_ordered_by_distance
|
363
|
-
locations = Location.in_bounds([@sw,@ne], :origin=>@bounds_center).order('distance asc')
|
364
|
-
assert_equal locations[0], locations(:d)
|
365
|
-
assert_equal locations[1], locations(:a)
|
366
|
-
end
|
367
|
-
|
368
|
-
def test_find_within_bounds_with_token
|
369
|
-
locations = Location.geo_scope(:bounds=>[@sw,@ne])
|
370
|
-
assert_equal 2, locations.all.size
|
371
|
-
assert_equal 2, locations.count
|
372
|
-
end
|
373
|
-
|
374
|
-
def test_find_within_bounds_with_string_conditions
|
375
|
-
locations = Location.geo_scope(:bounds=>[@sw,@ne]).where("id !=#{locations(:a).id}")
|
376
|
-
assert_equal 1, locations.all.size
|
377
|
-
end
|
378
|
-
|
379
|
-
def test_find_within_bounds_with_array_conditions
|
380
|
-
locations = Location.geo_scope(:bounds=>[@sw,@ne]).where(["id != ?", locations(:a).id])
|
381
|
-
assert_equal 1, locations.all.size
|
382
|
-
end
|
383
|
-
|
384
|
-
def test_find_within_bounds_with_hash_conditions
|
385
|
-
locations = Location.geo_scope(:bounds=>[@sw,@ne]).where({:id => locations(:a).id})
|
386
|
-
assert_equal 1, locations.all.size
|
387
|
-
end
|
388
|
-
|
389
|
-
def test_auto_geocode
|
390
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with("Irving, TX").returns(@location_a)
|
391
|
-
store=Store.new(:address=>'Irving, TX')
|
392
|
-
store.save
|
393
|
-
assert_equal store.lat,@location_a.lat
|
394
|
-
assert_equal store.lng,@location_a.lng
|
395
|
-
assert_equal 0, store.errors.size
|
396
|
-
end
|
397
|
-
|
398
|
-
def test_auto_geocode_failure
|
399
|
-
GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with("BOGUS").returns(GeoKit::GeoLoc.new)
|
400
|
-
store=Store.new(:address=>'BOGUS')
|
401
|
-
store.save
|
402
|
-
assert store.new_record?
|
403
|
-
assert_equal 1, store.errors.size
|
404
|
-
end
|
405
|
-
|
406
|
-
# Test :through
|
407
|
-
|
408
|
-
def test_find_with_through
|
409
|
-
organizations = MockOrganization.geo_scope(:origin => @location_a).order('distance ASC')
|
410
|
-
assert_equal 2, organizations.all.size
|
411
|
-
organizations = MockOrganization.geo_scope(:origin => @location_a).where("distance < 3.97")
|
412
|
-
assert_equal 1, organizations.count
|
413
|
-
end
|
414
|
-
|
415
|
-
def test_find_with_through_with_hash
|
416
|
-
people = MockPerson.geo_scope(:origin => @location_a).order('distance ASC')
|
417
|
-
assert_equal 2, people.size
|
418
|
-
assert_equal 2, people
|
419
|
-
end
|
420
|
-
end
|