geokit-rails 2.0.0.rc1 → 2.0.0

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.

Potentially problematic release.


This version of geokit-rails might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZjMwNjUzNmI4NzQ5M2Q2NTZiZGEwZTFkZDFlNjQ0MWE5Mzk1OGJkMQ==
4
+ NDM3YThmODQ4MTE4ZDFlNWJjN2UxNmY2N2Q1NzcxODYxM2E0OTA2Mg==
5
5
  data.tar.gz: !binary |-
6
- N2E4MTgzZDk4YmVkNzIyMDg0N2RiOTMyMzdhYzgxNGVkMDZmZDgyOQ==
6
+ ZDUxYzUyMWExNzNiMDBkZWJjMTRkOWI1NzExNTY3NTM3Zjk2NDRjZg==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NjE3ZWE2ZGY4MzkxOWFmOTc3N2RiM2U3ZTVmODdjOTQwNDgyYTQ4YjRkM2Y4
10
- NmJkOWViMjUyN2I2NDcwMzBmOWUwYWE4ZmIzMGVhMGViNDFkMTRkZWI5YjNh
11
- YTI4NjAyYzc4MGEwOGY2NWI1MjJhMDBkOTZiMjJkOWE4NWYxZDg=
9
+ ZGYwMTc5MWZjYTk0YmFjNTJhZGYyNTE0MjAyZmM1ZjhlYjViNTEzMWIzNmVk
10
+ NGVkMmFjMjQ0NjA3NjJhYWIzMzQyYTI3OTBmZjFkYWQxOGE3ODg0NzI2OTc1
11
+ MjliZmFkYTk0YjM4MTFkZDFmZDBhNWU2YjAzNjg3MDdiNWE1OTk=
12
12
  data.tar.gz: !binary |-
13
- MDQ1MDY2N2JjNjhkMzRiZjdhMDljMzUyNGI4NDU5YzNjMDdkNjcyNzcyN2Q2
14
- YTBmODg3NWU3YzhiNWFkMjA1YzU3N2VmOTQ1MzdmNTE4M2RjZjljY2MwOTMz
15
- YTQzOWY0ZGUwNDI5NWVmMjBjNjJiZmIwNjQ2MzZjNzk5NmM5NmY=
13
+ OTFiYTJiZmRhZTRiMTA1NjEyNDYyODU2ZWQwZDlhY2FkODQ4YzNlYTdkN2Y2
14
+ YWQ0NjkyYjg4ZjgwODdjMjMxNzM4ODk3NzQyODk3MjA0MzJlODYwNDk4YjFm
15
+ OTU3YWZlM2JmOGU1ODE1YzIyNjcyNTg0MmZjZjU2MGE3OGQwNjc=
@@ -53,33 +53,33 @@ module Geokit
53
53
  end
54
54
  end # Glue
55
55
 
56
- class Relation < ActiveRecord::Relation
57
- attr_accessor :distance_formula
58
-
59
- def where(opts, *rest)
60
- return self if opts.blank?
61
- relation = clone
62
- where_values = build_where(opts, rest)
63
- relation.where_values += substitute_distance_in_values(where_values)
64
- relation
65
- end
66
-
67
- def order(*args)
68
- return self if args.blank?
69
- relation = clone
70
- order_values = args.flatten
71
- relation.order_values += substitute_distance_in_values(order_values)
72
- relation
73
- end
74
-
75
- private
76
- def substitute_distance_in_values(values)
77
- return values unless @distance_formula
78
- # substitute distance with the actual distance equation
79
- pattern = Regexp.new("\\b#{@klass.distance_column_name}\\b")
80
- values.map {|value| value.is_a?(String) ? value.gsub(pattern, @distance_formula) : value }
81
- end
82
- end
56
+ #class Relation < ActiveRecord::Relation
57
+ # attr_accessor :distance_formula
58
+
59
+ # def where(opts, *rest)
60
+ # return self if opts.blank?
61
+ # relation = clone
62
+ # where_values = build_where(opts, rest)
63
+ # relation.where_values += substitute_distance_in_values(where_values)
64
+ # relation
65
+ # end
66
+
67
+ # def order(*args)
68
+ # return self if args.blank?
69
+ # relation = clone
70
+ # order_values = args.flatten
71
+ # relation.order_values += substitute_distance_in_values(order_values)
72
+ # relation
73
+ # end
74
+
75
+ #private
76
+ # def substitute_distance_in_values(values)
77
+ # return values unless @distance_formula
78
+ # # substitute distance with the actual distance equation
79
+ # pattern = Regexp.new("\\b#{@klass.distance_column_name}\\b")
80
+ # values.map {|value| value.is_a?(String) ? value.gsub(pattern, @distance_formula) : value }
81
+ # end
82
+ #end
83
83
 
