activerecord-postgis-adapter 0.4.0 → 0.4.1

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.
@@ -1,15 +1,15 @@
1
1
  # -----------------------------------------------------------------------------
2
- #
2
+ #
3
3
  # Tests for the PostGIS ActiveRecord adapter
4
- #
4
+ #
5
5
  # -----------------------------------------------------------------------------
6
- # Copyright 2010 Daniel Azuma
7
- #
6
+ # Copyright 2010-2012 Daniel Azuma
7
+ #
8
8
  # All rights reserved.
9
- #
9
+ #
10
10
  # Redistribution and use in source and binary forms, with or without
11
11
  # modification, are permitted provided that the following conditions are met:
12
- #
12
+ #
13
13
  # * Redistributions of source code must retain the above copyright notice,
14
14
  # this list of conditions and the following disclaimer.
15
15
  # * Redistributions in binary form must reproduce the above copyright notice,
@@ -18,7 +18,7 @@
18
18
  # * Neither the name of the copyright holder, nor the names of any other
19
19
  # contributors to this software, may be used to endorse or promote products
20
20
  # derived from this software without specific prior written permission.
21
- #
21
+ #
22
22
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
23
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
24
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -41,15 +41,15 @@ module RGeo
41
41
  module ActiveRecord # :nodoc:
42
42
  module PostGISAdapter # :nodoc:
43
43
  module Tests # :nodoc:
44
-
44
+
45
45
  class TestBasic < ::Test::Unit::TestCase # :nodoc:
46
-
46
+
47
47
  DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database.yml'
48
48
  include AdapterTestHelper
49
-
49
+
50
50
  define_test_methods do
51
-
52
-
51
+
52
+
53
53
  def populate_ar_class(content_)
54
54
  klass_ = create_ar_class
55
55
  case content_
@@ -68,20 +68,20 @@ module RGeo
68
68
  end
69
69
  klass_
70
70
  end
71
-
72
-
71
+
72
+
73
73
  def test_version
74
74
  assert_not_nil(::ActiveRecord::ConnectionAdapters::PostGISAdapter::VERSION)
75
75
  end
76
-
77
-
76
+
77
+
78
78
  def test_postgis_available
79
79
  connection_ = create_ar_class.connection
80
80
  assert_equal('PostGIS', connection_.adapter_name)
81
81
  assert_not_nil(connection_.postgis_lib_version)
82
82
  end
83
-
84
-
83
+
84
+
85
85
  def test_set_and_get_point
86
86
  klass_ = populate_ar_class(:mercator_point)
87
87
  obj_ = klass_.new
@@ -90,8 +90,8 @@ module RGeo
90
90
  assert_equal(@factory.point(1, 2), obj_.latlon)
91
91
  assert_equal(3785, obj_.latlon.srid)
92
92
  end
93
-
94
-
93
+
94
+
95
95
  def test_set_and_get_point_from_wkt
96
96
  klass_ = populate_ar_class(:mercator_point)
97
97
  obj_ = klass_.new
@@ -100,8 +100,8 @@ module RGeo
100
100
  assert_equal(@factory.point(1, 2), obj_.latlon)
101
101
  assert_equal(3785, obj_.latlon.srid)
102
102
  end
103
-
104
-
103
+
104
+
105
105
  def test_save_and_load_point
106
106
  klass_ = populate_ar_class(:mercator_point)
107
107
  obj_ = klass_.new
@@ -113,8 +113,8 @@ module RGeo
113
113
  assert_equal(3785, obj2_.latlon.srid)
114
114
  assert_equal(true, ::RGeo::Geos.is_geos?(obj2_.latlon))
115
115
  end
116
-
117
-
116
+
117
+
118
118
  def test_save_and_load_geographic_point
119
119
  klass_ = populate_ar_class(:latlon_point_geographic)
120
120
  obj_ = klass_.new
@@ -126,8 +126,8 @@ module RGeo
126
126
  assert_equal(4326, obj2_.latlon.srid)
127
127
  assert_equal(false, ::RGeo::Geos.is_geos?(obj2_.latlon))
128
128
  end
129
-
130
-
129
+
130
+
131
131
  def test_save_and_load_point_from_wkt
132
132
  klass_ = populate_ar_class(:mercator_point)
133
133
  obj_ = klass_.new
@@ -138,15 +138,15 @@ module RGeo
138
138
  assert_equal(@factory.point(1, 2), obj2_.latlon)
139
139
  assert_equal(3785, obj2_.latlon.srid)
