activerecord-postgresql-extensions 0.2.2 → 0.3.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.
- checksums.yaml +15 -0
- data/.gitignore +4 -0
- data/Gemfile +1 -0
- data/Guardfile +3 -3
- data/MIT-LICENSE +1 -1
- data/README.rdoc +10 -3
- data/lib/active_record/postgresql_extensions/adapter_extensions.rb +100 -60
- data/lib/active_record/postgresql_extensions/constraints.rb +13 -17
- data/lib/active_record/postgresql_extensions/event_triggers.rb +129 -0
- data/lib/active_record/postgresql_extensions/extensions.rb +14 -15
- data/lib/active_record/postgresql_extensions/features.rb +80 -41
- data/lib/active_record/postgresql_extensions/functions.rb +1 -1
- data/lib/active_record/postgresql_extensions/geometry.rb +6 -8
- data/lib/active_record/postgresql_extensions/indexes.rb +19 -11
- data/lib/active_record/postgresql_extensions/languages.rb +1 -1
- data/lib/active_record/postgresql_extensions/materialized_views.rb +272 -0
- data/lib/active_record/postgresql_extensions/permissions.rb +60 -22
- data/lib/active_record/postgresql_extensions/roles.rb +18 -7
- data/lib/active_record/postgresql_extensions/rules.rb +5 -0
- data/lib/active_record/postgresql_extensions/schemas.rb +39 -3
- data/lib/active_record/postgresql_extensions/sequences.rb +6 -3
- data/lib/active_record/postgresql_extensions/tables.rb +47 -19
- data/lib/active_record/postgresql_extensions/tablespaces.rb +1 -1
- data/lib/active_record/postgresql_extensions/text_search.rb +3 -3
- data/lib/active_record/postgresql_extensions/triggers.rb +3 -3
- data/lib/active_record/postgresql_extensions/types.rb +104 -1
- data/lib/active_record/postgresql_extensions/utils.rb +35 -13
- data/lib/active_record/postgresql_extensions/vacuum.rb +1 -1
- data/lib/active_record/postgresql_extensions/version.rb +1 -1
- data/lib/active_record/postgresql_extensions/views.rb +137 -6
- data/lib/activerecord-postgresql-extensions.rb +13 -11
- data/test/{adapter_tests.rb → adapter_extensions_tests.rb} +96 -3
- data/test/constraints_tests.rb +216 -104
- data/test/event_triggers_tests.rb +109 -0
- data/test/extensions_tests.rb +47 -39
- data/test/functions_tests.rb +47 -38
- data/test/geometry_tests.rb +268 -135
- data/test/{index_tests.rb → indexes_tests.rb} +16 -16
- data/test/languages_tests.rb +26 -9
- data/test/materialized_views_tests.rb +174 -0
- data/test/permissions_tests.rb +159 -45
- data/test/roles_tests.rb +17 -7
- data/test/rules_tests.rb +14 -6
- data/test/schemas_tests.rb +35 -9
- data/test/sequences_tests.rb +9 -11
- data/test/tables_tests.rb +132 -42
- data/test/tablespace_tests.rb +21 -15
- data/test/test_helper.rb +56 -10
- data/test/text_search_tests.rb +42 -44
- data/test/trigger_tests.rb +1 -3
- data/test/types_tests.rb +95 -0
- data/test/vacuum_tests.rb +1 -3
- data/test/views_tests.rb +203 -0
- metadata +22 -16
data/test/tablespace_tests.rb
CHANGED
@@ -2,9 +2,7 @@
|
|
2
2
|
$: << File.dirname(__FILE__)
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
|
-
class TablespaceTests <
|
6
|
-
include PostgreSQLExtensionsTestHelper
|
7
|
-
|
5
|
+
class TablespaceTests < PostgreSQLExtensionsTestCase
|
8
6
|
def test_create_tablespace
|
9
7
|
Mig.create_tablespace('foo', '/tmp/foo')
|
10
8
|
Mig.create_tablespace('foo', '/tmp/foo', :owner => :bar)
|
@@ -41,23 +39,31 @@ class TablespaceTests < MiniTest::Unit::TestCase
|
|
41
39
|
], statements)
|
42
40
|
end
|
43
41
|
|
44
|
-
def
|
42
|
+
def test_alter_tablespace_parameters
|
45
43
|
Mig.alter_tablespace_parameters('foo', :seq_page_cost => 2.0, :random_page_cost => 5.0)
|
46
44
|
|
47
|
-
assert_equal([
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
);
|
45
|
+
assert_equal([ strip_heredoc(<<-SQL) ], statements)
|
46
|
+
ALTER TABLESPACE "foo" SET (
|
47
|
+
"seq_page_cost" = 2.0,
|
48
|
+
"random_page_cost" = 5.0
|
49
|
+
);
|
50
|
+
SQL
|
52
51
|
end
|
53
52
|
|
54
|
-
def
|
53
|
+
def test_reset_tablespace_parameters
|
55
54
|
Mig.reset_tablespace_parameters('foo', :seq_page_cost, :random_page_cost)
|
56
55
|
|
57
|
-
assert_equal([
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
);
|
56
|
+
assert_equal([ strip_heredoc(<<-SQL) ], statements)
|
57
|
+
ALTER TABLESPACE "foo" RESET (
|
58
|
+
"seq_page_cost",
|
59
|
+
"random_page_cost"
|
60
|
+
);
|
61
|
+
SQL
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_invalid_tablespace_parameters
|
65
|
+
assert_raises(ActiveRecord::InvalidTablespaceParameter) do
|
66
|
+
Mig.alter_tablespace_parameters('foo', :blart => 2.0)
|
67
|
+
end
|
62
68
|
end
|
63
69
|
end
|
data/test/test_helper.rb
CHANGED
@@ -1,9 +1,15 @@
|
|
1
1
|
|
2
|
-
ACTIVERECORD_GEM_VERSION = ENV['ACTIVERECORD_GEM_VERSION'] || '~> 3.2.0'
|
3
2
|
|
4
|
-
|
5
|
-
|
3
|
+
if RUBY_VERSION >= '1.9'
|
4
|
+
require 'simplecov'
|
5
|
+
|
6
|
+
SimpleCov.command_name('Unit Tests')
|
7
|
+
SimpleCov.start do
|
8
|
+
add_filter '/test/'
|
9
|
+
end
|
10
|
+
end
|
6
11
|
|
12
|
+
require 'rubygems'
|
7
13
|
require 'active_record'
|
8
14
|
require 'logger'
|
9
15
|
require 'minitest/autorun'
|
@@ -41,6 +47,7 @@ end
|
|
41
47
|
ActiveRecord::Base.establish_connection 'arunit'
|
42
48
|
ARBC = ActiveRecord::Base.connection
|
43
49
|
|
50
|
+
puts "Ruby version #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} - #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}"
|
44
51
|
puts "Testing against ActiveRecord #{Gem.loaded_specs['activerecord'].version.to_s}"
|
45
52
|
if postgresql_version = ActiveRecord::PostgreSQLExtensions.SERVER_VERSION
|
46
53
|
puts "PostgreSQL info from pg_catalog.version(): #{postgresql_version}"
|
@@ -53,29 +60,45 @@ else
|
|
53
60
|
end
|
54
61
|
|
55
62
|
class ActiveRecord::ConnectionAdapters::PostgreSQLAdapter
|
63
|
+
def real_execute
|
64
|
+
@real_execute = true
|
65
|
+
yield
|
66
|
+
ensure
|
67
|
+
@real_execute = false
|
68
|
+
end
|
69
|
+
|
56
70
|
def execute_with_statement_capture(*args)
|
57
71
|
PostgreSQLExtensionsTestHelper.add_statement(args.first)
|
58
72
|
|
59
|
-
if
|
60
|
-
|
61
|
-
|
73
|
+
if @real_execute
|
74
|
+
execute_without_statement_capture(*args)
|
75
|
+
else
|
76
|
+
if RUBY_PLATFORM == 'java'
|
77
|
+
if args.first =~ /pg_tables/
|
78
|
+
return execute_without_statement_capture(*args)
|
79
|
+
end
|
62
80
|
end
|
63
|
-
end
|
64
81
|
|
65
|
-
|
82
|
+
args.first
|
83
|
+
end
|
66
84
|
end
|
67
85
|
alias_method_chain :execute, :statement_capture
|
68
86
|
|
69
87
|
unless RUBY_PLATFORM == 'java'
|
70
88
|
def query_with_statement_capture(*args)
|
71
|
-
|
72
|
-
|
89
|
+
if @real_execute
|
90
|
+
query_without_statement_capture(*args)
|
91
|
+
else
|
92
|
+
PostgreSQLExtensionsTestHelper.add_statement(args.first)
|
93
|
+
end
|
73
94
|
end
|
74
95
|
alias_method_chain :query, :statement_capture
|
75
96
|
end
|
76
97
|
end
|
77
98
|
|
78
99
|
module PostgreSQLExtensionsTestHelper
|
100
|
+
include ActiveRecord::PostgreSQLExtensions::Utils
|
101
|
+
|
79
102
|
class << self
|
80
103
|
def statements
|
81
104
|
@statements ||= []
|
@@ -123,6 +146,29 @@ end
|
|
123
146
|
class Foo < ActiveRecord::Base
|
124
147
|
end
|
125
148
|
|
149
|
+
class PostgreSQLExtensionsTestCase < ActiveRecord::TestCase
|
150
|
+
include ActiveRecord::TestFixtures
|
151
|
+
include PostgreSQLExtensionsTestHelper
|
152
|
+
|
153
|
+
attr_writer :tagged_logger
|
154
|
+
|
155
|
+
def before_setup
|
156
|
+
if tagged_logger
|
157
|
+
heading = "#{self.class}: #{__name__}"
|
158
|
+
divider = '-' * heading.size
|
159
|
+
tagged_logger.info divider
|
160
|
+
tagged_logger.info heading
|
161
|
+
tagged_logger.info divider
|
162
|
+
end
|
163
|
+
super
|
164
|
+
end
|
165
|
+
|
166
|
+
private
|
167
|
+
def tagged_logger
|
168
|
+
@tagged_logger ||= (defined?(ActiveRecord::Base.logger) && ActiveRecord::Base.logger)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
126
172
|
if RUBY_VERSION >= '1.9'
|
127
173
|
MiniTest::Reporters.use!(MiniTest::Reporters::SpecReporter.new)
|
128
174
|
end
|
data/test/text_search_tests.rb
CHANGED
@@ -2,18 +2,16 @@
|
|
2
2
|
$: << File.dirname(__FILE__)
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
|
-
class TextSearchTests <
|
6
|
-
include PostgreSQLExtensionsTestHelper
|
7
|
-
|
5
|
+
class TextSearchTests < PostgreSQLExtensionsTestCase
|
8
6
|
def test_create_text_search_configuration
|
9
7
|
ARBC.create_text_search_configuration(:foo, :parser_name => 'bar')
|
10
8
|
ARBC.create_text_search_configuration(:foo, :source_config => 'bar')
|
11
9
|
ARBC.create_text_search_configuration(:foo, :source_config => { :pg_catalog => 'english' })
|
12
10
|
|
13
11
|
assert_equal([
|
14
|
-
|
15
|
-
|
16
|
-
|
12
|
+
%{CREATE TEXT SEARCH CONFIGURATION "foo" (PARSER = "bar");},
|
13
|
+
%{CREATE TEXT SEARCH CONFIGURATION "foo" (COPY = "bar");},
|
14
|
+
%{CREATE TEXT SEARCH CONFIGURATION "foo" (COPY = "pg_catalog"."english");}
|
17
15
|
], statements)
|
18
16
|
|
19
17
|
assert_raises(ArgumentError) do
|
@@ -30,8 +28,8 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
30
28
|
ARBC.add_text_search_configuration_mapping(:foo, [ :asciiword, :word ], [ :bar, :up ])
|
31
29
|
|
32
30
|
assert_equal([
|
33
|
-
|
34
|
-
|
31
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ADD MAPPING FOR "asciiword" WITH "bar";},
|
32
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ADD MAPPING FOR "asciiword", "word" WITH "bar", "up";}
|
35
33
|
], statements)
|
36
34
|
end
|
37
35
|
|
@@ -40,8 +38,8 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
40
38
|
ARBC.alter_text_search_configuration_mapping(:foo, [ :asciiword, :word ], [ :bar, :up ])
|
41
39
|
|
42
40
|
assert_equal([
|
43
|
-
|
44
|
-
|
41
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ALTER MAPPING FOR "asciiword" WITH "bar";},
|
42
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ALTER MAPPING FOR "asciiword", "word" WITH "bar", "up";}
|
45
43
|
], statements)
|
46
44
|
end
|
47
45
|
|
@@ -49,7 +47,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
49
47
|
ARBC.replace_text_search_configuration_dictionary(:foo, :bar, :ometer)
|
50
48
|
|
51
49
|
assert_equal([
|
52
|
-
|
50
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ALTER MAPPING REPLACE "bar" WITH "ometer";}
|
53
51
|
], statements)
|
54
52
|
end
|
55
53
|
|
@@ -58,8 +56,8 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
58
56
|
ARBC.alter_text_search_configuration_mapping_replace_dictionary(:foo, [ :hello, :world ], :old, :new)
|
59
57
|
|
60
58
|
assert_equal([
|
61
|
-
|
62
|
-
|
59
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ALTER MAPPING FOR "bar" REPLACE "old" WITH "new";},
|
60
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" ALTER MAPPING FOR "hello", "world" REPLACE "old" WITH "new";}
|
63
61
|
], statements)
|
64
62
|
end
|
65
63
|
|
@@ -69,9 +67,9 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
69
67
|
ARBC.drop_text_search_configuration_mapping(:foo, :bar, :if_exists => true)
|
70
68
|
|
71
69
|
assert_equal([
|
72
|
-
|
73
|
-
|
74
|
-
|
70
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" DROP MAPPING FOR "bar";},
|
71
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" DROP MAPPING FOR "bar", "blort";},
|
72
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" DROP MAPPING IF EXISTS FOR "bar";}
|
75
73
|
], statements)
|
76
74
|
|
77
75
|
assert_raises(ArgumentError) do
|
@@ -87,7 +85,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
87
85
|
ARBC.rename_text_search_configuration(:foo, :bar)
|
88
86
|
|
89
87
|
assert_equal([
|
90
|
-
|
88
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" RENAME TO "bar";}
|
91
89
|
], statements)
|
92
90
|
end
|
93
91
|
|
@@ -95,7 +93,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
95
93
|
ARBC.alter_text_search_configuration_owner(:foo, :bar)
|
96
94
|
|
97
95
|
assert_equal([
|
98
|
-
|
96
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" OWNER TO "bar";}
|
99
97
|
], statements)
|
100
98
|
end
|
101
99
|
|
@@ -103,7 +101,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
103
101
|
ARBC.alter_text_search_configuration_schema(:foo, :bar)
|
104
102
|
|
105
103
|
assert_equal([
|
106
|
-
|
104
|
+
%{ALTER TEXT SEARCH CONFIGURATION "foo" SET SCHEMA "bar";}
|
107
105
|
], statements)
|
108
106
|
end
|
109
107
|
|
@@ -113,9 +111,9 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
113
111
|
ARBC.drop_text_search_configuration(:foo, :if_exists => true, :cascade => true)
|
114
112
|
|
115
113
|
assert_equal([
|
116
|
-
|
117
|
-
|
118
|
-
|
114
|
+
%{DROP TEXT SEARCH CONFIGURATION "foo";},
|
115
|
+
%{DROP TEXT SEARCH CONFIGURATION "foo"."bar";},
|
116
|
+
%{DROP TEXT SEARCH CONFIGURATION IF EXISTS "foo" CASCADE;}
|
119
117
|
], statements)
|
120
118
|
end
|
121
119
|
|
@@ -124,8 +122,8 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
124
122
|
ARBC.create_text_search_dictionary(:foo, { :pg_catalog => :snowball }, { :language => 'english' })
|
125
123
|
|
126
124
|
assert_equal([
|
127
|
-
|
128
|
-
|
125
|
+
%{CREATE TEXT SEARCH DICTIONARY "foo" (TEMPLATE = "bar", "language" = 'english');},
|
126
|
+
%{CREATE TEXT SEARCH DICTIONARY "foo" (TEMPLATE = "pg_catalog"."snowball", "language" = 'english');}
|
129
127
|
], statements)
|
130
128
|
end
|
131
129
|
|
@@ -135,9 +133,9 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
135
133
|
ARBC.drop_text_search_dictionary(:foo, :if_exists => true, :cascade => true)
|
136
134
|
|
137
135
|
assert_equal([
|
138
|
-
|
139
|
-
|
140
|
-
|
136
|
+
%{DROP TEXT SEARCH DICTIONARY "foo";},
|
137
|
+
%{DROP TEXT SEARCH DICTIONARY "foo"."bar";},
|
138
|
+
%{DROP TEXT SEARCH DICTIONARY IF EXISTS "foo" CASCADE;}
|
141
139
|
], statements)
|
142
140
|
end
|
143
141
|
|
@@ -145,7 +143,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
145
143
|
ARBC.rename_text_search_dictionary(:foo, :bar)
|
146
144
|
|
147
145
|
assert_equal([
|
148
|
-
|
146
|
+
%{ALTER TEXT SEARCH DICTIONARY "foo" RENAME TO "bar";}
|
149
147
|
], statements)
|
150
148
|
end
|
151
149
|
|
@@ -153,7 +151,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
153
151
|
ARBC.alter_text_search_dictionary_owner(:foo, :bar)
|
154
152
|
|
155
153
|
assert_equal([
|
156
|
-
|
154
|
+
%{ALTER TEXT SEARCH DICTIONARY "foo" OWNER TO "bar";}
|
157
155
|
], statements)
|
158
156
|
end
|
159
157
|
|
@@ -161,7 +159,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
161
159
|
ARBC.alter_text_search_dictionary_schema(:foo, :bar)
|
162
160
|
|
163
161
|
assert_equal([
|
164
|
-
|
162
|
+
%{ALTER TEXT SEARCH DICTIONARY "foo" SET SCHEMA "bar";}
|
165
163
|
], statements)
|
166
164
|
end
|
167
165
|
|
@@ -170,8 +168,8 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
170
168
|
ARBC.create_text_search_template(:foo, :lexize => 'bar', :init => 'lol')
|
171
169
|
|
172
170
|
assert_equal([
|
173
|
-
|
174
|
-
|
171
|
+
%{CREATE TEXT SEARCH TEMPLATE "foo" (LEXIZE = "bar");},
|
172
|
+
%{CREATE TEXT SEARCH TEMPLATE "foo" (INIT = "lol", LEXIZE = "bar");}
|
175
173
|
], statements)
|
176
174
|
|
177
175
|
assert_raises(ArgumentError) do
|
@@ -185,9 +183,9 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
185
183
|
ARBC.drop_text_search_template(:foo, :if_exists => true, :cascade => true)
|
186
184
|
|
187
185
|
assert_equal([
|
188
|
-
|
189
|
-
|
190
|
-
|
186
|
+
%{DROP TEXT SEARCH TEMPLATE "foo";},
|
187
|
+
%{DROP TEXT SEARCH TEMPLATE "foo"."bar";},
|
188
|
+
%{DROP TEXT SEARCH TEMPLATE IF EXISTS "foo" CASCADE;}
|
191
189
|
], statements)
|
192
190
|
end
|
193
191
|
|
@@ -195,7 +193,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
195
193
|
ARBC.rename_text_search_template(:foo, :bar)
|
196
194
|
|
197
195
|
assert_equal([
|
198
|
-
|
196
|
+
%{ALTER TEXT SEARCH TEMPLATE "foo" RENAME TO "bar";}
|
199
197
|
], statements)
|
200
198
|
end
|
201
199
|
|
@@ -203,7 +201,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
203
201
|
ARBC.alter_text_search_template_schema(:foo, :bar)
|
204
202
|
|
205
203
|
assert_equal([
|
206
|
-
|
204
|
+
%{ALTER TEXT SEARCH TEMPLATE "foo" SET SCHEMA "bar";}
|
207
205
|
], statements)
|
208
206
|
end
|
209
207
|
|
@@ -224,8 +222,8 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
224
222
|
})
|
225
223
|
|
226
224
|
assert_equal([
|
227
|
-
|
228
|
-
|
225
|
+
%{CREATE TEXT SEARCH PARSER "foo" (START = "start", GETTOKEN = "gettoken", END = "end", LEXTYPES = "lextypes");},
|
226
|
+
%{CREATE TEXT SEARCH PARSER "foo" (START = "start", GETTOKEN = "gettoken", END = "end", LEXTYPES = "lextypes", HEADLINE = "headline");}
|
229
227
|
], statements)
|
230
228
|
|
231
229
|
assert_raises(ArgumentError) do
|
@@ -239,9 +237,9 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
239
237
|
ARBC.drop_text_search_parser(:foo, :if_exists => true, :cascade => true)
|
240
238
|
|
241
239
|
assert_equal([
|
242
|
-
|
243
|
-
|
244
|
-
|
240
|
+
%{DROP TEXT SEARCH PARSER "foo";},
|
241
|
+
%{DROP TEXT SEARCH PARSER "foo"."bar";},
|
242
|
+
%{DROP TEXT SEARCH PARSER IF EXISTS "foo" CASCADE;}
|
245
243
|
], statements)
|
246
244
|
end
|
247
245
|
|
@@ -249,7 +247,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
249
247
|
ARBC.rename_text_search_parser(:foo, :bar)
|
250
248
|
|
251
249
|
assert_equal([
|
252
|
-
|
250
|
+
%{ALTER TEXT SEARCH PARSER "foo" RENAME TO "bar";}
|
253
251
|
], statements)
|
254
252
|
end
|
255
253
|
|
@@ -257,7 +255,7 @@ class TextSearchTests < MiniTest::Unit::TestCase
|
|
257
255
|
ARBC.alter_text_search_parser_schema(:foo, :bar)
|
258
256
|
|
259
257
|
assert_equal([
|
260
|
-
|
258
|
+
%{ALTER TEXT SEARCH PARSER "foo" SET SCHEMA "bar";}
|
261
259
|
], statements)
|
262
260
|
end
|
263
261
|
end
|
data/test/trigger_tests.rb
CHANGED
@@ -2,9 +2,7 @@
|
|
2
2
|
$: << File.dirname(__FILE__)
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
|
-
class TriggerTests <
|
6
|
-
include PostgreSQLExtensionsTestHelper
|
7
|
-
|
5
|
+
class TriggerTests < PostgreSQLExtensionsTestCase
|
8
6
|
def test_enable_triggers
|
9
7
|
Foo.enable_triggers
|
10
8
|
Foo.enable_triggers(:bar)
|
data/test/types_tests.rb
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
|
2
|
+
$: << File.dirname(__FILE__)
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class TypesTests < PostgreSQLExtensionsTestCase
|
6
|
+
def test_types
|
7
|
+
types = ARBC.real_execute do
|
8
|
+
ARBC.types
|
9
|
+
end
|
10
|
+
|
11
|
+
assert_kind_of(Array, types)
|
12
|
+
assert_includes(types, 'oid')
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_type_exists
|
16
|
+
ARBC.real_execute do
|
17
|
+
assert(ARBC.type_exists?(:oid))
|
18
|
+
assert(ARBC.type_exists?('oid'))
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class EnumTests < PostgreSQLExtensionsTestCase
|
23
|
+
def setup
|
24
|
+
ARBC.real_execute do
|
25
|
+
Mig.drop_type(:foo_enum, :if_exists => true)
|
26
|
+
end
|
27
|
+
|
28
|
+
super
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_create_enum
|
32
|
+
Mig.create_enum(:foo_enum)
|
33
|
+
Mig.create_enum(:foo_enum, %w{ one two three })
|
34
|
+
Mig.create_enum(:foo_enum, :one, :two, :three)
|
35
|
+
|
36
|
+
assert_equal([
|
37
|
+
%{CREATE TYPE "foo_enum" AS ENUM ();},
|
38
|
+
%{CREATE TYPE "foo_enum" AS ENUM ('one', 'two', 'three');},
|
39
|
+
%{CREATE TYPE "foo_enum" AS ENUM ('one', 'two', 'three');}
|
40
|
+
], statements)
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_add_enum_value
|
44
|
+
Mig.create_enum(:foo_enum)
|
45
|
+
Mig.add_enum_value(:foo_enum, :foo)
|
46
|
+
Mig.add_enum_value(:foo_enum, :bar, :before => :foo)
|
47
|
+
Mig.add_enum_value(:foo_enum, :blort, :after => :foo)
|
48
|
+
|
49
|
+
assert_equal([
|
50
|
+
%{CREATE TYPE "foo_enum" AS ENUM ();},
|
51
|
+
%{ALTER TYPE "foo_enum" ADD VALUE 'foo';},
|
52
|
+
%{ALTER TYPE "foo_enum" ADD VALUE 'bar' BEFORE 'foo';},
|
53
|
+
%{ALTER TYPE "foo_enum" ADD VALUE 'blort' AFTER 'foo';}
|
54
|
+
], statements)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_add_enum_value_if_not_exists
|
58
|
+
skip unless ActiveRecord::PostgreSQLExtensions.SERVER_VERSION >= '9.3'
|
59
|
+
|
60
|
+
Mig.add_enum_value(:foo_enum, :baz, :if_not_exists => true)
|
61
|
+
|
62
|
+
assert_equal([
|
63
|
+
%{ALTER TYPE "foo_enum" ADD VALUE IF NOT EXISTS 'baz';}
|
64
|
+
], statements)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_drop_type
|
68
|
+
Mig.drop_type(:foo_enum)
|
69
|
+
Mig.drop_type(:foo_enum, :if_exists => true)
|
70
|
+
Mig.drop_type(:foo_enum, :cascade => true)
|
71
|
+
Mig.drop_type(:foo_enum, :bar_enum)
|
72
|
+
|
73
|
+
assert_equal([
|
74
|
+
%{DROP TYPE "foo_enum";},
|
75
|
+
%{DROP TYPE IF EXISTS "foo_enum";},
|
76
|
+
%{DROP TYPE "foo_enum" CASCADE;},
|
77
|
+
%{DROP TYPE "foo_enum", "bar_enum";}
|
78
|
+
], statements)
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_enum_values
|
82
|
+
ARBC.real_execute do
|
83
|
+
Mig.create_enum(:foo_enum, :one, :two, :three)
|
84
|
+
|
85
|
+
assert_equal(%w{ one two three }, ARBC.enum_values(:foo_enum))
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_both_before_and_after_add_enum_value
|
90
|
+
assert_raises(ActiveRecord::InvalidAddEnumValueOptions) do
|
91
|
+
Mig.add_enum_value(:foo_enum, :blort, :after => :foo, :before => :bar)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|