84
84
  extend ActiveSupport::Concern
85
85
 
@@ -104,28 +104,40 @@ module Geokit
104
104
 
105
105
  def within(distance, options = {})
106
106
  options[:within] = distance
107
- geo_scope(options)
107
+ #geo_scope(options)
108
+ where(distance_conditions(options))
108
109
  end
109
110
  alias inside within
110
111
 
111
112
  def beyond(distance, options = {})
112
113
  options[:beyond] = distance
113
- geo_scope(options)
114
+ #geo_scope(options)
115
+ where(distance_conditions(options))
114
116
  end
115
117
  alias outside beyond
116
118
 
117
119
  def in_range(range, options = {})
118
120
  options[:range] = range
119
- geo_scope(options)
121
+ #geo_scope(options)
122
+ where(distance_conditions(options))
120
123
  end
121
124
 
122
125
  def in_bounds(bounds, options = {})
123
126
  options[:bounds] = bounds
124
- geo_scope(options)
127
+ #geo_scope(options)
128
+ #where(distance_conditions(options))
129
+ bounds = extract_bounds_from_options(options)
130
+ where(bound_conditions(bounds))
125
131
  end
126
132
 
127
133
  def by_distance(options = {})
128
- geo_scope(options).order("#{distance_column_name} asc")
134
+ origin = extract_origin_from_options(options)
135
+ units = extract_units_from_options(options)
136
+ formula = extract_formula_from_options(options)
137
+ bounds = extract_bounds_from_options(options)
138
+ distance_column_name = distance_sql(origin, units, formula)
139
+ #geo_scope(options).order("#{distance_column_name} asc")
140
+ order("#{distance_column_name} asc")
129
141
  end
130
142
 
131
143
  def closest(options = {})
@@ -137,41 +149,41 @@ module Geokit
137
149
  by_distance(options).last(1)
138
150
  end
139
151
 
140
- def geo_scope(options = {})
141
- arel = self.is_a?(ActiveRecord::Relation) ? self : self.scoped
152
+ #def geo_scope(options = {})
153
+ # arel = self.is_a?(ActiveRecord::Relation) ? self : self.scoped
142
154
 
143
- origin = extract_origin_from_options(options)
144
- units = extract_units_from_options(options)
145
- formula = extract_formula_from_options(options)
146
- bounds = extract_bounds_from_options(options)
155
+ # origin = extract_origin_from_options(options)
156
+ # units = extract_units_from_options(options)
157
+ # formula = extract_formula_from_options(options)
158
+ # bounds = extract_bounds_from_options(options)
147
159
 
148
- if origin || bounds
149
- bounds = formulate_bounds_from_distance(options, origin, units) unless bounds
160
+ # if origin || bounds
161
+ # bounds = formulate_bounds_from_distance(options, origin, units) unless bounds
150
162
 
151
- if origin
152
- arel.distance_formula = distance_sql(origin, units, formula)
153
-
154
- if arel.select_values.blank?
155
- star_select = Arel::SqlLiteral.new(arel.quoted_table_name + '.*')
156
- arel = arel.select(star_select)
157
- end
158
- end
163
+ # if origin
164
+ # arel.distance_formula = distance_sql(origin, units, formula)
165
+ #
166
+ # if arel.select_values.blank?
167
+ # star_select = Arel::SqlLiteral.new(arel.quoted_table_name + '.*')
168
+ # arel = arel.select(star_select)
169
+ # end
170
+ # end
159
171
 
160
- if bounds
161
- bound_conditions = bound_conditions(bounds)
162
- arel = arel.where(bound_conditions) if bound_conditions
163
- end
172
+ # if bounds
173
+ # bound_conditions = bound_conditions(bounds)
174
+ # arel = arel.where(bound_conditions) if bound_conditions
175
+ # end
164
176
 
165
- distance_conditions = distance_conditions(options)
166
- arel = arel.where(distance_conditions) if distance_conditions
177
+ # distance_conditions = distance_conditions(options)
178
+ # arel = arel.where(distance_conditions) if distance_conditions
167
179
 
168
- if self.through
169
- arel = arel.includes(self.through)
170
- end
171
- end
180
+ # if self.through
181
+ # arel = arel.includes(self.through)
182
+ # end
183
+ # end
172
184
 
173
- arel
174
- end
185
+ # arel
186
+ #end
175
187
 
176
188
  # Returns the distance calculation to be used as a display column or a condition. This
177
189
  # is provide for anyone wanting access to the raw SQL.
@@ -189,12 +201,12 @@ module Geokit
189
201
 