140
140
  end
141
-
142
-
141
+
142
+
143
143
  def test_set_point_bad_wkt
144
144
  klass_ = populate_ar_class(:mercator_point)
145
145
  obj_ = klass_.create(:latlon => 'POINT (x)')
146
146
  assert_nil(obj_.latlon)
147
147
  end
148
-
149
-
148
+
149
+
150
150
  def test_readme_example
151
151
  klass_ = create_ar_class
152
152
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -168,8 +168,8 @@ module RGeo
168
168
  rec_.shape = loc_
169
169
  assert_equal(true, ::RGeo::Geos.is_geos?(rec_.shape))
170
170
  end
171
-
172
-
171
+
172
+
173
173
  def test_save_and_load_no_constraints
174
174
  klass_ = populate_ar_class(:no_constraints)
175
175
  factory1_ = ::RGeo::Cartesian.preferred_factory(:srid => 3785)
@@ -187,8 +187,8 @@ module RGeo
187
187
  assert_equal(factory2_.point(3,4), obj3_.geo)
188
188
  assert_equal(2000, obj3_.geo.srid)
189
189
  end
190
-
191
-
190
+
191
+
192
192
  def test_point_to_json
193
193
  klass_ = populate_ar_class(:mercator_point)
194
194
  obj_ = klass_.new
@@ -196,12 +196,12 @@ module RGeo
196
196
  obj_.latlon = @factory.point(1, 2)
197
197
  assert_match(/"latlon":"POINT\s\(1\.0\s2\.0\)"/, obj_.to_json)
198
198
  end
199
-
200
-
199
+
200
+
201
201
  end
202
-
202
+
203
203
  end
204
-
204
+
205
205
  end
206
206
  end
207
207
  end
@@ -1,15 +1,15 @@
1
1
  # -----------------------------------------------------------------------------
2
- #
2
+ #
3
3
  # Tests for the PostGIS ActiveRecord adapter
4
- #
4
+ #
5
5
  # -----------------------------------------------------------------------------
6
- # Copyright 2010 Daniel Azuma
7
- #
6
+ # Copyright 2010-2012 Daniel Azuma
7
+ #
8
8
  # All rights reserved.
9
- #
9
+ #
10
10
  # Redistribution and use in source and binary forms, with or without
11
11
  # modification, are permitted provided that the following conditions are met:
12
- #
12
+ #
13
13
  # * Redistributions of source code must retain the above copyright notice,
14
14
  # this list of conditions and the following disclaimer.
15
15
  # * Redistributions in binary form must reproduce the above copyright notice,
@@ -18,7 +18,7 @@
18
18
  # * Neither the name of the copyright holder, nor the names of any other
19
19
  # contributors to this software, may be used to endorse or promote products
20
20
  # derived from this software without specific prior written permission.
21
- #
21
+ #
22
22
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
23
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
24
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -41,15 +41,15 @@ module RGeo
41
41
  module ActiveRecord # :nodoc:
42
42
  module PostGISAdapter # :nodoc:
43
43
  module Tests # :nodoc:
44
-
44
+
45
45
  class TestDDL < ::Test::Unit::TestCase # :nodoc:
46
-
46
+
47
47
  DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database.yml'
48
48
  include AdapterTestHelper
49
-
49
+
50
50
  define_test_methods do
51
-
52
-
51
+
52
+
53
53
  def test_create_simple_geometry
54
54
  klass_ = create_ar_class
55
55
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -65,8 +65,8 @@ module RGeo
65
65
  klass_.connection.drop_table(:spatial_test)
66
66
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
67
67
  end
68
-
69
-
68
+
69
+
70
70
  def test_create_no_constraints_geometry
71
71
  klass_ = create_ar_class
72
72
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -82,8 +82,8 @@ module RGeo
82
82
  klass_.connection.drop_table(:spatial_test)
83
83
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
84
84
  end
85
-
86
-
85
+
86
+
87
87
  def test_create_simple_geography
88
88
  klass_ = create_ar_class
89
89
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -97,8 +97,8 @@ module RGeo
97
97
  assert(klass_.cached_attributes.include?('latlon'))
98
98
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
99
99
  end
100
-
101
-
100
+
101
+
102
102
  def test_create_point_geometry
103
103
  klass_ = create_ar_class
104
104
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -107,8 +107,8 @@ module RGeo
107
107
  assert_equal(::RGeo::Feature::Point, klass_.columns.last.geometric_type)
