sequel 4.5.0 → 4.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +14 -0
- data/README.rdoc +0 -1
- data/doc/mssql_stored_procedures.rdoc +43 -0
- data/doc/release_notes/3.18.0.txt +2 -3
- data/doc/release_notes/3.9.0.txt +1 -1
- data/doc/release_notes/4.6.0.txt +30 -0
- data/doc/security.rdoc +7 -0
- data/lib/sequel/adapters/jdbc/h2.rb +4 -4
- data/lib/sequel/adapters/jdbc/postgresql.rb +4 -0
- data/lib/sequel/adapters/oracle.rb +1 -0
- data/lib/sequel/adapters/shared/mssql.rb +94 -1
- data/lib/sequel/adapters/shared/mysql.rb +4 -4
- data/lib/sequel/adapters/shared/postgres.rb +4 -4
- data/lib/sequel/adapters/tinytds.rb +22 -4
- data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +8 -2
- data/lib/sequel/database/dataset_defaults.rb +1 -1
- data/lib/sequel/model/associations.rb +1 -1
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/mssql_spec.rb +35 -0
- data/spec/adapters/oracle_spec.rb +4 -4
- data/spec/adapters/postgres_spec.rb +93 -93
- data/spec/adapters/spec_helper.rb +3 -1
- data/spec/bin_spec.rb +2 -0
- data/spec/core/database_spec.rb +22 -22
- data/spec/core/dataset_spec.rb +8 -8
- data/spec/core/expression_filters_spec.rb +1 -1
- data/spec/core/mock_adapter_spec.rb +2 -2
- data/spec/core/schema_generator_spec.rb +3 -3
- data/spec/core/spec_helper.rb +3 -1
- data/spec/core_extensions_spec.rb +3 -1
- data/spec/extensions/auto_validations_spec.rb +17 -17
- data/spec/extensions/caching_spec.rb +4 -4
- data/spec/extensions/error_splitter_spec.rb +1 -1
- data/spec/extensions/hook_class_methods_spec.rb +6 -6
- data/spec/extensions/migration_spec.rb +53 -53
- data/spec/extensions/pagination_spec.rb +9 -9
- data/spec/extensions/pg_array_associations_spec.rb +2 -2
- data/spec/extensions/pg_array_spec.rb +2 -2
- data/spec/extensions/pg_hstore_spec.rb +15 -15
- data/spec/extensions/pg_interval_spec.rb +3 -3
- data/spec/extensions/pg_range_spec.rb +20 -20
- data/spec/extensions/pg_row_spec.rb +1 -1
- data/spec/extensions/schema_caching_spec.rb +3 -3
- data/spec/extensions/spec_helper.rb +3 -1
- data/spec/extensions/static_cache_spec.rb +16 -16
- data/spec/extensions/tree_spec.rb +8 -8
- data/spec/extensions/validation_class_methods_spec.rb +10 -10
- data/spec/integration/database_test.rb +3 -3
- data/spec/integration/dataset_test.rb +6 -0
- data/spec/integration/migrator_test.rb +67 -67
- data/spec/integration/model_test.rb +2 -2
- data/spec/integration/schema_test.rb +1 -1
- data/spec/integration/spec_helper.rb +3 -1
- data/spec/integration/transaction_test.rb +2 -2
- data/spec/model/association_reflection_spec.rb +4 -4
- data/spec/model/associations_spec.rb +1 -1
- data/spec/model/class_dataset_methods_spec.rb +1 -1
- data/spec/model/eager_loading_spec.rb +7 -0
- data/spec/model/model_spec.rb +4 -4
- data/spec/model/record_spec.rb +20 -20
- data/spec/model/spec_helper.rb +2 -1
- data/spec/model/validations_spec.rb +1 -1
- data/spec/rspec_helper.rb +18 -0
- metadata +8 -3
data/spec/core/dataset_spec.rb
CHANGED
@@ -39,7 +39,7 @@ describe "Dataset" do
|
|
39
39
|
ds._fetch = {:x=>1}
|
40
40
|
called = false
|
41
41
|
ds.each{|a| called = true; a.should == {:x=>1}}
|
42
|
-
called.should
|
42
|
+
called.should == true
|
43
43
|
end
|
44
44
|
|
45
45
|
specify "should get quote_identifiers default from database" do
|
@@ -4327,11 +4327,11 @@ end
|
|
4327
4327
|
|
4328
4328
|
describe "Dataset feature defaults" do
|
4329
4329
|
it "should not require aliases for recursive CTEs by default" do
|
4330
|
-
Sequel::Database.new.dataset.recursive_cte_requires_column_aliases?.should
|
4330
|
+
Sequel::Database.new.dataset.recursive_cte_requires_column_aliases?.should == false
|
4331
4331
|
end
|
4332
4332
|
|
4333
4333
|
it "should not require placeholder type specifiers by default" do
|
4334
|
-
Sequel::Database.new.dataset.requires_placeholder_type_specifiers?.should
|
4334
|
+
Sequel::Database.new.dataset.requires_placeholder_type_specifiers?.should == false
|
4335
4335
|
end
|
4336
4336
|
end
|
4337
4337
|
|
@@ -4363,13 +4363,13 @@ describe "Dataset extensions" do
|
|
4363
4363
|
specify "should be able to register an extension with a block and Database#extension call the block" do
|
4364
4364
|
@ds.quote_identifiers = false
|
4365
4365
|
Sequel::Dataset.register_extension(:foo){|db| db.quote_identifiers = true}
|
4366
|
-
@ds.extension(:foo).quote_identifiers?.should
|
4366
|
+
@ds.extension(:foo).quote_identifiers?.should == true
|
4367
4367
|
end
|
4368
4368
|
|
4369
4369
|
specify "should be able to register an extension with a callable and Database#extension call the callable" do
|
4370
4370
|
@ds.quote_identifiers = false
|
4371
4371
|
Sequel::Dataset.register_extension(:foo, proc{|db| db.quote_identifiers = true})
|
4372
|
-
@ds.extension(:foo).quote_identifiers?.should
|
4372
|
+
@ds.extension(:foo).quote_identifiers?.should == true
|
4373
4373
|
end
|
4374
4374
|
|
4375
4375
|
specify "should be able to load multiple extensions in the same call" do
|
@@ -4378,7 +4378,7 @@ describe "Dataset extensions" do
|
|
4378
4378
|
Sequel::Dataset.register_extension(:foo, proc{|ds| ds.quote_identifiers = true})
|
4379
4379
|
Sequel::Dataset.register_extension(:bar, proc{|ds| ds.identifier_input_method = nil})
|
4380
4380
|
ds = @ds.extension(:foo, :bar)
|
4381
|
-
ds.quote_identifiers?.should
|
4381
|
+
ds.quote_identifiers?.should == true
|
4382
4382
|
ds.identifier_input_method.should be_nil
|
4383
4383
|
end
|
4384
4384
|
|
@@ -4576,13 +4576,13 @@ end
|
|
4576
4576
|
|
4577
4577
|
describe "Dataset#supports_replace?" do
|
4578
4578
|
it "should be false by default" do
|
4579
|
-
Sequel::Dataset.new(nil).supports_replace?.should
|
4579
|
+
Sequel::Dataset.new(nil).supports_replace?.should == false
|
4580
4580
|
end
|
4581
4581
|
end
|
4582
4582
|
|
4583
4583
|
describe "Dataset#supports_lateral_subqueries?" do
|
4584
4584
|
it "should be false by default" do
|
4585
|
-
Sequel::Dataset.new(nil).supports_lateral_subqueries?.should
|
4585
|
+
Sequel::Dataset.new(nil).supports_lateral_subqueries?.should == false
|
4586
4586
|
end
|
4587
4587
|
end
|
4588
4588
|
|
@@ -14,7 +14,7 @@ describe "Sequel Mock Adapter" do
|
|
14
14
|
specify "should each not return any rows by default" do
|
15
15
|
called = false
|
16
16
|
Sequel.mock[:t].each{|r| called = true}
|
17
|
-
called.should
|
17
|
+
called.should == false
|
18
18
|
end
|
19
19
|
|
20
20
|
specify "should return 0 for update/delete/with_sql_delete/execute_dui by default" do
|
@@ -299,7 +299,7 @@ describe "Sequel Mock Adapter" do
|
|
299
299
|
end
|
300
300
|
|
301
301
|
specify "should not quote identifiers by default" do
|
302
|
-
Sequel.mock.send(:quote_identifiers_default).should
|
302
|
+
Sequel.mock.send(:quote_identifiers_default).should == false
|
303
303
|
end
|
304
304
|
|
305
305
|
specify "should allow overriding of server_version" do
|
@@ -20,7 +20,7 @@ describe Sequel::Schema::Generator do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should respond to everything" do
|
23
|
-
@generator.respond_to?(:foo).should
|
23
|
+
@generator.respond_to?(:foo).should == true
|
24
24
|
end if RUBY_VERSION >= '1.9'
|
25
25
|
|
26
26
|
it "should primary key column first" do
|
@@ -68,9 +68,9 @@ describe Sequel::Schema::Generator do
|
|
68
68
|
|
69
69
|
it "finds columns" do
|
70
70
|
[:title, :body, :parent_id, :id].each do |col|
|
71
|
-
@generator.has_column?(col).should
|
71
|
+
@generator.has_column?(col).should == true
|
72
72
|
end
|
73
|
-
@generator.has_column?(:foo).should_not
|
73
|
+
@generator.has_column?(:foo).should_not == true
|
74
74
|
end
|
75
75
|
|
76
76
|
it "creates constraints" do
|
data/spec/core/spec_helper.rb
CHANGED
@@ -11,7 +11,9 @@ unless Object.const_defined?('Sequel')
|
|
11
11
|
end
|
12
12
|
Sequel::Deprecation.backtrace_filter = lambda{|line, lineno| lineno < 4 || line =~ /_spec\.rb/}
|
13
13
|
|
14
|
-
(
|
14
|
+
require File.join(File.dirname(File.expand_path(__FILE__)), "../rspec_helper.rb")
|
15
|
+
|
16
|
+
RSPEC_EXAMPLE_GROUP.class_eval do
|
15
17
|
def meta_def(obj, name, &block)
|
16
18
|
(class << obj; self end).send(:define_method, name, &block)
|
17
19
|
end
|
@@ -22,9 +22,11 @@ if RUBY_VERSION < '1.9.0'
|
|
22
22
|
Sequel.extension :ruby18_symbol_extensions
|
23
23
|
end
|
24
24
|
|
25
|
+
require File.join(File.dirname(File.expand_path(__FILE__)), "rspec_helper.rb")
|
26
|
+
|
25
27
|
describe "Sequel core extensions" do
|
26
28
|
specify "should have Sequel.core_extensions? be true if enabled" do
|
27
|
-
Sequel.core_extensions?.should
|
29
|
+
Sequel.core_extensions?.should == true
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -27,19 +27,19 @@ describe "Sequel::Plugins::AutoValidations" do
|
|
27
27
|
end
|
28
28
|
|
29
29
|
it "should have automatically created validations" do
|
30
|
-
@m.valid?.should
|
30
|
+
@m.valid?.should == false
|
31
31
|
@m.errors.should == {:d=>["is not present"], :name=>["is not present"]}
|
32
32
|
|
33
33
|
@m.name = ''
|
34
|
-
@m.valid?.should
|
34
|
+
@m.valid?.should == false
|
35
35
|
@m.errors.should == {:d=>["is not present"]}
|
36
36
|
|
37
37
|
@m.set(:d=>'/', :num=>'a', :name=>'1')
|
38
|
-
@m.valid?.should
|
38
|
+
@m.valid?.should == false
|
39
39
|
@m.errors.should == {:d=>["is not a valid date"], :num=>["is not a valid integer"]}
|
40
40
|
|
41
41
|
@m.set(:d=>Date.today, :num=>1)
|
42
|
-
@m.valid?.should
|
42
|
+
@m.valid?.should == false
|
43
43
|
@m.errors.should == {[:name, :num]=>["is already taken"]}
|
44
44
|
end
|
45
45
|
|
@@ -47,20 +47,20 @@ describe "Sequel::Plugins::AutoValidations" do
|
|
47
47
|
def (@m.db).supports_index_parsing?() false end
|
48
48
|
@m.model.send(:setup_auto_validations)
|
49
49
|
@m.set(:d=>Date.today, :num=>1, :name=>'1')
|
50
|
-
@m.valid?.should
|
50
|
+
@m.valid?.should == true
|
51
51
|
end
|
52
52
|
|
53
53
|
it "should support :not_null=>:presence option" do
|
54
54
|
@c.plugin :auto_validations, :not_null=>:presence
|
55
55
|
@m.set(:d=>Date.today, :num=>'')
|
56
|
-
@m.valid?.should
|
56
|
+
@m.valid?.should == false
|
57
57
|
@m.errors.should == {:name=>["is not present"]}
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should automatically validate explicit nil values for columns with not nil defaults" do
|
61
61
|
@m.set(:d=>Date.today, :name=>1, :nnd=>nil)
|
62
62
|
@m.id = nil
|
63
|
-
@m.valid?.should
|
63
|
+
@m.valid?.should == false
|
64
64
|
@m.errors.should == {:id=>["is not present"], :nnd=>["is not present"]}
|
65
65
|
end
|
66
66
|
|
@@ -68,46 +68,46 @@ describe "Sequel::Plugins::AutoValidations" do
|
|
68
68
|
@c = Class.new(@c)
|
69
69
|
@m = @c.new
|
70
70
|
@c.skip_auto_validations(:not_null)
|
71
|
-
@m.valid?.should
|
71
|
+
@m.valid?.should == true
|
72
72
|
|
73
73
|
@m.set(:d=>'/', :num=>'a', :name=>'1')
|
74
|
-
@m.valid?.should
|
74
|
+
@m.valid?.should == false
|
75
75
|
@m.errors.should == {:d=>["is not a valid date"], :num=>["is not a valid integer"]}
|
76
76
|
|
77
77
|
@c.skip_auto_validations(:types)
|
78
|
-
@m.valid?.should
|
78
|
+
@m.valid?.should == false
|
79
79
|
@m.errors.should == {[:name, :num]=>["is already taken"]}
|
80
80
|
|
81
81
|
@c.skip_auto_validations(:unique)
|
82
|
-
@m.valid?.should
|
82
|
+
@m.valid?.should == true
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should allow skipping all auto validations" do
|
86
86
|
@c = Class.new(@c)
|
87
87
|
@m = @c.new
|
88
88
|
@c.skip_auto_validations(:all)
|
89
|
-
@m.valid?.should
|
89
|
+
@m.valid?.should == true
|
90
90
|
@m.set(:d=>'/', :num=>'a', :name=>'1')
|
91
|
-
@m.valid?.should
|
91
|
+
@m.valid?.should == true
|
92
92
|
end
|
93
93
|
|
94
94
|
it "should work correctly in subclasses" do
|
95
95
|
@c = Class.new(@c)
|
96
96
|
@m = @c.new
|
97
|
-
@m.valid?.should
|
97
|
+
@m.valid?.should == false
|
98
98
|
@m.errors.should == {:d=>["is not present"], :name=>["is not present"]}
|
99
99
|
|
100
100
|
@m.set(:d=>'/', :num=>'a', :name=>'1')
|
101
|
-
@m.valid?.should
|
101
|
+
@m.valid?.should == false
|
102
102
|
@m.errors.should == {:d=>["is not a valid date"], :num=>["is not a valid integer"]}
|
103
103
|
|
104
104
|
@m.set(:d=>Date.today, :num=>1)
|
105
|
-
@m.valid?.should
|
105
|
+
@m.valid?.should == false
|
106
106
|
@m.errors.should == {[:name, :num]=>["is already taken"]}
|
107
107
|
end
|
108
108
|
|
109
109
|
it "should work correctly when changing the dataset" do
|
110
110
|
@c.set_dataset(@c.db[:foo])
|
111
|
-
@c.new.valid?.should
|
111
|
+
@c.new.valid?.should == true
|
112
112
|
end
|
113
113
|
end
|
@@ -173,14 +173,14 @@ describe Sequel::Model, "caching" do
|
|
173
173
|
@cache[m.cache_key].should == m
|
174
174
|
m.name = 'hey'
|
175
175
|
m.save
|
176
|
-
@cache.has_key?(m.cache_key).should
|
176
|
+
@cache.has_key?(m.cache_key).should == false
|
177
177
|
@c.db.sqls.should == ["SELECT * FROM items WHERE id = 1", "UPDATE items SET name = 'hey' WHERE (id = 1)"]
|
178
178
|
|
179
179
|
m = @c2[1]
|
180
180
|
@cache[m.cache_key].should == m
|
181
181
|
m.name = 'hey'
|
182
182
|
m.save
|
183
|
-
@cache.has_key?(m.cache_key).should
|
183
|
+
@cache.has_key?(m.cache_key).should == false
|
184
184
|
@c.db.sqls.should == ["SELECT * FROM items WHERE id = 1", "UPDATE items SET name = 'hey' WHERE (id = 1)"]
|
185
185
|
end
|
186
186
|
|
@@ -188,13 +188,13 @@ describe Sequel::Model, "caching" do
|
|
188
188
|
m = @c[1]
|
189
189
|
@cache[m.cache_key].should == m
|
190
190
|
m.delete
|
191
|
-
@cache.has_key?(m.cache_key).should
|
191
|
+
@cache.has_key?(m.cache_key).should == false
|
192
192
|
@c.db.sqls.should == ["SELECT * FROM items WHERE id = 1", "DELETE FROM items WHERE id = 1"]
|
193
193
|
|
194
194
|
m = @c2[1]
|
195
195
|
@cache[m.cache_key].should == m
|
196
196
|
m.delete
|
197
|
-
@cache.has_key?(m.cache_key).should
|
197
|
+
@cache.has_key?(m.cache_key).should == false
|
198
198
|
@c.db.sqls.should == ["SELECT * FROM items WHERE id = 1", "DELETE FROM items WHERE id = 1"]
|
199
199
|
end
|
200
200
|
|
@@ -11,7 +11,7 @@ describe "Sequel::Plugins::ErrorSplitter" do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "should split errors for multiple columns and assign them to each column" do
|
14
|
-
@m.valid?.should
|
14
|
+
@m.valid?.should == false
|
15
15
|
@m.errors.should == {:a=>['is bad'], :b=>['is bad']}
|
16
16
|
end
|
17
17
|
end
|
@@ -354,17 +354,17 @@ describe "Model.has_hooks?" do
|
|
354
354
|
end
|
355
355
|
|
356
356
|
specify "should return false if no hooks are defined" do
|
357
|
-
@c.has_hooks?(:before_save).should
|
357
|
+
@c.has_hooks?(:before_save).should == false
|
358
358
|
end
|
359
359
|
|
360
360
|
specify "should return true if hooks are defined" do
|
361
361
|
@c.before_save {'blah'}
|
362
|
-
@c.has_hooks?(:before_save).should
|
362
|
+
@c.has_hooks?(:before_save).should == true
|
363
363
|
end
|
364
364
|
|
365
365
|
specify "should return true if hooks are inherited" do
|
366
366
|
@d = Class.new(@c)
|
367
|
-
@d.has_hooks?(:before_save).should
|
367
|
+
@d.has_hooks?(:before_save).should == false
|
368
368
|
end
|
369
369
|
end
|
370
370
|
|
@@ -399,15 +399,15 @@ describe "Model#add_hook_type" do
|
|
399
399
|
specify "it should return true for bar when before_bar and after_bar hooks are returing true" do
|
400
400
|
a = 1
|
401
401
|
@f.before_bar { a += 1}
|
402
|
-
@f.new.bar.should
|
402
|
+
@f.new.bar.should == true
|
403
403
|
a.should == 2
|
404
404
|
@f.after_bar { a *= 2}
|
405
|
-
@f.new.bar.should
|
405
|
+
@f.new.bar.should == true
|
406
406
|
a.should == 6
|
407
407
|
end
|
408
408
|
|
409
409
|
specify "it should return nil for bar when before_bar and after_bar hooks are returing false" do
|
410
|
-
@f.new.bar.should
|
410
|
+
@f.new.bar.should == true
|
411
411
|
@f.after_bar { false }
|
412
412
|
@f.new.bar.should == :a
|
413
413
|
@f.before_bar { false }
|
@@ -60,8 +60,8 @@ describe "Migration.apply" do
|
|
60
60
|
|
61
61
|
specify "should respond to the methods the database responds to" do
|
62
62
|
m = Sequel::Migration.new(Sequel.mock)
|
63
|
-
m.respond_to?(:foo).should
|
64
|
-
m.respond_to?(:execute).should
|
63
|
+
m.respond_to?(:foo).should == false
|
64
|
+
m.respond_to?(:execute).should == true
|
65
65
|
end if RUBY_VERSION >= '1.9'
|
66
66
|
end
|
67
67
|
|
@@ -292,16 +292,16 @@ describe "Sequel::IntegerMigrator" do
|
|
292
292
|
end
|
293
293
|
|
294
294
|
specify "should automatically create the schema_info table with the version column" do
|
295
|
-
@db.table_exists?(:schema_info).should
|
295
|
+
@db.table_exists?(:schema_info).should == false
|
296
296
|
Sequel::Migrator.run(@db, @dirname, :target=>0)
|
297
|
-
@db.table_exists?(:schema_info).should
|
297
|
+
@db.table_exists?(:schema_info).should == true
|
298
298
|
@db.dataset.columns.should == [:version]
|
299
299
|
end
|
300
300
|
|
301
301
|
specify "should allow specifying the table and columns" do
|
302
|
-
@db.table_exists?(:si).should
|
302
|
+
@db.table_exists?(:si).should == false
|
303
303
|
Sequel::Migrator.run(@db, @dirname, :target=>0, :table=>:si, :column=>:sic)
|
304
|
-
@db.table_exists?(:si).should
|
304
|
+
@db.table_exists?(:si).should == true
|
305
305
|
@db.dataset.columns.should == [:sic]
|
306
306
|
end
|
307
307
|
|
@@ -313,9 +313,9 @@ describe "Sequel::IntegerMigrator" do
|
|
313
313
|
end
|
314
314
|
|
315
315
|
specify "should be able to tell whether there are outstanding migrations" do
|
316
|
-
Sequel::Migrator.is_current?(@db, @dirname).should
|
316
|
+
Sequel::Migrator.is_current?(@db, @dirname).should == false
|
317
317
|
Sequel::Migrator.apply(@db, @dirname)
|
318
|
-
Sequel::Migrator.is_current?(@db, @dirname).should
|
318
|
+
Sequel::Migrator.is_current?(@db, @dirname).should == true
|
319
319
|
end
|
320
320
|
|
321
321
|
specify "should have #check_current raise an exception if the migrator is not current" do
|
@@ -474,31 +474,31 @@ describe "Sequel::TimestampMigrator" do
|
|
474
474
|
specify "should handle migrating up or down all the way" do
|
475
475
|
@dir = 'spec/files/timestamped_migrations'
|
476
476
|
@m.apply(@db, @dir)
|
477
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
477
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
478
478
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
479
479
|
@m.apply(@db, @dir, 0)
|
480
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
480
|
+
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
481
481
|
@db[:schema_migrations].select_order_map(:filename).should == []
|
482
482
|
end
|
483
483
|
|
484
484
|
specify "should handle migrating up or down to specific timestamps" do
|
485
485
|
@dir = 'spec/files/timestamped_migrations'
|
486
486
|
@m.apply(@db, @dir, 1273253851)
|
487
|
-
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).should
|
488
|
-
@db.table_exists?(:sm3333).should
|
487
|
+
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).should == true}
|
488
|
+
@db.table_exists?(:sm3333).should == false
|
489
489
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
|
490
490
|
@m.apply(@db, @dir, 1273253849)
|
491
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
492
|
-
@db.table_exists?(:sm1111).should
|
491
|
+
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
492
|
+
@db.table_exists?(:sm1111).should == true
|
493
493
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb'
|
494
494
|
end
|
495
495
|
|
496
496
|
specify "should not be current when there are migrations to apply" do
|
497
497
|
@dir = 'spec/files/timestamped_migrations'
|
498
498
|
@m.apply(@db, @dir)
|
499
|
-
@m.is_current?(@db, @dir).should
|
499
|
+
@m.is_current?(@db, @dir).should == true
|
500
500
|
@dir = 'spec/files/interleaved_timestamped_migrations'
|
501
|
-
@m.is_current?(@db, @dir).should
|
501
|
+
@m.is_current?(@db, @dir).should == false
|
502
502
|
end
|
503
503
|
|
504
504
|
specify "should raise an exception if the migrator is not current" do
|
@@ -514,7 +514,7 @@ describe "Sequel::TimestampMigrator" do
|
|
514
514
|
@m.apply(@db, @dir)
|
515
515
|
@dir = 'spec/files/interleaved_timestamped_migrations'
|
516
516
|
@m.apply(@db, @dir)
|
517
|
-
[:schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).should
|
517
|
+
[:schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
518
518
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb 1273253852_create_albums.rb 1273253853_3_create_users.rb'
|
519
519
|
end
|
520
520
|
|
@@ -523,7 +523,7 @@ describe "Sequel::TimestampMigrator" do
|
|
523
523
|
@m.apply(@db, @dir)
|
524
524
|
@dir = 'spec/files/interleaved_timestamped_migrations'
|
525
525
|
@m.apply(@db, @dir, 0)
|
526
|
-
[:sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).should
|
526
|
+
[:sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
527
527
|
@db[:schema_migrations].select_order_map(:filename).should == []
|
528
528
|
end
|
529
529
|
|
@@ -532,113 +532,113 @@ describe "Sequel::TimestampMigrator" do
|
|
532
532
|
@m.apply(@db, @dir)
|
533
533
|
@dir = 'spec/files/interleaved_timestamped_migrations'
|
534
534
|
@m.apply(@db, @dir, 1273253851)
|
535
|
-
[:schema_migrations, :sm1111, :sm1122, :sm2222].each{|n| @db.table_exists?(n).should
|
536
|
-
[:sm2233, :sm3333].each{|n| @db.table_exists?(n).should
|
535
|
+
[:schema_migrations, :sm1111, :sm1122, :sm2222].each{|n| @db.table_exists?(n).should == true}
|
536
|
+
[:sm2233, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
537
537
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb'
|
538
538
|
end
|
539
539
|
|
540
540
|
specify "should correctly update schema_migrations table when an error occurs when migrating up or down" do
|
541
541
|
@dir = 'spec/files/bad_timestamped_migrations'
|
542
542
|
proc{@m.apply(@db, @dir)}.should raise_error
|
543
|
-
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).should
|
544
|
-
@db.table_exists?(:sm3333).should
|
543
|
+
[:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).should == true}
|
544
|
+
@db.table_exists?(:sm3333).should == false
|
545
545
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
|
546
546
|
proc{@m.apply(@db, @dir, 0)}.should raise_error
|
547
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
548
|
-
@db.table_exists?(:sm1111).should
|
547
|
+
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
548
|
+
@db.table_exists?(:sm1111).should == true
|
549
549
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb'
|
550
550
|
end
|
551
551
|
|
552
552
|
specify "should handle multiple migrations with the same timestamp correctly" do
|
553
553
|
@dir = 'spec/files/duplicate_timestamped_migrations'
|
554
554
|
@m.apply(@db, @dir)
|
555
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
555
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
556
556
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
|
557
557
|
@m.apply(@db, @dir, 1273253853)
|
558
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
558
|
+
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
559
559
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
|
560
560
|
@m.apply(@db, @dir, 1273253849)
|
561
|
-
[:sm1111].each{|n| @db.table_exists?(n).should
|
562
|
-
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
561
|
+
[:sm1111].each{|n| @db.table_exists?(n).should == true}
|
562
|
+
[:sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
563
563
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb'
|
564
564
|
@m.apply(@db, @dir, 1273253848)
|
565
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
565
|
+
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
566
566
|
@db[:schema_migrations].select_order_map(:filename).should == []
|
567
567
|
end
|
568
568
|
|
569
569
|
specify "should convert schema_info table to schema_migrations table" do
|
570
570
|
@dir = 'spec/files/integer_migrations'
|
571
571
|
@m.apply(@db, @dir)
|
572
|
-
[:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
573
|
-
[:schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
572
|
+
[:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
573
|
+
[:schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == false}
|
574
574
|
|
575
575
|
@dir = 'spec/files/convert_to_timestamp_migrations'
|
576
576
|
@m.apply(@db, @dir)
|
577
|
-
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
577
|
+
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == true}
|
578
578
|
@db[:schema_migrations].select_order_map(:filename).should == %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
|
579
579
|
|
580
580
|
@m.apply(@db, @dir, 4)
|
581
|
-
[:schema_info, :schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
582
|
-
[:sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
581
|
+
[:schema_info, :schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
582
|
+
[:sm1122, :sm2233].each{|n| @db.table_exists?(n).should == false}
|
583
583
|
@db[:schema_migrations].select_order_map(:filename).should == %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb'
|
584
584
|
|
585
585
|
@m.apply(@db, @dir, 0)
|
586
|
-
[:schema_info, :schema_migrations].each{|n| @db.table_exists?(n).should
|
587
|
-
[:sm1111, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
586
|
+
[:schema_info, :schema_migrations].each{|n| @db.table_exists?(n).should == true}
|
587
|
+
[:sm1111, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == false}
|
588
588
|
@db[:schema_migrations].select_order_map(:filename).should == []
|
589
589
|
end
|
590
590
|
|
591
591
|
specify "should handle unapplied migrations when migrating schema_info table to schema_migrations table" do
|
592
592
|
@dir = 'spec/files/integer_migrations'
|
593
593
|
@m.apply(@db, @dir, 2)
|
594
|
-
[:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).should
|
595
|
-
[:schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
594
|
+
[:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).should == true}
|
595
|
+
[:schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == false}
|
596
596
|
|
597
597
|
@dir = 'spec/files/convert_to_timestamp_migrations'
|
598
598
|
@m.apply(@db, @dir, 1273253850)
|
599
|
-
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122].each{|n| @db.table_exists?(n).should
|
600
|
-
[:sm2233].each{|n| @db.table_exists?(n).should
|
599
|
+
[:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122].each{|n| @db.table_exists?(n).should == true}
|
600
|
+
[:sm2233].each{|n| @db.table_exists?(n).should == false}
|
601
601
|
@db[:schema_migrations].select_order_map(:filename).should == %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb'
|
602
602
|
end
|
603
603
|
|
604
604
|
specify "should handle unapplied migrations when migrating schema_info table to schema_migrations table and target is less than last integer migration version" do
|
605
605
|
@dir = 'spec/files/integer_migrations'
|
606
606
|
@m.apply(@db, @dir, 1)
|
607
|
-
[:schema_info, :sm1111].each{|n| @db.table_exists?(n).should
|
608
|
-
[:schema_migrations, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
607
|
+
[:schema_info, :sm1111].each{|n| @db.table_exists?(n).should == true}
|
608
|
+
[:schema_migrations, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == false}
|
609
609
|
|
610
610
|
@dir = 'spec/files/convert_to_timestamp_migrations'
|
611
611
|
@m.apply(@db, @dir, 2)
|
612
|
-
[:schema_info, :sm1111, :sm2222, :schema_migrations].each{|n| @db.table_exists?(n).should
|
613
|
-
[:sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
612
|
+
[:schema_info, :sm1111, :sm2222, :schema_migrations].each{|n| @db.table_exists?(n).should == true}
|
613
|
+
[:sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == false}
|
614
614
|
@db[:schema_migrations].select_order_map(:filename).should == %w'001_create_sessions.rb 002_create_nodes.rb'
|
615
615
|
|
616
616
|
@m.apply(@db, @dir)
|
617
|
-
[:schema_info, :sm1111, :sm2222, :schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should
|
617
|
+
[:schema_info, :sm1111, :sm2222, :schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).should == true}
|
618
618
|
@db[:schema_migrations].select_order_map(:filename).should == %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
|
619
619
|
end
|
620
620
|
|
621
621
|
specify "should raise error for applied migrations not in file system" do
|
622
622
|
@dir = 'spec/files/timestamped_migrations'
|
623
623
|
@m.apply(@db, @dir)
|
624
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
624
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
625
625
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
626
626
|
|
627
627
|
@dir = 'spec/files/missing_timestamped_migrations'
|
628
628
|
proc{@m.apply(@db, @dir, 0)}.should raise_error(Sequel::Migrator::Error)
|
629
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
629
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
630
630
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
631
631
|
end
|
632
632
|
|
633
633
|
specify "should not raise error for applied migrations not in file system if :allow_missing_migration_files is true" do
|
634
634
|
@dir = 'spec/files/timestamped_migrations'
|
635
635
|
@m.apply(@db, @dir)
|
636
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
636
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
637
637
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
638
638
|
|
639
639
|
@dir = 'spec/files/missing_timestamped_migrations'
|
640
640
|
proc{@m.run(@db, @dir, :allow_missing_migration_files => true)}.should_not raise_error
|
641
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
641
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
642
642
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
643
643
|
end
|
644
644
|
|
@@ -651,21 +651,21 @@ describe "Sequel::TimestampMigrator" do
|
|
651
651
|
specify "should handle migration filenames in a case insensitive manner" do
|
652
652
|
@dir = 'spec/files/uppercase_timestamped_migrations'
|
653
653
|
@m.apply(@db, @dir)
|
654
|
-
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
654
|
+
[:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
655
655
|
@db[:schema_migrations].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
656
656
|
@dir = 'spec/files/timestamped_migrations'
|
657
657
|
@m.apply(@db, @dir, 0)
|
658
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
658
|
+
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
659
659
|
@db[:schema_migrations].select_order_map(:filename).should == []
|
660
660
|
end
|
661
661
|
|
662
662
|
specify "should :table and :column options" do
|
663
663
|
@dir = 'spec/files/timestamped_migrations'
|
664
664
|
@m.run(@db, @dir, :table=>:sm, :column=>:fn)
|
665
|
-
[:sm, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
665
|
+
[:sm, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == true}
|
666
666
|
@db[:sm].select_order_map(:filename).should == %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
|
667
667
|
@m.run(@db, @dir, :target=>0, :table=>:sm, :column=>:fn)
|
668
|
-
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should
|
668
|
+
[:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).should == false}
|
669
669
|
@db[:sm].select_order_map(:fn).should == []
|
670
670
|
end
|
671
671
|
|