190
202
  # Override ActiveRecord::Base.relation to return an instance of Geokit::ActsAsMappable::Relation.
191
203
  # TODO: Do we need to override JoinDependency#relation too?
192
- def relation
193
- # NOTE: This cannot be @relation as ActiveRecord already uses this to
194
- # cache *its* Relation object
195
- @_geokit_relation ||= Relation.new(self, arel_table)
196
- finder_needs_type_condition? ? @_geokit_relation.where(type_condition) : @_geokit_relation
197
- end
204
+ #def relation
205
+ # # NOTE: This cannot be @relation as ActiveRecord already uses this to
206
+ # # cache *its* Relation object
207
+ # @_geokit_relation ||= Relation.new(self, arel_table)
208
+ # finder_needs_type_condition? ? @_geokit_relation.where(type_condition) : @_geokit_relation
209
+ #end
198
210
 
199
211
  # If it's a :within query, add a bounding box to improve performance.
200
212
  # This only gets called if a :bounds argument is not otherwise supplied.
@@ -209,6 +221,12 @@ module Geokit
209
221
  end
210
222
 
211
223
  def distance_conditions(options)
224
+ origin = extract_origin_from_options(options)
225
+ units = extract_units_from_options(options)
226
+ formula = extract_formula_from_options(options)
227
+ bounds = extract_bounds_from_options(options)
228
+ distance_column_name = distance_sql(origin, units, formula)
229
+
212
230
  res = if options.has_key?(:within)
213
231
  "#{distance_column_name} <= #{options[:within]}"
214
232
  elsif options.has_key?(:beyond)
@@ -223,7 +241,8 @@ module Geokit
223
241
  sw,ne = bounds.sw, bounds.ne
224
242
  lng_sql = bounds.crosses_meridian? ? "(#{qualified_lng_column_name}<#{ne.lng} OR #{qualified_lng_column_name}>#{sw.lng})" : "#{qualified_lng_column_name}>#{sw.lng} AND #{qualified_lng_column_name}<#{ne.lng}"
225
243
  res = "#{qualified_lat_column_name}>#{sw.lat} AND #{qualified_lat_column_name}<#{ne.lat} AND #{lng_sql}"
226
- Arel::SqlLiteral.new("(#{res})") if res.present?
244
+ #Arel::SqlLiteral.new("(#{res})") if res.present?
245
+ res if res.present?
227
246
  end
228
247
 
229
248
  # Extracts the origin instance out of the options if it exists and returns
@@ -353,4 +372,4 @@ end # Geokit
353
372
 
354
373
 
355
374
 
356
- # ActiveRecord::Base.extend Geokit::ActsAsMappable
375
+ # ActiveRecord::Base.extend Geokit::ActsAsMappable
@@ -1,22 +1,8 @@
1
+ require 'geokit-rails/adapters/mysql'
2
+
1
3
  module Geokit
2
4
  module Adapters