108
108
  assert(klass_.cached_attributes.include?('latlon'))
109
109
  end
110
-
111
-
110
+
111
+
112
112
  def test_create_geometry_with_index
113
113
  klass_ = create_ar_class
114
114
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -119,8 +119,8 @@ module RGeo
119
119
  end
120
120
  assert(klass_.connection.indexes(:spatial_test).last.spatial)
121
121
  end
122
-
123
-
122
+
123
+
124
124
  def test_add_geometry_column
125
125
  klass_ = create_ar_class
126
126
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -142,8 +142,8 @@ module RGeo
142
142
  assert_nil(cols_[-1].geometric_type)
143
143
  assert_equal(false, cols_[-1].has_spatial_constraints?)
144
144
  end
145
-
146
-
145
+
146
+
147
147
  def test_add_no_constraints_geometry_column
148
148
  klass_ = create_ar_class
149
149
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -165,8 +165,8 @@ module RGeo
165
165
  assert_nil(cols_[-1].geometric_type)
166
166
  assert_equal(false, cols_[-1].has_spatial_constraints?)
167
167
  end
168
-
169
-
168
+
169
+
170
170
  def test_add_geography_column
171
171
  klass_ = create_ar_class
172
172
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -188,8 +188,8 @@ module RGeo
188
188
  assert_nil(cols_[-1].geometric_type)
189
189
  assert_equal(false, cols_[-1].has_spatial_constraints?)
190
190
  end
191
-
192
-
191
+
192
+
193
193
  def test_drop_geometry_column
194
194
  klass_ = create_ar_class
195
195
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -206,8 +206,8 @@ module RGeo
206
206
  assert_equal(-1, cols_[-1].srid)
207
207
  assert_equal(false, cols_[-1].geographic?)
208
208
  end
209
-
210
-
209
+
210
+
211
211
  def test_drop_geography_column
212
212
  klass_ = create_ar_class
213
213
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -227,8 +227,8 @@ module RGeo
227
227
  assert_equal('latlon', cols_[-2].name)
228
228
  assert_equal(false, cols_[-2].geographic?)
229
229
  end
230
-
231
-
230
+
231
+
232
232
  def test_create_simple_geometry_using_shortcut
233
233
  klass_ = create_ar_class
234
234
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -243,8 +243,8 @@ module RGeo
243
243
  klass_.connection.drop_table(:spatial_test)
244
244
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
245
245
  end
246
-
247
-
246
+
247
+
248
248
  def test_create_no_constraints_geometry_using_shortcut
249
249
  klass_ = create_ar_class
250
250
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -259,8 +259,8 @@ module RGeo
259
259
  klass_.connection.drop_table(:spatial_test)
260
260
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
261
261
  end
262
-
263
-
262
+
263
+
264
264
  def test_create_simple_geography_using_shortcut
265
265
  klass_ = create_ar_class
266
266
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -274,8 +274,8 @@ module RGeo
274
274
  assert(klass_.cached_attributes.include?('latlon'))
275
275
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
276
276
  end
277
-
278
-
277
+
278
+
279
279
  def test_create_point_geometry_using_shortcut
280
280
  klass_ = create_ar_class
281
281
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -284,8 +284,8 @@ module RGeo
284
284
  assert_equal(::RGeo::Feature::Point, klass_.columns.last.geometric_type)
285
285
  assert(klass_.cached_attributes.include?('latlon'))
286
286
  end
287
-
288
-
287
+
288
+
289
289
  def test_create_geometry_with_options
290
290
  klass_ = create_ar_class
291
291
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -303,8 +303,8 @@ module RGeo
303
303
  klass_.connection.drop_table(:spatial_test)
304
304
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
305
305
  end
306
-
307
-
306
+
307
+
308
308
  def test_create_geometry_using_limit
309
309
  klass_ = create_ar_class
310
310
  klass_.connection.create_table(:spatial_test) do |t_|
@@ -322,12 +322,12 @@ module RGeo
322
322
  klass_.connection.drop_table(:spatial_test)
323
323
  assert_equal(0, klass_.connection.select_value("SELECT COUNT(*) FROM geometry_columns WHERE f_table_name='spatial_test'").to_i)
324
324
  end
325
-
326
-
325
+
326
+
327
327
  end
328
-
328
+
329
329
  end
330
-
330
+
331
331
  end
332
332
  end
333
333
  end
@@ -1,15 +1,15 @@
1
1
  # -----------------------------------------------------------------------------
