activerecord-postgis-adapter 3.1.0 → 3.1.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,21 +0,0 @@
1
- require 'test_helper'
2
-
3
- class NestedClassTest < ActiveSupport::TestCase # :nodoc:
4
- module Foo
5
- def self.table_name_prefix
6
- 'foo_'
7
- end
8
- class Bar < ActiveRecord::Base
9
- establish_connection YAML.load_file(ActiveSupport::TestCase::DATABASE_CONFIG_PATH)
10
- end
11
- end
12
-
13
- def test_nested_model
14
- Foo::Bar.connection.create_table(:foo_bars, force: true) do |t|
15
- t.column 'latlon', :st_point, srid: 3785
16
- end
17
- assert_empty Foo::Bar.all
18
- Foo::Bar.connection.drop_table(:foo_bars)
19
- end
20
-
21
- end
data/test/setup_test.rb DELETED
@@ -1,9 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SpatialQueriesTest < ActiveSupport::TestCase # :nodoc:
4
-
5
- def test_ignore_tables
6
- assert_equal %w(geometry_columns spatial_ref_sys layer topology), ::ActiveRecord::SchemaDumper.ignore_tables
7
- end
8
-
9
- end
@@ -1,79 +0,0 @@
1
- require 'test_helper'
2
-
3
- class SpatialQueriesTest < ActiveSupport::TestCase # :nodoc:
4
- def test_query_point
5
- create_model
6
- obj = SpatialModel.new
7
- obj.latlon = factory.point(1.0, 2.0)
8
- obj.save!
9
- id = obj.id
10
- obj2 = SpatialModel.where(latlon: factory.multi_point([factory.point(1.0, 2.0)])).first
11
- refute_nil(obj2)
12
- assert_equal(id, obj2.id)
13
- obj3 = SpatialModel.where(latlon: factory.point(2.0, 2.0)).first
14
- assert_nil(obj3)
15
- end
16
-
17
- def test_query_point_wkt
18
- create_model
19
- obj = SpatialModel.new
20
- obj.latlon = factory.point(1.0, 2.0)
21
- obj.save!
22
- id = obj.id
23
- obj2 = SpatialModel.where(latlon: 'SRID=3785;POINT(1 2)').first
24
- refute_nil(obj2)
25
- assert_equal(id, obj2.id)
26
- obj3 = SpatialModel.where(latlon: 'SRID=3785;POINT(2 2)').first
27
- assert_nil(obj3)
28
- end
29
-
30
- def test_query_st_distance
31
- create_model
32
- obj = SpatialModel.new
33
- obj.latlon = factory.point(1.0, 2.0)
34
- obj.save!
35
- id = obj.id
36
- obj2 = SpatialModel.where(SpatialModel.arel_table[:latlon].st_distance('SRID=3785;POINT(2 3)').lt(2)).first
37
- refute_nil(obj2)
38
- assert_equal(id, obj2.id)
39
- obj3 = SpatialModel.where(SpatialModel.arel_table[:latlon].st_distance('SRID=3785;POINT(2 3)').gt(2)).first
40
- assert_nil(obj3)
41
- end
42
-
43
- def test_query_st_distance_from_constant
44
- create_model
45
- obj = SpatialModel.new
46
- obj.latlon = factory.point(1.0, 2.0)
47
- obj.save!
48
- id = obj.id
49
- obj2 = SpatialModel.where(::Arel.spatial('SRID=3785;POINT(2 3)').st_distance(SpatialModel.arel_table[:latlon]).lt(2)).first
50
- refute_nil(obj2)
51
- assert_equal(id, obj2.id)
52
- obj3 = SpatialModel.where(::Arel.spatial('SRID=3785;POINT(2 3)').st_distance(SpatialModel.arel_table[:latlon]).gt(2)).first
53
- assert_nil(obj3)
54
- end
55
-
56
- def test_query_st_length
57
- create_model
58
- obj = SpatialModel.new
59
- obj.path = factory.line(factory.point(1.0, 2.0), factory.point(3.0, 2.0))
60
- obj.save!
61
- id = obj.id
62
- obj2 = SpatialModel.where(SpatialModel.arel_table[:path].st_length.eq(2)).first
63
- refute_nil(obj2)
64
- assert_equal(id, obj2.id)
65
- obj3 = SpatialModel.where(SpatialModel.arel_table[:path].st_length.gt(3)).first
66
- assert_nil(obj3)
67
- end
68
-
69
- private
70
-
71
- def create_model
72
- SpatialModel.connection.create_table(:spatial_models, force: true) do |t|
73
- t.column 'latlon', :st_point, srid: 3785
74
- t.column 'path', :line_string, srid: 3785
75
- end
76
- SpatialModel.reset_column_information
77
- end
78
-
79
- end
data/test/tasks_test.rb DELETED
@@ -1,159 +0,0 @@
1
- require 'test_helper'
2
- require 'active_record/schema_dumper'
3
-
4
- class TasksTest < ActiveSupport::TestCase # :nodoc:
5
- NEW_CONNECTION = {
6
- "adapter" => "postgis",
7
- "host" => "127.0.0.1",
8
- "database" => "postgis_tasks_test",
9
- "username" => "postgres",
10
- "setup" => "default",
11
- "schema_search_path" => "public",
12
- }
13
-
14
- def test_create_database_from_extension_in_public_schema
15
- drop_db_if_exists
16
- ActiveRecord::Tasks::DatabaseTasks.create(NEW_CONNECTION)
17
- refute_empty connection.select_values("SELECT * from public.spatial_ref_sys")
18
- end
19
-
20
- def test_create_database_from_extension_in_separate_schema
21
- drop_db_if_exists
22
- configuration = NEW_CONNECTION.merge("postgis_schema" => "postgis")
23
- ActiveRecord::Tasks::DatabaseTasks.create(configuration)
24
- refute_empty connection.select_values("SELECT * from postgis.spatial_ref_sys")
25
- end
26
-
27
- def test_empty_sql_dump
28
- setup_database_tasks
29
- ActiveRecord::Tasks::DatabaseTasks.structure_dump(NEW_CONNECTION, tmp_sql_filename)
30
- sql = File.read(tmp_sql_filename)
31
- assert(sql !~ /CREATE TABLE/)
32
- end
33
-
34
- def test_basic_geography_sql_dump
35
- setup_database_tasks
36
- connection.create_table(:spatial_test, force: true) do |t|
37
- t.st_point "latlon", geographic: true
38
- t.geometry "geo_col", srid: 4326
39
- end
40
- ActiveRecord::Tasks::DatabaseTasks.structure_dump(NEW_CONNECTION, tmp_sql_filename)
41
- data = File.read(tmp_sql_filename)
42
- assert(data.index('latlon geography(Point,4326)'))
43
- assert(data.index('geo_col geometry(Geometry,4326)'))
44
- end
45
-
46
- def test_index_sql_dump
47
- setup_database_tasks
48
- connection.create_table(:spatial_test, force: true) do |t|
49
- t.st_point "latlon", geographic: true
50
- t.string "name"
51
- end
52
- connection.add_index :spatial_test, :latlon, using: :gist
53
- connection.add_index :spatial_test, :name, using: :btree
54
- ActiveRecord::Tasks::DatabaseTasks.structure_dump(NEW_CONNECTION, tmp_sql_filename)
55
- data = File.read(tmp_sql_filename)
56
- assert(data.index('latlon geography(Point,4326)'))
57
- assert data.index('CREATE INDEX index_spatial_test_on_latlon ON spatial_test USING gist (latlon);')
58
- assert data.index('CREATE INDEX index_spatial_test_on_name ON spatial_test USING btree (name);')
59
- end
60
-
61
- def test_empty_schema_dump
62
- setup_database_tasks
63
- File.open(tmp_sql_filename, "w:utf-8") do |file|
64
- ActiveRecord::SchemaDumper.dump(::ActiveRecord::Base.connection, file)
65
- end
66
- data = File.read(tmp_sql_filename)
67
- assert(data.index('ActiveRecord::Schema'))
68
- end
69
-
70
- def test_basic_geometry_schema_dump
71
- setup_database_tasks
72
- connection.create_table(:spatial_test, force: true) do |t|
73
- t.geometry 'object1'
74
- t.spatial "object2", srid: connection.default_srid, type: "geometry"
75
- end
76
- File.open(tmp_sql_filename, "w:utf-8") do |file|
77
- ActiveRecord::SchemaDumper.dump(connection, file)
78
- end
79
- data = File.read(tmp_sql_filename)
80
- assert data.index("t.geometry \"object1\", limit: {:srid=>#{connection.default_srid}, :type=>\"geometry\"")
81
- assert data.index("t.geometry \"object2\", limit: {:srid=>#{connection.default_srid}, :type=>\"geometry\"")
82
- end
83
-
84
- def test_basic_geography_schema_dump
85
- setup_database_tasks
86
- connection.create_table(:spatial_test, force: true) do |t|
87
- t.st_point "latlon1", geographic: true
88
- t.spatial "latlon2", srid: 4326, type: "st_point", geographic: true
89
- end
90
- File.open(tmp_sql_filename, "w:utf-8") do |file|
91
- ActiveRecord::SchemaDumper.dump(connection, file)
92
- end
93
- data = File.read(tmp_sql_filename)
94
- assert data.index(%(t.geography "latlon1", limit: {:srid=>4326, :type=>"point", :geographic=>true}))
95
- assert data.index(%(t.geography "latlon2", limit: {:srid=>4326, :type=>"point", :geographic=>true}))
96
- end
97
-
98
- def test_index_schema_dump
99
- setup_database_tasks
100
- connection.create_table(:spatial_test, force: true) do |t|
101
- t.st_point "latlon", geographic: true
102
- end
103
- connection.add_index :spatial_test, :latlon, using: :gist
104
- File.open(tmp_sql_filename, "w:utf-8") do |file|
105
- ActiveRecord::SchemaDumper.dump(connection, file)
106
- end
107
- data = File.read(tmp_sql_filename)
108
- assert data.index(%(t.geography "latlon", limit: {:srid=>4326, :type=>"point", :geographic=>true}))
109
- assert data.index(%(add_index "spatial_test", ["latlon"], name: "index_spatial_test_on_latlon", using: :gist))
110
- end
111
-
112
- def test_add_index_with_no_options
113
- setup_database_tasks
114
- connection.create_table(:test, force: true) do |t|
115
- t.string "name"
116
- end
117
- connection.add_index :test, :name
118
- ActiveRecord::Tasks::DatabaseTasks.structure_dump(NEW_CONNECTION, tmp_sql_filename)
119
- data = File.read(tmp_sql_filename)
120
- assert data.index('CREATE INDEX index_test_on_name ON test USING btree (name);')
121
- end
122
-
123
- def test_add_index_via_references
124
- setup_database_tasks
125
- connection.create_table(:cats, force: true)
126
- connection.create_table(:dogs, force: true) do |t|
127
- t.references :cats, index: true
128
- end
129
- ActiveRecord::Tasks::DatabaseTasks.structure_dump(NEW_CONNECTION, tmp_sql_filename)
130
- data = File.read(tmp_sql_filename)
131
- assert data.index('CREATE INDEX index_dogs_on_cats_id ON dogs USING btree (cats_id);')
132
- end
133
-
134
- private
135
-
136
- def connection
137
- ActiveRecord::Base.connection
138
- end
139
-
140
- def tmp_sql_filename
141
- File.expand_path('../tmp/tmp.sql', ::File.dirname(__FILE__))
142
- end
143
-
144
- def setup_database_tasks
145
- FileUtils.rm_f(tmp_sql_filename)
146
- FileUtils.mkdir_p(::File.dirname(tmp_sql_filename))
147
- drop_db_if_exists
148
- ActiveRecord::ConnectionAdapters::PostGIS::PostGISDatabaseTasks.new(NEW_CONNECTION).create
149
- rescue ActiveRecord::Tasks::DatabaseAlreadyExists
150
- # ignore
151
- end
152
-
153
- def drop_db_if_exists
154
- ActiveRecord::ConnectionAdapters::PostGIS::PostGISDatabaseTasks.new(NEW_CONNECTION).drop
155
- rescue ActiveRecord::Tasks::DatabaseAlreadyExists
156
- # ignore
157
- end
158
-
159
- end
data/test/test_helper.rb DELETED
@@ -1,33 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'minitest/pride'
3
- require 'mocha/mini_test'
4
- require 'active_record'
5
- require 'activerecord-postgis-adapter'
6
-
7
- begin
8
- require 'byebug'
9
- rescue LoadError
10
- # ignore
11
- end
12
-
13
- class ActiveSupport::TestCase
14
- self.test_order = :sorted
15
-
16
- DATABASE_CONFIG_PATH = File.dirname(__FILE__) << '/database.yml'
17
-
18
- class SpatialModel < ActiveRecord::Base
19
- establish_connection YAML.load_file(DATABASE_CONFIG_PATH)
20
- end
21
-
22
- def factory
23
- RGeo::Cartesian.preferred_factory(srid: 3785)
24
- end
25
-
26
- def geographic_factory
27
- RGeo::Geographic.spherical_factory(srid: 4326)
28
- end
29
-
30
- def spatial_factory_store
31
- RGeo::ActiveRecord::SpatialFactoryStore.instance
32
- end
33
- end
data/test/type_test.rb DELETED
@@ -1,26 +0,0 @@
1
- require "test_helper"
2
-
3
- class TypeTest < ActiveSupport::TestCase
4
- def test_parse_simple_type
5
- assert_equal ["geometry", 0, false, false], spatial.parse_sql_type("geometry")
6
- assert_equal ["geography", 0, false, false], spatial.parse_sql_type("geography")
7
- end
8
-
9
- def test_parse_geo_type
10
- assert_equal ["Point", 0, false, false], spatial.parse_sql_type("geography(Point)")
11
- assert_equal ["Polygon", 0, false, false], spatial.parse_sql_type("geography(Polygon)")
12
- end
13
-
14
- def test_parse_type_with_srid
15
- assert_equal ["Point", 4326, false, false], spatial.parse_sql_type("geography(Point,4326)")
16
- assert_equal ["Polygon", 4327, true, false], spatial.parse_sql_type("geography(PolygonZ,4327)")
17
- assert_equal ["Point", 4328, false, true], spatial.parse_sql_type("geography(PointM,4328)")
18
- assert_equal ["Point", 4329, true, true], spatial.parse_sql_type("geography(PointZM,4329)")
19
- end
20
-
21
- private
22
-
23
- def spatial
24
- ActiveRecord::ConnectionAdapters::PostGIS::OID::Spatial
25
- end
26
- end