3
- class Mysql2 < Abstract
4
-
5
- def sphere_distance_sql(lat, lng, multiplier)
6
- %|
7
- (ACOS(least(1,COS(#{lat})*COS(#{lng})*COS(RADIANS(#{qualified_lat_column_name}))*COS(RADIANS(#{qualified_lng_column_name}))+
8
- COS(#{lat})*SIN(#{lng})*COS(RADIANS(#{qualified_lat_column_name}))*SIN(RADIANS(#{qualified_lng_column_name}))+
9
- SIN(#{lat})*SIN(RADIANS(#{qualified_lat_column_name}))))*#{multiplier})
10
- |
11
- end
12
-
13
- def flat_distance_sql(origin, lat_degree_units, lng_degree_units)
14
- %|
15
- SQRT(POW(#{lat_degree_units}*(#{origin.lat}-#{qualified_lat_column_name}),2)+
16
- POW(#{lng_degree_units}*(#{origin.lng}-#{qualified_lng_column_name}),2))
17
- |
18
- end
19
-
5
+ class Mysql2 < MySQL
20
6
  end
21
7
  end
22
- end
8
+ end
@@ -0,0 +1,8 @@
1
+ require 'geokit-rails/adapters/mysql'
2
+
3
+ module Geokit
4
+ module Adapters
5
+ class Mysql2Spatial < MySQL
6
+ end
7
+ end
8
+ end
@@ -1,3 +1,3 @@
1
1
  module GeokitRails
2
- VERSION = "2.0.0.rc1"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -29,26 +29,18 @@ class ActsAsMappableTest < GeokitTestCase
29
29
  @address = mock_addresses(:address_barnes_and_noble)
30
30
  end
31
31
 
32
- def test_sort_by_distance_from
33
- locations = Location.all
34
- unsorted = [locations(:a), locations(:b), locations(:c), locations(:d), locations(:e), locations(:f)]
35
- sorted = [locations(:a), locations(:b), locations(:c), locations(:f), locations(:d), locations(:e)]
36
- assert_equal unsorted, locations
37
- assert_equal sorted, locations.sort_by{|l| l.distance_to(locations(:a))}
38
- assert_equal sorted, locations.sort_by_distance_from(locations(:a))
39
- assert_equal sorted, locations # last action desctructive
40
- end
41
-
42
32
  def test_override_default_units_the_hard_way
43
33
  Location.default_units = :kms
44
- locations = Location.geo_scope(:origin => @loc_a).where("distance < 3.97")
45
- assert_equal 5, locations.all.size
34
+ #locations = Location.geo_scope(:origin => @loc_a).where("distance < 3.97")
35
+ locations = Location.within(3.9, :origin => @loc_a)
36
+ assert_equal 5, locations.to_a.size
46
37
  assert_equal 5, locations.count
47
38
  Location.default_units = :miles
48
39
  end
49
40
 
50
41
  def test_include
51
- locations = Location.geo_scope(:origin => @loc_a).includes(:company).where("company_id = 1").all
42
+ #locations = Location.geo_scope(:origin => @loc_a).includes(:company).where("company_id = 1").all
43
+ locations = Location.includes(:company).where("company_id = 1").to_a
52
44
  assert !locations.empty?
53
45
  assert_equal 1, locations[0].company.id
54
46
  assert_equal 'Starbucks', locations[0].company.name
@@ -76,94 +68,102 @@ class ActsAsMappableTest < GeokitTestCase
76
68
  end
77
69
 
78
70
  def test_distance_column_in_select
79
- locations = Location.geo_scope(:origin => @loc_a).order("distance ASC")
80
- assert_equal 6, locations.all.size
71
+ #locations = Location.geo_scope(:origin => @loc_a).order("distance ASC")
72
+ locations = Location.by_distance(:origin => @loc_a)
73
+ assert_equal 6, locations.to_a.size
81
74
  assert_equal 0, @loc_a.distance_to(locations.first)
82
75
  assert_in_delta 3.97, @loc_a.distance_to(locations.last, :units => :miles, :formula => :sphere), 0.01
83
76
  end
84
77
 
85
78
  def test_find_with_distance_condition
86
- locations = Location.geo_scope(:origin => @loc_a, :within => 3.97)
87
- assert_equal 5, locations.all.size
79
+ #locations = Location.geo_scope(:origin => @loc_a, :within => 3.97)
80
+ locations = Location.within(3.97, :origin => @loc_a)
81
+ assert_equal 5, locations.to_a.size
88
82
  assert_equal 5, locations.count
89
83
  end
90
84
 
91
85
  def test_find_with_distance_condition_with_units_override
92
- locations = Location.geo_scope(:origin => @loc_a, :units => :kms, :within => 6.387)
93
- assert_equal 5, locations.all.size
86
+ #locations = Location.geo_scope(:origin => @loc_a, :units => :kms, :within => 6.387)
87
+ locations = Location.within(6.387, :origin => @loc_a, :units => :kms)
88
+ assert_equal 5, locations.to_a.size
94
89
  assert_equal 5, locations.count
95
90
  end
96
91
 
97
92
  def test_find_with_distance_condition_with_formula_override
98
- locations = Location.geo_scope(:origin => @loc_a, :formula => :flat, :within => 6.387)
99
- assert_equal 6, locations.all.size
93
+ #locations = Location.geo_scope(:origin => @loc_a, :formula => :flat, :within => 6.387)
94
+ locations = Location.within(6.387, :origin => @loc_a, :formula => :flat)
95
+ assert_equal 6, locations.to_a.size
100
96
  assert_equal 6, locations.count
101
97
  end
102
98
 
103
99
  def test_find_within
104
100
  locations = Location.within(3.97, :origin => @loc_a)
105
- assert_equal 5, locations.all.size
101
+ assert_equal 5, locations.to_a.size
106
102
  assert_equal 5, locations.count
107
103
  end
108
104
 
109
105
  def test_find_within_with_coordinates
110
106
  locations = Location.within(3.97, :origin =>[@loc_a.lat,@loc_a.lng])
111
- assert_equal 5, locations.all.size
107
+ assert_equal 5, locations.to_a.size
112
108
  assert_equal 5, locations.count
113
109
  end
114
110
 
115
111
  def test_find_with_compound_condition
116
- locations = Location.geo_scope(:origin => @loc_a).where("distance < 5 and city = 'Coppell'")
117
- assert_equal 2, locations.all.size
112
+ #locations = Location.geo_scope(:origin => @loc_a).where("distance < 5 and city = 'Coppell'")
113
+ locations = Location.within(5, :origin => @loc_a).where("city = 'Coppell'")
114
+ assert_equal 2, locations.to_a.size
118
115
  assert_equal 2, locations.count
119
116
  end
120
117
 
121
118
  def test_find_with_secure_compound_condition
122
- locations = Location.geo_scope(:origin => @loc_a).where(["distance < ? and city = ?", 5, 'Coppell'])
123
- assert_equal 2, locations.all.size
119
+ #locations = Location.geo_scope(:origin => @loc_a).where(["distance < ? and city = ?", 5, 'Coppell'])
120
+ locations = Location.within(5, :origin => @loc_a).where(["city = ?", 'Coppell'])
121
+ assert_equal 2, locations.to_a.size
124
122
  assert_equal 2, locations.count
125
123
  end
126
124
 
127
125
  def test_find_beyond
128
126
  locations = Location.beyond(3.95, :origin => @loc_a)
129
- assert_equal 1, locations.all.size
127
+ assert_equal 1, locations.to_a.size
130
128
  assert_equal 1, locations.count
131
129
  end
132
130
 
133
131
  def test_find_beyond_with_token
134
132
  # locations = Location.find(:all, :beyond => 3.95, :origin => @loc_a)
135
- locations = Location.geo_scope(:beyond => 3.95, :origin => @loc_a)
136
- assert_equal 1, locations.all.size
133
+ #locations = Location.geo_scope(:beyond => 3.95, :origin => @loc_a)
134
+ locations = Location.beyond(3.95, :origin => @loc_a)
135
+ assert_equal 1, locations.to_a.size
137
136
  assert_equal 1, locations.count
138
137
  end
139
138
 
140
139
  def test_find_beyond_with_coordinates
141
140
  locations = Location.beyond(3.95, :origin =>[@loc_a.lat, @loc_a.lng])
142
- assert_equal 1, locations.all.size
141
+ assert_equal 1, locations.to_a.size
143
142
  assert_equal 1, locations.count
144
143
  end
145
144
 
146
145
  def test_find_range_with_token
147
- locations = Location.geo_scope(:range => 0..10, :origin => @loc_a)
148
- assert_equal 6, locations.all.size
146
+ locations = Location.in_range(0..10, :origin => @loc_a)
147
+ assert_equal 6, locations.to_a.size
149
148
  assert_equal 6, locations.count
150
149
  end
151
150
 
152
151
  def test_find_range_with_token_with_conditions
153
- locations = Location.geo_scope(:origin => @loc_a, :range => 0..10).where(["city = ?", 'Coppell'])
154
- assert_equal 2, locations.all.size
152
+ locations = Location.in_range(0..10, :origin => @loc_a).where(["city = ?", 'Coppell'])
153
+ assert_equal 2, locations.to_a.size
155
154
  assert_equal 2, locations.count
156
155
  end
157
156
 
158
157
  def test_find_range_with_token_with_hash_conditions
159
- locations = Location.geo_scope(:origin => @loc_a, :range => 0..10).where(:city => 'Coppell')
160
- assert_equal 2, locations.all.size
158
+ locations = Location.in_range(0..10, :origin => @loc_a).where(:city => 'Coppell')
159
+ assert_equal 2, locations.to_a.size
161
160
  assert_equal 2, locations.count
162
161
  end
163
162
 
164
163
  def test_find_range_with_token_excluding_end
165
- locations = Location.geo_scope(:range => 0...10, :origin => @loc_a)
166
- assert_equal 6, locations.all.size
164
+ #locations = Location.geo_scope(:range => 0...10, :origin => @loc_a)
165
+ locations = Location.in_range(0...10, :origin => @loc_a)
166
+ assert_equal 6, locations.to_a.size
167
167
  assert_equal 6, locations.count
168
168
  end
169
169
 
@@ -184,33 +184,35 @@ class ActsAsMappableTest < GeokitTestCase
184
184
  end
185
185
 
186
186
  def test_scoped_distance_column_in_select
187
- locations = @starbucks.locations.geo_scope(:origin => @loc_a).order("distance ASC")
188
- assert_equal 5, locations.all.size
187
+ #locations = @starbucks.locations.geo_scope(:origin => @loc_a).order("distance ASC")
188
+ locations = @starbucks.locations.by_distance(:origin => @loc_a)
189
+ assert_equal 5, locations.to_a.size
189
190
  assert_equal 0, @loc_a.distance_to(locations.first)
190
191
  assert_in_delta 3.97, @loc_a.distance_to(locations.last, :units => :miles, :formula => :sphere), 0.01
191
192
  end
192
193
 
193
194
  def test_scoped_find_with_distance_condition
194
- locations = @starbucks.locations.geo_scope(:origin => @loc_a).where("distance < 3.97")
195
- assert_equal 4, locations.all.size
195
+ #locations = @starbucks.locations.geo_scope(:origin => @loc_a).where("distance < 3.97")
196
+ locations = @starbucks.locations.within(3.97, :origin => @loc_a)
197
+ assert_equal 4, locations.to_a.size
196
198
  assert_equal 4, locations.count
197
199
  end
198
200
 
199
201
  def test_scoped_find_within
200
202
  locations = @starbucks.locations.within(3.97, :origin => @loc_a)
201
- assert_equal 4, locations.all.size
203
+ assert_equal 4, locations.to_a.size
202
204
  assert_equal 4, locations.count
203
205
  end
204
206
 
205
207
  def test_scoped_find_with_compound_condition
206
- locations = @starbucks.locations.geo_scope(:origin => @loc_a).where("distance < 5 and city = 'Coppell'")
207
- assert_equal 2, locations.all.size
208
+ locations = @starbucks.locations.within(5, :origin => @loc_a).where("city = 'Coppell'")
209
+ assert_equal 2, locations.to_a.size
208
210
  assert_equal 2, locations.count
209
211
  end
210
212
 
211
213
  def test_scoped_find_beyond
212
214
  locations = @starbucks.locations.beyond(3.95, :origin => @loc_a)
213
- assert_equal 1, locations.all.size
215
+ assert_equal 1, locations.to_a.size
214
216
  assert_equal 1, locations.count
215
217
  end
216
218
 
@@ -224,44 +226,44 @@ class ActsAsMappableTest < GeokitTestCase
224
226
 
225
227
  def test_ip_geocoded_distance_column_in_select
226
228
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
227
- locations = Location.geo_scope(:origin => LOCATION_A_IP).order("distance ASC")
228
- assert_equal 6, locations.all.size
229
+ locations = Location.by_distance(:origin => LOCATION_A_IP)
230
+ assert_equal 6, locations.to_a.size
229
231
  assert_equal 0, @loc_a.distance_to(locations.first)
230
232
  assert_in_delta 3.97, @loc_a.distance_to(locations.last, :units => :miles, :formula => :sphere), 0.01
231
233
  end
232
234
 
233
235
  def test_ip_geocoded_find_with_distance_condition
234
236
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
235
- locations = Location.geo_scope(:origin => LOCATION_A_IP).where("distance < 3.97")
236
- assert_equal 5, locations.all.size
237
+ locations = Location.within(3.97, :origin => LOCATION_A_IP)
238
+ assert_equal 5, locations.to_a.size
237
239
  assert_equal 5, locations.count
238
240
  end
239
241
 
240
242
  def test_ip_geocoded_find_within
241
243
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
242
244
  locations = Location.within(3.97, :origin => LOCATION_A_IP)
243
- assert_equal 5, locations.all.size
245
+ assert_equal 5, locations.to_a.size
244
246
  assert_equal 5, locations.count
245
247
  end
246
248
 
247
249
  def test_ip_geocoded_find_with_compound_condition
248
250
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
249
- locations = Location.geo_scope(:origin => LOCATION_A_IP).where("distance < 5 and city = 'Coppell'")
250
- assert_equal 2, locations.all.size
251
+ locations = Location.within(5, :origin => LOCATION_A_IP).where("city = 'Coppell'")
252
+ assert_equal 2, locations.to_a.size
251
253
  assert_equal 2, locations.count
252
254
  end
253
255
 
254
256
  def test_ip_geocoded_find_with_secure_compound_condition
255
257
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
256
- locations = Location.geo_scope(:origin => LOCATION_A_IP).where(["distance < ? and city = ?", 5, 'Coppell'])
257
- assert_equal 2, locations.all.size
258
+ locations = Location.within(5, :origin => LOCATION_A_IP).where(["city = ?", 'Coppell'])
259
+ assert_equal 2, locations.to_a.size
258
260
  assert_equal 2, locations.count
259
261
  end
260
262
 
261
263
  def test_ip_geocoded_find_beyond
262
264
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with(LOCATION_A_IP).returns(@location_a)
263
265
  locations = Location.beyond(3.95, :origin => LOCATION_A_IP)
264
- assert_equal 1, locations.all.size
266
+ assert_equal 1, locations.to_a.size
265
267
  assert_equal 1, locations.count
266
268
  end
267
269
 
@@ -284,56 +286,60 @@ class ActsAsMappableTest < GeokitTestCase
284
286
 
285
287
  def test_address_geocode
286
288
  GeoKit::Geocoders::MultiGeocoder.expects(:geocode).with('Irving, TX').returns(@location_a)
287
- locations = Location.geo_scope(:origin => 'Irving, TX').where(["distance < ? and city = ?", 5, 'Coppell'])
288
- assert_equal 2, locations.all.size
289
+ #locations = Location.geo_scope(:origin => 'Irving, TX').where(["distance < ? and city = ?", 5, 'Coppell'])
290
+ locations = Location.within(5, :origin => 'Irving, TX').where(["city = ?", 'Coppell'])
291
+ assert_equal 2, locations.to_a.size
289
292
  assert_equal 2, locations.count
290
293
  end
291
294
 
292
295
  def test_find_with_custom_distance_condition
293
- locations = CustomLocation.geo_scope(:origin => @loc_a).where("dist < 3.97")
294
- assert_equal 5, locations.all.size
296
+ locations = CustomLocation.within(3.97, :origin => @loc_a)
297
+ assert_equal 5, locations.to_a.size
295
298
  assert_equal 5, locations.count
296
299
  end
297
300
 
298
301
  def test_find_with_custom_distance_condition_using_custom_origin
299
- locations = CustomLocation.geo_scope(:origin => @custom_loc_a).where("dist < 3.97")
300
- assert_equal 5, locations.all.size
302
+ #locations = CustomLocation.geo_scope(:origin => @custom_loc_a).where("dist < 3.97")
303
+ locations = CustomLocation.within(3.97, :origin => @custom_loc_a)
304
+ assert_equal 5, locations.to_a.size
301
305
  assert_equal 5, locations.count
302
306
  end
303
307
 
304
308
  def test_find_within_with_custom
305
309
  locations = CustomLocation.within(3.97, :origin => @loc_a)
306
- assert_equal 5, locations.all.size
310
+ assert_equal 5, locations.to_a.size
307
311
  assert_equal 5, locations.count
308
312
  end
309
313
 
310
314
  def test_find_within_with_coordinates_with_custom
311
315
  locations = CustomLocation.within(3.97, :origin =>[@loc_a.lat, @loc_a.lng])
312
- assert_equal 5, locations.all.size
316
+ assert_equal 5, locations.to_a.size
313
317
  assert_equal 5, locations.count
314
318
  end
315
319
 
316
320
  def test_find_with_compound_condition_with_custom
317
- locations = CustomLocation.geo_scope(:origin => @loc_a).where("dist < 5 and city = 'Coppell'")
318
- assert_equal 1, locations.all.size
321
+ #locations = CustomLocation.geo_scope(:origin => @loc_a).where("dist < 5 and city = 'Coppell'")
322
+ locations = CustomLocation.within(5, :origin => @loc_a).where("city = 'Coppell'")
323
+ assert_equal 1, locations.to_a.size
319
324
  assert_equal 1, locations.count
320
325
  end
321
326
 
322
- def test_find_with_secure_compound_condition_with_custom
323
- locations = CustomLocation.geo_scope(:origin => @loc_a).where(["dist < ? and city = ?", 5, 'Coppell'])
324
- assert_equal 1, locations.all.size
325
- assert_equal 1, locations.count
326
- end
327
+ # REMOVED AS SAME AS BELOW
328
+ #def test_find_with_secure_compound_condition_with_custom
329
+ # locations = CustomLocation.geo_scope(:origin => @loc_a).where(["dist < ? and city = ?", 5, 'Coppell'])
330
+ # assert_equal 1, locations.all.size
331
+ # assert_equal 1, locations.count
332
+ #end
327
333
 
328
334
  def test_find_beyond_with_custom
329
335
  locations = CustomLocation.beyond(3.95, :origin => @loc_a)
330
- assert_equal 1, locations.all.size
336
+ assert_equal 1, locations.to_a.size
331
337
  assert_equal 1, locations.count
332
338
  end
333
339
 
334
340
  def test_find_beyond_with_coordinates_with_custom
335
341
  locations = CustomLocation.beyond(3.95, :origin =>[@loc_a.lat, @loc_a.lng])
336
- assert_equal 1, locations.all.size
342
+ assert_equal 1, locations.to_a.size
337
343
  assert_equal 1, locations.count
338
344
  end
339
345
 
@@ -354,8 +360,9 @@ class ActsAsMappableTest < GeokitTestCase
354
360
  end
355
361
 
356
362
  def test_find_with_array_origin
357
- locations = Location.geo_scope(:origin =>[@loc_a.lat,@loc_a.lng]).where("distance < 3.97")
358
- assert_equal 5, locations.all.size
363
+ #locations = Location.geo_scope(:origin =>[@loc_a.lat,@loc_a.lng]).where("distance < 3.97")
364
+ locations = Location.within(3.97, :origin =>[@loc_a.lat,@loc_a.lng])
365
+ assert_equal 5, locations.to_a.size
359
366
  assert_equal 5, locations.count
360
367
  end
361
368
 
@@ -364,35 +371,40 @@ class ActsAsMappableTest < GeokitTestCase
364
371
 
365
372
  def test_find_within_bounds
366
373
  locations = Location.in_bounds([@sw,@ne])
367
- assert_equal 2, locations.all.size
374
+ assert_equal 2, locations.to_a.size
368
375
  assert_equal 2, locations.count
369
376
  end
370
377
 
371
378
  def test_find_within_bounds_ordered_by_distance
372
- locations = Location.in_bounds([@sw,@ne], :origin=>@bounds_center).order('distance asc')
379
+ #locations = Location.in_bounds([@sw,@ne], :origin=>@bounds_center).order('distance asc')
380
+ locations = Location.in_bounds([@sw,@ne]).by_distance(:origin => @bounds_center)
373
381
  assert_equal locations[0], locations(:d)
374
382
  assert_equal locations[1], locations(:a)
375
383
  end
376
384
 
377
385
  def test_find_within_bounds_with_token
378
- locations = Location.geo_scope(:bounds=>[@sw,@ne])
379
- assert_equal 2, locations.all.size
386
+ #locations = Location.geo_scope(:bounds=>[@sw,@ne])
387
+ locations = Location.in_bounds([@sw,@ne])
388
+ assert_equal 2, locations.to_a.size
380
389
  assert_equal 2, locations.count
381
390
  end
382
391
 
383
392
  def test_find_within_bounds_with_string_conditions
384
- locations = Location.geo_scope(:bounds=>[@sw,@ne]).where("id !=#{locations(:a).id}")
385
- assert_equal 1, locations.all.size
393
+ #locations = Location.geo_scope(:bounds=>[@sw,@ne]).where("id !=#{locations(:a).id}")
394
+ locations = Location.in_bounds([@sw,@ne]).where("id !=#{locations(:a).id}")
395
+ assert_equal 1, locations.to_a.size
386
396
  end
387
397
 
388
398
  def test_find_within_bounds_with_array_conditions
389
- locations = Location.geo_scope(:bounds=>[@sw,@ne]).where(["id != ?", locations(:a).id])
390
- assert_equal 1, locations.all.size
399
+ #locations = Location.geo_scope(:bounds=>[@sw,@ne]).where(["id != ?", locations(:a).id])
400
+ locations = Location.in_bounds([@sw,@ne]).where(["id != ?", locations(:a).id])
401
+ assert_equal 1, locations.to_a.size
391
402
  end
392
403
 
393
404
  def test_find_within_bounds_with_hash_conditions
394
- locations = Location.geo_scope(:bounds=>[@sw,@ne]).where({:id => locations(:a).id})
395
- assert_equal 1, locations.all.size
405
+ #locations = Location.geo_scope(:bounds=>[@sw,@ne]).where({:id => locations(:a).id})
406
+ locations = Location.in_bounds([@sw,@ne]).where({:id => locations(:a).id})
407
+ assert_equal 1, locations.to_a.size
396
408
  end
397
409
 
398
410
  def test_auto_geocode
@@ -414,15 +426,16 @@ class ActsAsMappableTest < GeokitTestCase
414
426
 
415
427
  # Test :through
416
428
 
417
- def test_find_with_through
418
- organizations = MockOrganization.geo_scope(:origin => @location_a).order('distance ASC')
419
- assert_equal 2, organizations.all.size
420
- organizations = MockOrganization.geo_scope(:origin => @location_a).where("distance < 3.97")
421
- assert_equal 1, organizations.count
422
- end
429
+ #def test_find_with_through
430
+ # organizations = MockOrganization.geo_scope(:origin => @location_a).order('distance ASC')
431
+ # assert_equal 2, organizations.all.size
432
+ # organizations = MockOrganization.geo_scope(:origin => @location_a).where("distance < 3.97")
433
+ # assert_equal 1, organizations.count
434
+ #end
423
435
 
424
436
  def test_find_with_through_with_hash
425
- people = MockPerson.geo_scope(:origin => @location_a).order('distance ASC')
437
+ #people = MockPerson.geo_scope(:origin => @location_a).order('distance ASC')
438
+ people = MockPerson.order('distance ASC')
426
439
  assert_equal 2, people.size
427
440
  assert_equal 2, people.count
428
441
  end