2
- #
2
+ #
3
3
  # Tests for the PostGIS ActiveRecord adapter
4
- #
4
+ #
5
5
  # -----------------------------------------------------------------------------
6
- # Copyright 2010 Daniel Azuma
7
- #
6
+ # Copyright 2010-2012 Daniel Azuma
7
+ #
8
8
  # All rights reserved.
9
- #
9
+ #
10
10
  # Redistribution and use in source and binary forms, with or without
11
11
  # modification, are permitted provided that the following conditions are met:
12
- #
12
+ #
13
13
  # * Redistributions of source code must retain the above copyright notice,
14
14
  # this list of conditions and the following disclaimer.
15
15
  # * Redistributions in binary form must reproduce the above copyright notice,
@@ -18,7 +18,7 @@
18
18
  # * Neither the name of the copyright holder, nor the names of any other
19
19
  # contributors to this software, may be used to endorse or promote products
20
20
  # derived from this software without specific prior written permission.
21
- #
21
+ #
22
22
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23
23
  # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24
24
  # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -41,15 +41,15 @@ module RGeo
41
41
  module ActiveRecord # :nodoc:
42
42
  module PostGISAdapter # :nodoc:
43
43
  module Tests # :nodoc:
44
-
44
+
45
45
  class TestSpatialQueries < ::Test::Unit::TestCase # :nodoc:
46
-
46
+
47
47
  DATABASE_CONFIG_PATH = ::File.dirname(__FILE__)+'/database.yml'
48
48
  include AdapterTestHelper
49
-
49
+
50
50
  define_test_methods do
51
-
52
-
51
+
52
+
53
53
  def populate_ar_class(content_)
54
54
  klass_ = create_ar_class
55
55
  case content_
@@ -68,8 +68,8 @@ module RGeo
68
68
  end
69
69
  klass_
70
70
  end
71
-
72
-
71
+
72
+
73
73
  def test_query_point
74
74
  klass_ = populate_ar_class(:mercator_point)
75
75
  obj_ = klass_.new
@@ -81,8 +81,8 @@ module RGeo
81
81
  obj3_ = klass_.where(:latlon => @factory.point(2, 2)).first
82
82
  assert_nil(obj3_)
83
83
  end
84
-
85
-
84
+
85
+
86
86
  def test_query_point_wkt
87
87
  klass_ = populate_ar_class(:mercator_point)
88
88
  obj_ = klass_.new
@@ -94,11 +94,11 @@ module RGeo
94
94
  obj3_ = klass_.where(:latlon => 'SRID=3785;POINT(2 2)').first
95
95
  assert_nil(obj3_)
96
96
  end
97
-
98
-
97
+
98
+
99
99
  if ::RGeo::ActiveRecord.spatial_expressions_supported?
100
-
101
-
100
+
101
+
102
102
  def test_query_st_distance
103
103
  klass_ = populate_ar_class(:mercator_point)
104
104
  obj_ = klass_.new
@@ -110,8 +110,8 @@ module RGeo
110
110
  obj3_ = klass_.where(klass_.arel_table[:latlon].st_distance('SRID=3785;POINT(2 3)').gt(2)).first
111
111
  assert_nil(obj3_)
112
112
  end
113
-
114
-
113
+
114
+
115
115
  def test_query_st_distance_from_constant
116
116
  klass_ = populate_ar_class(:mercator_point)
117
117
  obj_ = klass_.new
@@ -123,8 +123,8 @@ module RGeo
123
123
  obj3_ = klass_.where(::Arel.spatial('SRID=3785;POINT(2 3)').st_distance(klass_.arel_table[:latlon]).gt(2)).first
124
124
  assert_nil(obj3_)
125
125
  end
126
-
127
-
126
+
127
+
128
128
  def test_query_st_length
129
129
  klass_ = populate_ar_class(:path_linestring)
130
130
  obj_ = klass_.new
@@ -136,19 +136,19 @@ module RGeo
136
136
  obj3_ = klass_.where(klass_.arel_table[:path].st_length.gt(3)).first
137
137
  assert_nil(obj3_)
138
138
  end
139
-
140
-
139
+
140
+
141
141
  else
142
-
142
+
143
143
  puts "WARNING: The current Arel does not support named functions. Spatial expression tests skipped."
144
-
144
+
145
145
  end
146
-
147
-
146
+
147
+
148
148
  end
149
-
149
+
150
150
  end
151
-
151
+
152
152
  end
153
153
  end
154
154
  end