sequel 2.11.0 → 2.12.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.
- data/CHANGELOG +168 -0
- data/README.rdoc +77 -95
- data/Rakefile +100 -80
- data/bin/sequel +2 -1
- data/doc/advanced_associations.rdoc +23 -32
- data/doc/cheat_sheet.rdoc +23 -40
- data/doc/dataset_filtering.rdoc +6 -6
- data/doc/prepared_statements.rdoc +22 -22
- data/doc/release_notes/2.12.0.txt +534 -0
- data/doc/schema.rdoc +3 -1
- data/doc/sharding.rdoc +8 -8
- data/doc/virtual_rows.rdoc +65 -0
- data/lib/sequel.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/ado.rb +3 -3
- data/lib/{sequel_core → sequel}/adapters/db2.rb +0 -0
- data/lib/{sequel_core → sequel}/adapters/dbi.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/do.rb +9 -5
- data/lib/{sequel_core → sequel}/adapters/do/mysql.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/do/postgres.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/do/sqlite.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/firebird.rb +84 -80
- data/lib/{sequel_core → sequel}/adapters/informix.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/jdbc.rb +21 -14
- data/lib/{sequel_core → sequel}/adapters/jdbc/h2.rb +14 -13
- data/lib/{sequel_core → sequel}/adapters/jdbc/mysql.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/jdbc/oracle.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/jdbc/postgresql.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/jdbc/sqlite.rb +1 -1
- data/lib/{sequel_core → sequel}/adapters/mysql.rb +60 -39
- data/lib/{sequel_core → sequel}/adapters/odbc.rb +8 -4
- data/lib/{sequel_core → sequel}/adapters/openbase.rb +0 -0
- data/lib/{sequel_core → sequel}/adapters/oracle.rb +38 -7
- data/lib/{sequel_core → sequel}/adapters/postgres.rb +24 -24
- data/lib/{sequel_core → sequel}/adapters/shared/mssql.rb +5 -5
- data/lib/{sequel_core → sequel}/adapters/shared/mysql.rb +126 -71
- data/lib/{sequel_core → sequel}/adapters/shared/oracle.rb +7 -10
- data/lib/{sequel_core → sequel}/adapters/shared/postgres.rb +159 -125
- data/lib/{sequel_core → sequel}/adapters/shared/progress.rb +1 -2
- data/lib/{sequel_core → sequel}/adapters/shared/sqlite.rb +72 -67
- data/lib/{sequel_core → sequel}/adapters/sqlite.rb +11 -7
- data/lib/{sequel_core → sequel}/adapters/utils/date_format.rb +0 -0
- data/lib/{sequel_core → sequel}/adapters/utils/stored_procedures.rb +0 -0
- data/lib/{sequel_core → sequel}/adapters/utils/unsupported.rb +19 -0
- data/lib/{sequel_core → sequel}/connection_pool.rb +7 -5
- data/lib/sequel/core.rb +221 -0
- data/lib/{sequel_core → sequel}/core_sql.rb +91 -49
- data/lib/{sequel_core → sequel}/database.rb +264 -149
- data/lib/{sequel_core/schema/generator.rb → sequel/database/schema_generator.rb} +6 -2
- data/lib/{sequel_core/database/schema.rb → sequel/database/schema_methods.rb} +12 -12
- data/lib/sequel/database/schema_sql.rb +224 -0
- data/lib/{sequel_core → sequel}/dataset.rb +78 -236
- data/lib/{sequel_core → sequel}/dataset/convenience.rb +99 -61
- data/lib/{sequel_core/object_graph.rb → sequel/dataset/graph.rb} +16 -14
- data/lib/{sequel_core → sequel}/dataset/prepared_statements.rb +1 -1
- data/lib/{sequel_core → sequel}/dataset/sql.rb +150 -99
- data/lib/sequel/deprecated.rb +593 -0
- data/lib/sequel/deprecated_migration.rb +91 -0
- data/lib/sequel/exceptions.rb +48 -0
- data/lib/sequel/extensions/blank.rb +42 -0
- data/lib/{sequel_model → sequel/extensions}/inflector.rb +8 -1
- data/lib/{sequel_core → sequel/extensions}/migration.rb +1 -1
- data/lib/{sequel_core/dataset → sequel/extensions}/pagination.rb +0 -0
- data/lib/{sequel_core → sequel/extensions}/pretty_table.rb +7 -0
- data/lib/{sequel_core/dataset → sequel/extensions}/query.rb +7 -0
- data/lib/sequel/extensions/string_date_time.rb +47 -0
- data/lib/sequel/metaprogramming.rb +43 -0
- data/lib/sequel/model.rb +110 -0
- data/lib/sequel/model/associations.rb +1300 -0
- data/lib/sequel/model/base.rb +937 -0
- data/lib/sequel/model/deprecated.rb +204 -0
- data/lib/sequel/model/deprecated_hooks.rb +103 -0
- data/lib/sequel/model/deprecated_inflector.rb +335 -0
- data/lib/sequel/model/deprecated_validations.rb +388 -0
- data/lib/sequel/model/errors.rb +39 -0
- data/lib/{sequel_model → sequel/model}/exceptions.rb +4 -4
- data/lib/sequel/model/inflections.rb +208 -0
- data/lib/sequel/model/plugins.rb +76 -0
- data/lib/sequel/plugins/caching.rb +122 -0
- data/lib/sequel/plugins/hook_class_methods.rb +122 -0
- data/lib/sequel/plugins/schema.rb +53 -0
- data/lib/sequel/plugins/serialization.rb +117 -0
- data/lib/sequel/plugins/single_table_inheritance.rb +63 -0
- data/lib/sequel/plugins/validation_class_methods.rb +384 -0
- data/lib/sequel/plugins/validation_helpers.rb +150 -0
- data/lib/{sequel_core → sequel}/sql.rb +125 -190
- data/lib/{sequel_core → sequel}/version.rb +2 -1
- data/lib/sequel_core.rb +1 -172
- data/lib/sequel_model.rb +1 -91
- data/spec/adapters/firebird_spec.rb +5 -5
- data/spec/adapters/informix_spec.rb +1 -1
- data/spec/adapters/mysql_spec.rb +128 -42
- data/spec/adapters/oracle_spec.rb +47 -19
- data/spec/adapters/postgres_spec.rb +64 -52
- data/spec/adapters/spec_helper.rb +1 -1
- data/spec/adapters/sqlite_spec.rb +12 -17
- data/spec/{sequel_core → core}/connection_pool_spec.rb +10 -10
- data/spec/{sequel_core → core}/core_ext_spec.rb +19 -19
- data/spec/{sequel_core → core}/core_sql_spec.rb +68 -71
- data/spec/{sequel_core → core}/database_spec.rb +135 -99
- data/spec/{sequel_core → core}/dataset_spec.rb +398 -242
- data/spec/{sequel_core → core}/expression_filters_spec.rb +13 -13
- data/spec/core/migration_spec.rb +263 -0
- data/spec/{sequel_core → core}/object_graph_spec.rb +10 -10
- data/spec/{sequel_core → core}/pretty_table_spec.rb +2 -2
- data/spec/{sequel_core → core}/schema_generator_spec.rb +0 -0
- data/spec/{sequel_core → core}/schema_spec.rb +8 -10
- data/spec/{sequel_core → core}/spec_helper.rb +29 -2
- data/spec/{sequel_core → core}/version_spec.rb +0 -0
- data/spec/extensions/blank_spec.rb +67 -0
- data/spec/extensions/caching_spec.rb +201 -0
- data/spec/{sequel_model/hooks_spec.rb → extensions/hook_class_methods_spec.rb} +8 -23
- data/spec/{sequel_model → extensions}/inflector_spec.rb +3 -0
- data/spec/{sequel_core → extensions}/migration_spec.rb +4 -4
- data/spec/extensions/pagination_spec.rb +99 -0
- data/spec/extensions/pretty_table_spec.rb +91 -0
- data/spec/extensions/query_spec.rb +85 -0
- data/spec/{sequel_model → extensions}/schema_spec.rb +22 -1
- data/spec/extensions/serialization_spec.rb +109 -0
- data/spec/extensions/single_table_inheritance_spec.rb +53 -0
- data/spec/{sequel_model → extensions}/spec_helper.rb +13 -4
- data/spec/extensions/string_date_time_spec.rb +93 -0
- data/spec/{sequel_model/validations_spec.rb → extensions/validation_class_methods_spec.rb} +15 -103
- data/spec/extensions/validation_helpers_spec.rb +291 -0
- data/spec/integration/dataset_test.rb +31 -0
- data/spec/integration/eager_loader_test.rb +17 -30
- data/spec/integration/schema_test.rb +8 -5
- data/spec/integration/spec_helper.rb +17 -0
- data/spec/integration/transaction_test.rb +68 -0
- data/spec/{sequel_model → model}/association_reflection_spec.rb +0 -0
- data/spec/{sequel_model → model}/associations_spec.rb +23 -10
- data/spec/{sequel_model → model}/base_spec.rb +29 -20
- data/spec/{sequel_model → model}/caching_spec.rb +16 -14
- data/spec/{sequel_model → model}/dataset_methods_spec.rb +0 -0
- data/spec/{sequel_model → model}/eager_loading_spec.rb +8 -8
- data/spec/model/hooks_spec.rb +472 -0
- data/spec/model/inflector_spec.rb +126 -0
- data/spec/{sequel_model → model}/model_spec.rb +25 -20
- data/spec/model/plugins_spec.rb +142 -0
- data/spec/{sequel_model → model}/record_spec.rb +121 -62
- data/spec/model/schema_spec.rb +92 -0
- data/spec/model/spec_helper.rb +124 -0
- data/spec/model/validations_spec.rb +1080 -0
- metadata +136 -107
- data/lib/sequel_core/core_ext.rb +0 -217
- data/lib/sequel_core/dataset/callback.rb +0 -13
- data/lib/sequel_core/dataset/schema.rb +0 -15
- data/lib/sequel_core/deprecated.rb +0 -26
- data/lib/sequel_core/exceptions.rb +0 -44
- data/lib/sequel_core/schema.rb +0 -2
- data/lib/sequel_core/schema/sql.rb +0 -325
- data/lib/sequel_model/association_reflection.rb +0 -267
- data/lib/sequel_model/associations.rb +0 -499
- data/lib/sequel_model/base.rb +0 -539
- data/lib/sequel_model/caching.rb +0 -82
- data/lib/sequel_model/dataset_methods.rb +0 -26
- data/lib/sequel_model/eager_loading.rb +0 -370
- data/lib/sequel_model/hooks.rb +0 -101
- data/lib/sequel_model/plugins.rb +0 -62
- data/lib/sequel_model/record.rb +0 -568
- data/lib/sequel_model/schema.rb +0 -49
- data/lib/sequel_model/validations.rb +0 -429
- data/spec/sequel_model/plugins_spec.rb +0 -80
|
@@ -83,7 +83,7 @@ context "An SQLite database" do
|
|
|
83
83
|
|
|
84
84
|
proc {@db.transaction do
|
|
85
85
|
@db.create_table!(:v) {text :name}
|
|
86
|
-
raise Sequel::
|
|
86
|
+
raise Sequel::Rollback
|
|
87
87
|
end}.should_not raise_error
|
|
88
88
|
# no commit
|
|
89
89
|
@db.tables.should_not include(:r)
|
|
@@ -101,7 +101,7 @@ context "An SQLite database" do
|
|
|
101
101
|
proc {@db.transaction do
|
|
102
102
|
@db.create_table!(:v) {text :name}
|
|
103
103
|
@db.transaction do
|
|
104
|
-
raise Sequel::
|
|
104
|
+
raise Sequel::Rollback # should roll back the top-level transaction
|
|
105
105
|
end
|
|
106
106
|
end}.should_not raise_error
|
|
107
107
|
# no commit
|
|
@@ -138,8 +138,8 @@ context "An SQLite database" do
|
|
|
138
138
|
@db[:time] << {:t => t1.to_i, :d => t1}
|
|
139
139
|
@db[:time].map(:t).should == [t1, t1]
|
|
140
140
|
@db[:time].map(:d).should == [t1, t1]
|
|
141
|
-
t2 = t1.iso8601.to_datetime
|
|
142
141
|
Sequel.datetime_class = DateTime
|
|
142
|
+
t2 = Sequel.string_to_datetime(t1.iso8601)
|
|
143
143
|
@db[:time].map(:t).should == [t2, t2]
|
|
144
144
|
@db[:time].map(:d).should == [t2, t2]
|
|
145
145
|
end
|
|
@@ -169,15 +169,10 @@ context "An SQLite database" do
|
|
|
169
169
|
@db.create_table!(:time2) {timestamp :t}
|
|
170
170
|
@db.schema(:time2, :reload=>true).should == [[:t, {:type=>:datetime, :allow_null=>true, :default=>nil, :db_type=>"timestamp", :primary_key=>false}]]
|
|
171
171
|
end
|
|
172
|
-
|
|
173
|
-
specify "should get the schema all database tables if no table name is used" do
|
|
174
|
-
@db.create_table!(:time2) {timestamp :t}
|
|
175
|
-
@db.schema(:time2, :reload=>true).should == @db.schema(nil, :reload=>true)[:time2]
|
|
176
|
-
end
|
|
177
172
|
end
|
|
178
173
|
|
|
179
174
|
context "An SQLite dataset" do
|
|
180
|
-
|
|
175
|
+
before do
|
|
181
176
|
SQLITE_DB.create_table! :items do
|
|
182
177
|
integer :id, :primary_key => true, :auto_increment => true
|
|
183
178
|
text :name
|
|
@@ -289,7 +284,7 @@ context "An SQLite dataset AS clause" do
|
|
|
289
284
|
end
|
|
290
285
|
|
|
291
286
|
context "An SQLite dataset" do
|
|
292
|
-
|
|
287
|
+
before do
|
|
293
288
|
SQLITE_DB.create_table! :items do
|
|
294
289
|
integer :id, :primary_key => true, :auto_increment => true
|
|
295
290
|
text :name
|
|
@@ -320,7 +315,7 @@ context "An SQLite dataset" do
|
|
|
320
315
|
end
|
|
321
316
|
|
|
322
317
|
context "SQLite::Dataset#delete" do
|
|
323
|
-
|
|
318
|
+
before do
|
|
324
319
|
SQLITE_DB.create_table! :items do
|
|
325
320
|
integer :id, :primary_key => true, :auto_increment => true
|
|
326
321
|
text :name
|
|
@@ -335,10 +330,10 @@ context "SQLite::Dataset#delete" do
|
|
|
335
330
|
|
|
336
331
|
specify "should return the number of records affected when filtered" do
|
|
337
332
|
@d.count.should == 3
|
|
338
|
-
@d.filter
|
|
333
|
+
@d.filter(:value.sql_number < 3).delete.should == 1
|
|
339
334
|
@d.count.should == 2
|
|
340
335
|
|
|
341
|
-
@d.filter
|
|
336
|
+
@d.filter(:value.sql_number < 3).delete.should == 0
|
|
342
337
|
@d.count.should == 2
|
|
343
338
|
end
|
|
344
339
|
|
|
@@ -352,7 +347,7 @@ context "SQLite::Dataset#delete" do
|
|
|
352
347
|
end
|
|
353
348
|
|
|
354
349
|
context "SQLite::Dataset#update" do
|
|
355
|
-
|
|
350
|
+
before do
|
|
356
351
|
SQLITE_DB.create_table! :items do
|
|
357
352
|
integer :id, :primary_key => true, :auto_increment => true
|
|
358
353
|
text :name
|
|
@@ -375,7 +370,7 @@ context "SQLite::Dataset#update" do
|
|
|
375
370
|
end
|
|
376
371
|
|
|
377
372
|
context "SQLite dataset" do
|
|
378
|
-
|
|
373
|
+
before do
|
|
379
374
|
SQLITE_DB.create_table! :test do
|
|
380
375
|
integer :id, :primary_key => true, :auto_increment => true
|
|
381
376
|
text :name
|
|
@@ -393,7 +388,7 @@ context "SQLite dataset" do
|
|
|
393
388
|
@d << {:name => 'ghi', :value => 7.89}
|
|
394
389
|
end
|
|
395
390
|
|
|
396
|
-
|
|
391
|
+
after do
|
|
397
392
|
SQLITE_DB.drop_table :test
|
|
398
393
|
end
|
|
399
394
|
|
|
@@ -406,7 +401,7 @@ context "SQLite dataset" do
|
|
|
406
401
|
end
|
|
407
402
|
|
|
408
403
|
context "A SQLite database" do
|
|
409
|
-
|
|
404
|
+
before do
|
|
410
405
|
@db = SQLITE_DB
|
|
411
406
|
@db.create_table! :test2 do
|
|
412
407
|
text :name
|
|
@@ -3,7 +3,7 @@ CONNECTION_POOL_DEFAULTS = {:pool_timeout=>5, :pool_sleep_time=>0.001,
|
|
|
3
3
|
:pool_reuse_connections=>:allow, :pool_convert_exceptions=>true, :max_connections=>4}
|
|
4
4
|
|
|
5
5
|
context "An empty ConnectionPool" do
|
|
6
|
-
|
|
6
|
+
before do
|
|
7
7
|
@cpool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS)
|
|
8
8
|
end
|
|
9
9
|
|
|
@@ -21,7 +21,7 @@ context "An empty ConnectionPool" do
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
context "A connection pool handling connections" do
|
|
24
|
-
|
|
24
|
+
before do
|
|
25
25
|
@max_size = 2
|
|
26
26
|
@cpool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS.merge(:disconnection_proc=>proc{|c| @max_size=3}, :max_connections=>@max_size)) {:got_connection}
|
|
27
27
|
end
|
|
@@ -114,7 +114,7 @@ class DummyConnection
|
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
context "ConnectionPool#hold" do
|
|
117
|
-
|
|
117
|
+
before do
|
|
118
118
|
@pool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS) {DummyConnection.new}
|
|
119
119
|
end
|
|
120
120
|
|
|
@@ -150,7 +150,7 @@ context "ConnectionPool#hold" do
|
|
|
150
150
|
end
|
|
151
151
|
|
|
152
152
|
context "ConnectionPool#connection_proc" do
|
|
153
|
-
|
|
153
|
+
before do
|
|
154
154
|
@pool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS)
|
|
155
155
|
end
|
|
156
156
|
|
|
@@ -168,7 +168,7 @@ context "ConnectionPool#connection_proc" do
|
|
|
168
168
|
end
|
|
169
169
|
|
|
170
170
|
context "A connection pool with a max size of 1" do
|
|
171
|
-
|
|
171
|
+
before do
|
|
172
172
|
@invoked_count = 0
|
|
173
173
|
@pool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS.merge(:max_connections=>1)) {@invoked_count += 1; 'herro'}
|
|
174
174
|
end
|
|
@@ -244,7 +244,7 @@ context "A connection pool with a max size of 1" do
|
|
|
244
244
|
end
|
|
245
245
|
|
|
246
246
|
context "A connection pool with a max size of 5" do
|
|
247
|
-
|
|
247
|
+
before do
|
|
248
248
|
@invoked_count = 0
|
|
249
249
|
@pool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS.merge(:max_connections=>5)) {@invoked_count += 1}
|
|
250
250
|
end
|
|
@@ -316,7 +316,7 @@ context "A connection pool with a max size of 5" do
|
|
|
316
316
|
end
|
|
317
317
|
|
|
318
318
|
context "ConnectionPool#disconnect" do
|
|
319
|
-
|
|
319
|
+
before do
|
|
320
320
|
@count = 0
|
|
321
321
|
@pool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS.merge(:max_connections=>5)) {{:id => @count += 1}}
|
|
322
322
|
end
|
|
@@ -381,7 +381,7 @@ context "ConnectionPool#disconnect" do
|
|
|
381
381
|
end
|
|
382
382
|
|
|
383
383
|
context "A connection pool with multiple servers" do
|
|
384
|
-
|
|
384
|
+
before do
|
|
385
385
|
@invoked_counts = Hash.new(0)
|
|
386
386
|
@pool = Sequel::ConnectionPool.new(CONNECTION_POOL_DEFAULTS.merge(:servers=>{:read_only=>{}})){|server| "#{server}#{@invoked_counts[server] += 1}"}
|
|
387
387
|
end
|
|
@@ -440,7 +440,7 @@ context "A connection pool with multiple servers" do
|
|
|
440
440
|
end
|
|
441
441
|
|
|
442
442
|
context "SingleThreadedPool" do
|
|
443
|
-
|
|
443
|
+
before do
|
|
444
444
|
@pool = Sequel::SingleThreadedPool.new(CONNECTION_POOL_DEFAULTS){1234}
|
|
445
445
|
end
|
|
446
446
|
|
|
@@ -461,7 +461,7 @@ context "SingleThreadedPool" do
|
|
|
461
461
|
end
|
|
462
462
|
|
|
463
463
|
context "A single threaded pool with multiple servers" do
|
|
464
|
-
|
|
464
|
+
before do
|
|
465
465
|
@max_size=2
|
|
466
466
|
@pool = Sequel::SingleThreadedPool.new(CONNECTION_POOL_DEFAULTS.merge(:disconnection_proc=>proc{|c| @max_size=3}, :servers=>{:read_only=>{}})){|server| server}
|
|
467
467
|
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'spec_helper')
|
|
2
2
|
|
|
3
3
|
context "Array#extract_options!" do
|
|
4
|
-
|
|
4
|
+
deprec_specify "should pop the last item if it is a hash" do
|
|
5
5
|
a = [1,2,{1=>2}]
|
|
6
6
|
a.extract_options!.should == {1=>2}
|
|
7
7
|
a.should == [1,2]
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
deprec_specify "should return an empty hash if the last item is not a hash" do
|
|
11
11
|
a = [1,2]
|
|
12
12
|
a.extract_options!.should == {}
|
|
13
13
|
a.should == [1,2]
|
|
@@ -15,7 +15,7 @@ context "Array#extract_options!" do
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
context "Enumerable#send_each" do
|
|
18
|
-
|
|
18
|
+
deprec_specify "should send the supplied method to each item" do
|
|
19
19
|
a = ['abbc', 'bbccdd', 'hebtre']
|
|
20
20
|
a.send_each(:gsub!, 'b', '_')
|
|
21
21
|
a.should == ['a__c', '__ccdd', 'he_tre']
|
|
@@ -23,7 +23,7 @@ context "Enumerable#send_each" do
|
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
context "Range#interval" do
|
|
26
|
-
|
|
26
|
+
deprec_specify "should return the interval between the beginning and end for an inclusive range" do
|
|
27
27
|
(1..10).interval.should == 9
|
|
28
28
|
|
|
29
29
|
r = rand(100000) + 10
|
|
@@ -31,7 +31,7 @@ context "Range#interval" do
|
|
|
31
31
|
(t1..t2).interval.should == r
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
deprec_specify "should return the interval between the beginning and end for an exclusive range" do
|
|
35
35
|
(1...10).interval.should == 8
|
|
36
36
|
|
|
37
37
|
r = rand(100000) + 10
|
|
@@ -41,7 +41,7 @@ context "Range#interval" do
|
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
context "Module#class_attr_reader" do
|
|
44
|
-
|
|
44
|
+
deprec_specify "it should create instance methods that call class methods of the same name" do
|
|
45
45
|
@c = Class.new do
|
|
46
46
|
def self.x; 1; end
|
|
47
47
|
class_attr_reader :x
|
|
@@ -53,7 +53,7 @@ context "Module#class_attr_reader" do
|
|
|
53
53
|
end
|
|
54
54
|
|
|
55
55
|
context "Module#metaalias" do
|
|
56
|
-
|
|
56
|
+
deprec_specify "it should create aliases of singleton/class methods" do
|
|
57
57
|
@c = Class.new do
|
|
58
58
|
def self.x; 1; end
|
|
59
59
|
metaalias :y, :x
|
|
@@ -65,7 +65,7 @@ context "Module#metaalias" do
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
context "Module#metaattr_reader" do
|
|
68
|
-
|
|
68
|
+
deprec_specify "it should create attr_readers of singleton/class methods" do
|
|
69
69
|
@c = Class.new do
|
|
70
70
|
@y = 1
|
|
71
71
|
@x = 2
|
|
@@ -77,20 +77,20 @@ context "Module#metaattr_reader" do
|
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
context "Object#is_one_of?" do
|
|
80
|
-
|
|
80
|
+
deprec_specify "it should be true if the object is one of the classes" do
|
|
81
81
|
1.is_one_of?(Numeric, Array).should == true
|
|
82
82
|
[].is_one_of?(Numeric, Array).should == true
|
|
83
83
|
{}.is_one_of?(Numeric, Enumerable).should == true
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
deprec_specify "it should be false if the object is not one of the classes" do
|
|
87
87
|
'a'.is_one_of?(Numeric, Array).should == false
|
|
88
88
|
Object.new.is_one_of?(Numeric, Array).should == false
|
|
89
89
|
end
|
|
90
90
|
end
|
|
91
91
|
|
|
92
92
|
context "Object#blank?" do
|
|
93
|
-
|
|
93
|
+
deprec_specify "it should be true if the object responds true to empty?" do
|
|
94
94
|
[].blank?.should == true
|
|
95
95
|
{}.blank?.should == true
|
|
96
96
|
o = Object.new
|
|
@@ -98,7 +98,7 @@ context "Object#blank?" do
|
|
|
98
98
|
o.blank?.should == true
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
deprec_specify "it should be false if the object doesn't respond true to empty?" do
|
|
102
102
|
[2].blank?.should == false
|
|
103
103
|
{1=>2}.blank?.should == false
|
|
104
104
|
Object.new.blank?.should == false
|
|
@@ -106,7 +106,7 @@ context "Object#blank?" do
|
|
|
106
106
|
end
|
|
107
107
|
|
|
108
108
|
context "Numeric#blank?" do
|
|
109
|
-
|
|
109
|
+
deprec_specify "it should always be false" do
|
|
110
110
|
1.blank?.should == false
|
|
111
111
|
0.blank?.should == false
|
|
112
112
|
-1.blank?.should == false
|
|
@@ -121,34 +121,34 @@ context "Numeric#blank?" do
|
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
context "NilClass#blank?" do
|
|
124
|
-
|
|
124
|
+
deprec_specify "it should always be true" do
|
|
125
125
|
nil.blank?.should == true
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
context "TrueClass#blank?" do
|
|
130
|
-
|
|
130
|
+
deprec_specify "it should always be false" do
|
|
131
131
|
true.blank?.should == false
|
|
132
132
|
end
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
context "FalseClass#blank?" do
|
|
136
|
-
|
|
136
|
+
deprec_specify "it should always be true" do
|
|
137
137
|
false.blank?.should == true
|
|
138
138
|
end
|
|
139
139
|
end
|
|
140
140
|
|
|
141
141
|
context "FalseClass#blank?" do
|
|
142
|
-
|
|
142
|
+
deprec_specify "it should be true if the string is empty" do
|
|
143
143
|
''.blank?.should == true
|
|
144
144
|
end
|
|
145
|
-
|
|
145
|
+
deprec_specify "it should be true if the string is composed of just whitespace" do
|
|
146
146
|
' '.blank?.should == true
|
|
147
147
|
"\r\n\t".blank?.should == true
|
|
148
148
|
(' '*4000).blank?.should == true
|
|
149
149
|
("\r\n\t"*4000).blank?.should == true
|
|
150
150
|
end
|
|
151
|
-
|
|
151
|
+
deprec_specify "it should be false if the string has any non whitespace characters" do
|
|
152
152
|
'1'.blank?.should == false
|
|
153
153
|
("\r\n\t"*4000 + 'a').blank?.should == false
|
|
154
154
|
("\r\na\t"*4000).blank?.should == false
|
|
@@ -24,7 +24,7 @@ context "Array#all_two_pairs?" do
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
context "Array#case and Hash#case" do
|
|
27
|
-
|
|
27
|
+
before do
|
|
28
28
|
@d = Sequel::Dataset.new(nil)
|
|
29
29
|
end
|
|
30
30
|
|
|
@@ -52,7 +52,7 @@ context "Array#case and Hash#case" do
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
context "Array#sql_array" do
|
|
55
|
-
|
|
55
|
+
before do
|
|
56
56
|
@d = Sequel::Dataset.new(nil)
|
|
57
57
|
end
|
|
58
58
|
|
|
@@ -64,44 +64,44 @@ context "Array#sql_array" do
|
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
context "Array#to_sql" do
|
|
67
|
-
|
|
67
|
+
deprec_specify "should concatenate multiple lines into a single string" do
|
|
68
68
|
"SELECT * \r\nFROM items\r\n WHERE a = 1".split.to_sql. \
|
|
69
69
|
should == 'SELECT * FROM items WHERE a = 1'
|
|
70
70
|
end
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
deprec_specify "should remove superfluous white space and line breaks" do
|
|
73
73
|
"\tSELECT * \n FROM items ".split.to_sql. \
|
|
74
74
|
should == 'SELECT * FROM items'
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
deprec_specify "should remove ANSI SQL comments" do
|
|
78
78
|
"SELECT * --comment\r\n FROM items\r\n --comment".split.to_sql. \
|
|
79
79
|
should == 'SELECT * FROM items'
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
deprec_specify "should remove C-style comments" do
|
|
83
83
|
"SELECT * \r\n /* comment comment\r\n comment\r\n FROM items */\r\n FROM items\r\n--comment".split.to_sql. \
|
|
84
84
|
should == 'SELECT * FROM items'
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
context "String#to_sql" do
|
|
89
|
-
|
|
89
|
+
deprec_specify "should concatenate multiple lines into a single string" do
|
|
90
90
|
"SELECT * \r\nFROM items\r\nWHERE a = 1".to_sql. \
|
|
91
91
|
should == 'SELECT * FROM items WHERE a = 1'
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
|
|
94
|
+
deprec_specify "should remove superfluous white space and line breaks" do
|
|
95
95
|
"\tSELECT * \r\n FROM items ".to_sql. \
|
|
96
96
|
should == 'SELECT * FROM items'
|
|
97
97
|
end
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
deprec_specify "should remove ANSI SQL comments" do
|
|
100
100
|
"SELECT * --comment \r\n FROM items\r\n --comment".to_sql. \
|
|
101
101
|
should == 'SELECT * FROM items'
|
|
102
102
|
end
|
|
103
103
|
|
|
104
|
-
|
|
104
|
+
deprec_specify "should remove C-style comments" do
|
|
105
105
|
"SELECT * \r\n/* comment comment\r\ncomment\r\nFROM items */\r\nFROM items\r\n--comment".to_sql. \
|
|
106
106
|
should == 'SELECT * FROM items'
|
|
107
107
|
end
|
|
@@ -114,11 +114,11 @@ context "String#lit" do
|
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
specify "should inhibit string literalization" do
|
|
117
|
-
Sequel::Database.new[:t].update_sql(:stamp => "NOW()".
|
|
117
|
+
Sequel::Database.new[:t].update_sql(:stamp => "NOW()".lit).should == \
|
|
118
118
|
"UPDATE t SET stamp = NOW()"
|
|
119
119
|
end
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
deprec_specify "should be aliased as expr" do
|
|
122
122
|
'xyz'.expr.should be_a_kind_of(Sequel::LiteralString)
|
|
123
123
|
'xyz'.expr.to_s.should == 'xyz'
|
|
124
124
|
Sequel::Database.new[:t].update_sql(:stamp => "NOW()".expr).should == \
|
|
@@ -135,33 +135,31 @@ context "String#lit" do
|
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
context "String#
|
|
138
|
+
context "String#to_sequel_blob" do
|
|
139
139
|
specify "should return a Blob object" do
|
|
140
|
-
'xyz'.to_blob.should be_a_kind_of(::Sequel::SQL::Blob)
|
|
141
|
-
'xyz'.to_blob.should == 'xyz'
|
|
142
140
|
'xyz'.to_sequel_blob.should be_a_kind_of(::Sequel::SQL::Blob)
|
|
143
141
|
'xyz'.to_sequel_blob.should == 'xyz'
|
|
144
142
|
end
|
|
145
143
|
|
|
146
144
|
specify "should retain binary data" do
|
|
147
|
-
"\1\2\3\4".
|
|
145
|
+
"\1\2\3\4".to_sequel_blob.should == "\1\2\3\4"
|
|
148
146
|
end
|
|
149
147
|
end
|
|
150
148
|
|
|
151
149
|
context "String#split_sql" do
|
|
152
|
-
|
|
150
|
+
deprec_specify "should split a string containing multiple statements" do
|
|
153
151
|
"DROP TABLE a; DROP TABLE c".split_sql.should == \
|
|
154
152
|
['DROP TABLE a', 'DROP TABLE c']
|
|
155
153
|
end
|
|
156
154
|
|
|
157
|
-
|
|
155
|
+
deprec_specify "should remove comments from the string" do
|
|
158
156
|
"DROP TABLE a;/* DROP TABLE b; DROP TABLE c;*/DROP TABLE d".split_sql.should == \
|
|
159
157
|
['DROP TABLE a', 'DROP TABLE d']
|
|
160
158
|
end
|
|
161
159
|
end
|
|
162
160
|
|
|
163
161
|
context "#desc" do
|
|
164
|
-
|
|
162
|
+
before do
|
|
165
163
|
@ds = Sequel::Dataset.new(nil)
|
|
166
164
|
end
|
|
167
165
|
|
|
@@ -177,7 +175,7 @@ context "#desc" do
|
|
|
177
175
|
end
|
|
178
176
|
|
|
179
177
|
context "#asc" do
|
|
180
|
-
|
|
178
|
+
before do
|
|
181
179
|
@ds = Sequel::Dataset.new(nil)
|
|
182
180
|
end
|
|
183
181
|
|
|
@@ -193,7 +191,7 @@ context "#asc" do
|
|
|
193
191
|
end
|
|
194
192
|
|
|
195
193
|
context "#as" do
|
|
196
|
-
|
|
194
|
+
before do
|
|
197
195
|
@ds = Sequel::Dataset.new(nil)
|
|
198
196
|
end
|
|
199
197
|
|
|
@@ -213,7 +211,7 @@ context "#as" do
|
|
|
213
211
|
end
|
|
214
212
|
|
|
215
213
|
context "Column references" do
|
|
216
|
-
|
|
214
|
+
before do
|
|
217
215
|
@c = Class.new(Sequel::Dataset) do
|
|
218
216
|
def quoted_identifier(c); "`#{c}`"; end
|
|
219
217
|
end
|
|
@@ -244,15 +242,13 @@ context "Column references" do
|
|
|
244
242
|
end
|
|
245
243
|
|
|
246
244
|
specify "should be quoted properly in a cast function" do
|
|
247
|
-
@ds.literal(:x.
|
|
248
|
-
@ds.literal(:x__y.
|
|
245
|
+
@ds.literal(:x.cast(:integer)).should == "CAST(`x` AS integer)"
|
|
246
|
+
@ds.literal(:x__y.cast('varchar(20)')).should == "CAST(`x`.`y` AS varchar(20))"
|
|
249
247
|
end
|
|
250
248
|
end
|
|
251
249
|
|
|
252
250
|
context "Blob" do
|
|
253
|
-
specify "#
|
|
254
|
-
blob = "x".to_blob
|
|
255
|
-
blob.to_blob.object_id.should == blob.object_id
|
|
251
|
+
specify "#to_sequel_blob should return self" do
|
|
256
252
|
blob = "x".to_sequel_blob
|
|
257
253
|
blob.to_sequel_blob.object_id.should == blob.object_id
|
|
258
254
|
end
|
|
@@ -270,7 +266,7 @@ if RUBY_VERSION < '1.9.0'
|
|
|
270
266
|
end
|
|
271
267
|
|
|
272
268
|
context "Symbol#*" do
|
|
273
|
-
|
|
269
|
+
before do
|
|
274
270
|
@ds = Sequel::Dataset.new(nil)
|
|
275
271
|
end
|
|
276
272
|
|
|
@@ -293,7 +289,7 @@ context "Symbol" do
|
|
|
293
289
|
before do
|
|
294
290
|
@ds = Sequel::Dataset.new(nil)
|
|
295
291
|
@ds.quote_identifiers = true
|
|
296
|
-
@ds.
|
|
292
|
+
@ds.identifier_input_method = :upcase
|
|
297
293
|
end
|
|
298
294
|
|
|
299
295
|
specify "#identifier should format an identifier" do
|
|
@@ -314,44 +310,44 @@ context "Symbol" do
|
|
|
314
310
|
end
|
|
315
311
|
end
|
|
316
312
|
|
|
317
|
-
context "
|
|
318
|
-
|
|
313
|
+
context "Dataset#literal" do
|
|
314
|
+
before do
|
|
319
315
|
@ds = MockDataset.new(nil)
|
|
320
316
|
end
|
|
321
317
|
|
|
322
318
|
specify "should convert qualified symbol notation into dot notation" do
|
|
323
|
-
:abc__def
|
|
319
|
+
@ds.literal(:abc__def).should == 'abc.def'
|
|
324
320
|
end
|
|
325
321
|
|
|
326
322
|
specify "should convert AS symbol notation into SQL AS notation" do
|
|
327
|
-
:xyz___x
|
|
328
|
-
:abc__def___x
|
|
323
|
+
@ds.literal(:xyz___x).should == 'xyz AS x'
|
|
324
|
+
@ds.literal(:abc__def___x).should == 'abc.def AS x'
|
|
329
325
|
end
|
|
330
326
|
|
|
331
327
|
specify "should support names with digits" do
|
|
332
|
-
:abc2
|
|
333
|
-
:xx__yy3
|
|
334
|
-
:ab34__temp3_4ax
|
|
335
|
-
:x1___y2
|
|
336
|
-
:abc2__def3___ggg4
|
|
328
|
+
@ds.literal(:abc2).should == 'abc2'
|
|
329
|
+
@ds.literal(:xx__yy3).should == 'xx.yy3'
|
|
330
|
+
@ds.literal(:ab34__temp3_4ax).should == 'ab34.temp3_4ax'
|
|
331
|
+
@ds.literal(:x1___y2).should == 'x1 AS y2'
|
|
332
|
+
@ds.literal(:abc2__def3___ggg4).should == 'abc2.def3 AS ggg4'
|
|
337
333
|
end
|
|
338
334
|
|
|
339
335
|
specify "should support upper case and lower case" do
|
|
340
|
-
:ABC
|
|
341
|
-
:Zvashtoy__aBcD
|
|
336
|
+
@ds.literal(:ABC).should == 'ABC'
|
|
337
|
+
@ds.literal(:Zvashtoy__aBcD).should == 'Zvashtoy.aBcD'
|
|
342
338
|
end
|
|
343
339
|
|
|
344
340
|
specify "should support spaces inside column names" do
|
|
345
341
|
@ds.quote_identifiers = true
|
|
346
|
-
:"AB C"
|
|
347
|
-
:"Zvas htoy__aB cD"
|
|
348
|
-
:"aB cD___XX XX"
|
|
349
|
-
:"Zva shtoy__aB cD___XX XX"
|
|
342
|
+
@ds.literal(:"AB C").should == '"AB C"'
|
|
343
|
+
@ds.literal(:"Zvas htoy__aB cD").should == '"Zvas htoy"."aB cD"'
|
|
344
|
+
@ds.literal(:"aB cD___XX XX").should == '"aB cD" AS "XX XX"'
|
|
345
|
+
@ds.literal(:"Zva shtoy__aB cD___XX XX").should == '"Zva shtoy"."aB cD" AS "XX XX"'
|
|
350
346
|
end
|
|
351
347
|
end
|
|
352
348
|
|
|
353
349
|
context "Symbol" do
|
|
354
|
-
|
|
350
|
+
before do
|
|
355
351
|
@ds = Sequel::Dataset.new(MockDatabase.new)
|
|
356
352
|
end
|
|
357
353
|
|
|
@@ -365,10 +361,13 @@ context "Symbol" do
|
|
|
365
361
|
ds.select(:COUNT.sql_function('1')).sql.should == "SELECT COUNT('1') FROM t"
|
|
366
362
|
end
|
|
367
363
|
|
|
368
|
-
specify "should support cast method
|
|
369
|
-
:abc.cast_as(:integer).to_s(@ds).should == "CAST(abc AS integer)"
|
|
364
|
+
specify "should support cast method" do
|
|
370
365
|
:abc.cast(:integer).to_s(@ds).should == "CAST(abc AS integer)"
|
|
371
366
|
end
|
|
367
|
+
|
|
368
|
+
deprec_specify "should support cast_as method" do
|
|
369
|
+
:abc.cast_as(:integer).to_s(@ds).should == "CAST(abc AS integer)"
|
|
370
|
+
end
|
|
372
371
|
|
|
373
372
|
specify "should support cast_numeric and cast_string" do
|
|
374
373
|
x = :abc.cast_numeric
|
|
@@ -398,8 +397,6 @@ context "Symbol" do
|
|
|
398
397
|
end
|
|
399
398
|
end
|
|
400
399
|
@ds2 = Sequel::Dataset.new(m)
|
|
401
|
-
:abc.cast_as(Integer).to_s(@ds).should == "CAST(abc AS integer)"
|
|
402
|
-
:abc.cast_as(Integer).to_s(@ds2).should == "CAST(abc AS foo)"
|
|
403
400
|
:abc.cast(String).to_s(@ds).should == "CAST(abc AS varchar(255))"
|
|
404
401
|
:abc.cast(String).to_s(@ds2).should == "CAST(abc AS bar)"
|
|
405
402
|
:abc.cast(String).to_s(@ds2).should == "CAST(abc AS bar)"
|
|
@@ -409,7 +406,7 @@ context "Symbol" do
|
|
|
409
406
|
:abc.cast_numeric(String).to_s(@ds2).should == "CAST(abc AS bar)"
|
|
410
407
|
end
|
|
411
408
|
|
|
412
|
-
|
|
409
|
+
deprec_specify "should support subscript access using | operator" do
|
|
413
410
|
(:abc|1).to_s(@ds).should == 'abc[1]'
|
|
414
411
|
(:abc|[1]).to_s(@ds).should == 'abc[1]'
|
|
415
412
|
(:abc|[1, 2]).to_s(@ds).should == 'abc[1, 2]'
|
|
@@ -422,13 +419,13 @@ context "Symbol" do
|
|
|
422
419
|
end
|
|
423
420
|
|
|
424
421
|
context "String#to_time" do
|
|
425
|
-
|
|
422
|
+
deprec_specify "should convert the string into a Time object" do
|
|
426
423
|
"2007-07-11".to_time.should == Time.parse("2007-07-11")
|
|
427
424
|
"06:30".to_time.should == Time.parse("06:30")
|
|
428
425
|
end
|
|
429
426
|
|
|
430
|
-
|
|
431
|
-
proc {'0000-00-00'.to_time}.should raise_error(Sequel::
|
|
427
|
+
deprec_specify "should raise InvalidValue for an invalid time" do
|
|
428
|
+
proc {'0000-00-00'.to_time}.should raise_error(Sequel::InvalidValue)
|
|
432
429
|
end
|
|
433
430
|
end
|
|
434
431
|
|
|
@@ -437,21 +434,21 @@ context "String#to_date" do
|
|
|
437
434
|
Sequel.convert_two_digit_years = true
|
|
438
435
|
end
|
|
439
436
|
|
|
440
|
-
|
|
437
|
+
deprec_specify "should convert the string into a Date object" do
|
|
441
438
|
"2007-07-11".to_date.should == Date.parse("2007-07-11")
|
|
442
439
|
end
|
|
443
440
|
|
|
444
|
-
|
|
441
|
+
deprec_specify "should convert 2 digit years by default" do
|
|
445
442
|
"July 11, 07".to_date.should == Date.parse("2007-07-11")
|
|
446
443
|
end
|
|
447
444
|
|
|
448
|
-
|
|
445
|
+
deprec_specify "should not convert 2 digit years if set not to" do
|
|
449
446
|
Sequel.convert_two_digit_years = false
|
|
450
447
|
"July 11, 07".to_date.should == Date.parse("0007-07-11")
|
|
451
448
|
end
|
|
452
449
|
|
|
453
|
-
|
|
454
|
-
proc {'0000-00-00'.to_date}.should raise_error(Sequel::
|
|
450
|
+
deprec_specify "should raise InvalidValue for an invalid date" do
|
|
451
|
+
proc {'0000-00-00'.to_date}.should raise_error(Sequel::InvalidValue)
|
|
455
452
|
end
|
|
456
453
|
end
|
|
457
454
|
|
|
@@ -460,21 +457,21 @@ context "String#to_datetime" do
|
|
|
460
457
|
Sequel.convert_two_digit_years = true
|
|
461
458
|
end
|
|
462
459
|
|
|
463
|
-
|
|
460
|
+
deprec_specify "should convert the string into a DateTime object" do
|
|
464
461
|
"2007-07-11 10:11:12a".to_datetime.should == DateTime.parse("2007-07-11 10:11:12a")
|
|
465
462
|
end
|
|
466
463
|
|
|
467
|
-
|
|
464
|
+
deprec_specify "should convert 2 digit years by default" do
|
|
468
465
|
"July 11, 07 10:11:12a".to_datetime.should == DateTime.parse("2007-07-11 10:11:12a")
|
|
469
466
|
end
|
|
470
467
|
|
|
471
|
-
|
|
468
|
+
deprec_specify "should not convert 2 digit years if set not to" do
|
|
472
469
|
Sequel.convert_two_digit_years = false
|
|
473
470
|
"July 11, 07 10:11:12a".to_datetime.should == DateTime.parse("0007-07-11 10:11:12a")
|
|
474
471
|
end
|
|
475
472
|
|
|
476
|
-
|
|
477
|
-
proc {'0000-00-00'.to_datetime}.should raise_error(Sequel::
|
|
473
|
+
deprec_specify "should raise InvalidValue for an invalid date" do
|
|
474
|
+
proc {'0000-00-00'.to_datetime}.should raise_error(Sequel::InvalidValue)
|
|
478
475
|
end
|
|
479
476
|
end
|
|
480
477
|
|
|
@@ -484,32 +481,32 @@ context "String#to_sequel_time" do
|
|
|
484
481
|
Sequel.convert_two_digit_years = true
|
|
485
482
|
end
|
|
486
483
|
|
|
487
|
-
|
|
484
|
+
deprec_specify "should convert the string into a Time object by default" do
|
|
488
485
|
"2007-07-11 10:11:12a".to_sequel_time.class.should == Time
|
|
489
486
|
"2007-07-11 10:11:12a".to_sequel_time.should == Time.parse("2007-07-11 10:11:12a")
|
|
490
487
|
end
|
|
491
488
|
|
|
492
|
-
|
|
489
|
+
deprec_specify "should convert the string into a DateTime object if that is set" do
|
|
493
490
|
Sequel.datetime_class = DateTime
|
|
494
491
|
"2007-07-11 10:11:12a".to_sequel_time.class.should == DateTime
|
|
495
492
|
"2007-07-11 10:11:12a".to_sequel_time.should == DateTime.parse("2007-07-11 10:11:12a")
|
|
496
493
|
end
|
|
497
494
|
|
|
498
|
-
|
|
495
|
+
deprec_specify "should convert 2 digit years by default if using DateTime class" do
|
|
499
496
|
Sequel.datetime_class = DateTime
|
|
500
497
|
"July 11, 07 10:11:12a".to_sequel_time.should == DateTime.parse("2007-07-11 10:11:12a")
|
|
501
498
|
end
|
|
502
499
|
|
|
503
|
-
|
|
500
|
+
deprec_specify "should not convert 2 digit years if set not to when using DateTime class" do
|
|
504
501
|
Sequel.datetime_class = DateTime
|
|
505
502
|
Sequel.convert_two_digit_years = false
|
|
506
503
|
"July 11, 07 10:11:12a".to_sequel_time.should == DateTime.parse("0007-07-11 10:11:12a")
|
|
507
504
|
end
|
|
508
505
|
|
|
509
|
-
|
|
510
|
-
proc {'0000-00-00'.to_sequel_time}.should raise_error(Sequel::
|
|
506
|
+
deprec_specify "should raise InvalidValue for an invalid time" do
|
|
507
|
+
proc {'0000-00-00'.to_sequel_time}.should raise_error(Sequel::InvalidValue)
|
|
511
508
|
Sequel.datetime_class = DateTime
|
|
512
|
-
proc {'0000-00-00'.to_sequel_time}.should raise_error(Sequel::
|
|
509
|
+
proc {'0000-00-00'.to_sequel_time}.should raise_error(Sequel::InvalidValue)
|
|
513
510
|
end
|
|
514
511
|
end
|
|
515
512
|
|