sequel 2.12.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. data/CHANGELOG +62 -0
  2. data/README.rdoc +3 -3
  3. data/Rakefile +7 -0
  4. data/doc/advanced_associations.rdoc +44 -0
  5. data/doc/release_notes/3.0.0.txt +221 -0
  6. data/lib/sequel/adapters/amalgalite.rb +208 -0
  7. data/lib/sequel/adapters/db2.rb +3 -0
  8. data/lib/sequel/adapters/dbi.rb +9 -0
  9. data/lib/sequel/adapters/do.rb +0 -4
  10. data/lib/sequel/adapters/firebird.rb +16 -18
  11. data/lib/sequel/adapters/informix.rb +5 -3
  12. data/lib/sequel/adapters/jdbc.rb +24 -20
  13. data/lib/sequel/adapters/jdbc/h2.rb +15 -4
  14. data/lib/sequel/adapters/mysql.rb +4 -8
  15. data/lib/sequel/adapters/odbc.rb +0 -4
  16. data/lib/sequel/adapters/oracle.rb +0 -4
  17. data/lib/sequel/adapters/shared/mssql.rb +16 -5
  18. data/lib/sequel/adapters/shared/mysql.rb +87 -86
  19. data/lib/sequel/adapters/shared/oracle.rb +92 -3
  20. data/lib/sequel/adapters/shared/postgres.rb +85 -29
  21. data/lib/sequel/adapters/shared/progress.rb +8 -3
  22. data/lib/sequel/adapters/shared/sqlite.rb +53 -23
  23. data/lib/sequel/adapters/sqlite.rb +4 -7
  24. data/lib/sequel/adapters/utils/unsupported.rb +3 -3
  25. data/lib/sequel/connection_pool.rb +18 -25
  26. data/lib/sequel/core.rb +2 -21
  27. data/lib/sequel/database.rb +60 -44
  28. data/lib/sequel/database/schema_generator.rb +26 -31
  29. data/lib/sequel/database/schema_methods.rb +8 -3
  30. data/lib/sequel/database/schema_sql.rb +114 -28
  31. data/lib/sequel/dataset.rb +14 -41
  32. data/lib/sequel/dataset/convenience.rb +31 -54
  33. data/lib/sequel/dataset/graph.rb +7 -13
  34. data/lib/sequel/dataset/sql.rb +43 -54
  35. data/lib/sequel/extensions/inflector.rb +0 -5
  36. data/lib/sequel/extensions/schema_dumper.rb +238 -0
  37. data/lib/sequel/metaprogramming.rb +0 -20
  38. data/lib/sequel/model.rb +1 -2
  39. data/lib/sequel/model/base.rb +18 -16
  40. data/lib/sequel/model/inflections.rb +6 -9
  41. data/lib/sequel/plugins/caching.rb +0 -6
  42. data/lib/sequel/plugins/hook_class_methods.rb +1 -1
  43. data/lib/sequel/sql.rb +2 -0
  44. data/lib/sequel/version.rb +2 -2
  45. data/spec/adapters/firebird_spec.rb +35 -8
  46. data/spec/adapters/mysql_spec.rb +173 -266
  47. data/spec/adapters/oracle_spec.rb +13 -0
  48. data/spec/adapters/postgres_spec.rb +127 -227
  49. data/spec/adapters/sqlite_spec.rb +13 -171
  50. data/spec/core/connection_pool_spec.rb +15 -4
  51. data/spec/core/core_sql_spec.rb +14 -170
  52. data/spec/core/database_spec.rb +50 -132
  53. data/spec/core/dataset_spec.rb +47 -930
  54. data/spec/core/expression_filters_spec.rb +12 -0
  55. data/spec/core/schema_generator_spec.rb +37 -45
  56. data/spec/core/schema_spec.rb +26 -16
  57. data/spec/core/spec_helper.rb +0 -25
  58. data/spec/extensions/inflector_spec.rb +0 -3
  59. data/spec/extensions/schema_dumper_spec.rb +292 -0
  60. data/spec/extensions/serialization_spec.rb +9 -0
  61. data/spec/extensions/single_table_inheritance_spec.rb +6 -1
  62. data/spec/extensions/spec_helper.rb +1 -3
  63. data/spec/extensions/validation_helpers_spec.rb +4 -4
  64. data/spec/integration/database_test.rb +18 -0
  65. data/spec/integration/dataset_test.rb +112 -1
  66. data/spec/integration/eager_loader_test.rb +70 -9
  67. data/spec/integration/prepared_statement_test.rb +2 -2
  68. data/spec/integration/schema_test.rb +76 -27
  69. data/spec/integration/spec_helper.rb +0 -14
  70. data/spec/integration/transaction_test.rb +27 -0
  71. data/spec/model/associations_spec.rb +0 -36
  72. data/spec/model/base_spec.rb +18 -123
  73. data/spec/model/hooks_spec.rb +2 -235
  74. data/spec/model/inflector_spec.rb +15 -115
  75. data/spec/model/model_spec.rb +0 -120
  76. data/spec/model/plugins_spec.rb +0 -70
  77. data/spec/model/record_spec.rb +35 -93
  78. data/spec/model/spec_helper.rb +0 -27
  79. data/spec/model/validations_spec.rb +0 -931
  80. metadata +9 -14
  81. data/lib/sequel/deprecated.rb +0 -593
  82. data/lib/sequel/deprecated_migration.rb +0 -91
  83. data/lib/sequel/model/deprecated.rb +0 -204
  84. data/lib/sequel/model/deprecated_hooks.rb +0 -103
  85. data/lib/sequel/model/deprecated_inflector.rb +0 -335
  86. data/lib/sequel/model/deprecated_validations.rb +0 -388
  87. data/spec/core/core_ext_spec.rb +0 -156
  88. data/spec/core/migration_spec.rb +0 -263
  89. data/spec/core/pretty_table_spec.rb +0 -58
  90. data/spec/model/caching_spec.rb +0 -217
  91. data/spec/model/schema_spec.rb +0 -92
@@ -1,126 +1,26 @@
1
1
  require File.join(File.dirname(__FILE__), 'spec_helper')
2
2
 
3
- describe String do
4
- deprec_specify "#camelize and #camelcase should transform the word to CamelCase" do
5
- "egg_and_hams".camelize.should == "EggAndHams"
6
- "egg_and_hams".camelize(false).should == "eggAndHams"
7
- "post".camelize.should == "Post"
8
- "post".camelcase.should == "Post"
9
- end
10
-
11
- deprec_specify "#constantize should eval the string to get a constant" do
12
- "String".constantize.should == String
13
- "String::Inflections".constantize.should == String::Inflections
14
- proc{"BKSDDF".constantize}.should raise_error
15
- proc{"++A++".constantize}.should raise_error
16
- end
17
-
18
- deprec_specify "#dasherize should transform underscores to dashes" do
19
- "egg_and_hams".dasherize.should == "egg-and-hams"
20
- "post".dasherize.should == "post"
21
- end
22
-
23
- deprec_specify "#demodulize should remove any preceding modules" do
24
- "String::Inflections::Blah".demodulize.should == "Blah"
25
- "String::Inflections".demodulize.should == "Inflections"
26
- "String".demodulize.should == "String"
27
- end
28
-
29
- deprec_specify "#humanize should remove _i, transform underscore to spaces, and capitalize" do
30
- "egg_and_hams".humanize.should == "Egg and hams"
31
- "post".humanize.should == "Post"
32
- "post_id".humanize.should == "Post"
33
- end
34
-
35
- deprec_specify "#titleize and #titlecase should underscore, humanize, and capitalize all words" do
36
- "egg-and: hams".titleize.should == "Egg And: Hams"
37
- "post".titleize.should == "Post"
38
- "post".titlecase.should == "Post"
39
- end
40
-
41
- deprec_specify "#underscore should add underscores between CamelCased words, change :: to / and - to _, and downcase" do
42
- "EggAndHams".underscore.should == "egg_and_hams"
43
- "EGGAndHams".underscore.should == "egg_and_hams"
44
- "Egg::And::Hams".underscore.should == "egg/and/hams"
45
- "post".underscore.should == "post"
46
- "post-id".underscore.should == "post_id"
47
- end
48
-
49
- deprec_specify "#pluralize should transform words from singular to plural" do
50
- "post".pluralize.should == "posts"
51
- "octopus".pluralize.should =="octopi"
52
- "the blue mailman".pluralize.should == "the blue mailmen"
53
- "CamelOctopus".pluralize.should == "CamelOctopi"
54
- end
55
-
56
- deprec_specify "#singularize should transform words from plural to singular" do
57
- "posts".singularize.should == "post"
58
- "octopi".singularize.should == "octopus"
59
- "the blue mailmen".singularize.should == "the blue mailman"
60
- "CamelOctopi".singularize.should == "CamelOctopus"
61
- end
62
-
63
- deprec_specify "#tableize should transform class names to table names" do
64
- "RawScaledScorer".tableize.should == "raw_scaled_scorers"
65
- "egg_and_ham".tableize.should == "egg_and_hams"
66
- "fancyCategory".tableize.should == "fancy_categories"
67
- end
68
-
69
- deprec_specify "#classify should tranform table names to class names" do
70
- "egg_and_hams".classify.should == "EggAndHam"
71
- "post".classify.should == "Post"
72
- end
73
-
74
- deprec_specify "#foreign_key should create a foreign key name from a class name" do
75
- "Message".foreign_key.should == "message_id"
76
- "Message".foreign_key(false).should == "messageid"
77
- "Admin::Post".foreign_key.should == "post_id"
78
- end
79
- end
80
-
81
- describe String::Inflections do
3
+ describe Sequel::Inflections do
82
4
  before do
83
- deprec do
84
- @plurals, @singulars, @uncountables = String.inflections.plurals.dup, String.inflections.singulars.dup, String.inflections.uncountables.dup
85
- end
5
+ @plurals, @singulars, @uncountables = Sequel.inflections.plurals.dup, Sequel.inflections.singulars.dup, Sequel.inflections.uncountables.dup
86
6
  end
87
7
  after do
88
- deprec do
89
- String.inflections.plurals.replace(@plurals)
90
- String.inflections.singulars.replace(@singulars)
91
- String.inflections.uncountables.replace(@uncountables)
92
- Sequel.inflections.plurals.replace(@plurals)
93
- Sequel.inflections.singulars.replace(@singulars)
94
- Sequel.inflections.uncountables.replace(@uncountables)
95
- end
96
- end
97
-
98
- deprec_specify "should be possible to clear the list of singulars, plurals, and uncountables" do
99
- String.inflections.clear(:plurals)
100
- String.inflections.plurals.should == []
101
- String.inflections.plural('blah', 'blahs')
102
- String.inflections.clear
103
- String.inflections.plurals.should == []
104
- String.inflections.singulars.should == []
105
- String.inflections.uncountables.should == []
8
+ Sequel.inflections.plurals.replace(@plurals)
9
+ Sequel.inflections.singulars.replace(@singulars)
10
+ Sequel.inflections.uncountables.replace(@uncountables)
106
11
  end
107
12
 
108
- deprec_specify "should be able to specify new inflection rules" do
109
- String.inflections do |i|
110
- i.plural(/xx$/i, 'xxx')
111
- i.singular(/ttt$/i, 'tt')
112
- i.irregular('yy', 'yyy')
113
- i.uncountable(%w'zz')
114
- end
115
- 'roxx'.pluralize.should == 'roxxx'
116
- 'rottt'.singularize.should == 'rott'
117
- 'yy'.pluralize.should == 'yyy'
118
- 'yyy'.singularize.should == 'yy'
119
- 'zz'.pluralize.should == 'zz'
120
- 'zz'.singularize.should == 'zz'
13
+ it "should be possible to clear the list of singulars, plurals, and uncountables" do
14
+ Sequel.inflections.clear(:plurals)
15
+ Sequel.inflections.plurals.should == []
16
+ Sequel.inflections.plural('blah', 'blahs')
17
+ Sequel.inflections.clear
18
+ Sequel.inflections.plurals.should == []
19
+ Sequel.inflections.singulars.should == []
20
+ Sequel.inflections.uncountables.should == []
121
21
  end
122
22
 
123
- deprec_specify "should be yielded and returned by String.inflections" do
124
- String.inflections{|i| i.should == String::Inflections}.should == String::Inflections
23
+ it "should be yielded and returned by Sequel.inflections" do
24
+ Sequel.inflections{|i| i.should == Sequel::Inflections}.should == Sequel::Inflections
125
25
  end
126
26
  end
@@ -64,22 +64,6 @@ describe Sequel::Model, "dataset & schema" do
64
64
  ds.should respond_to(:destroy)
65
65
  end
66
66
 
67
- deprec_specify "sets schema with implicit table name" do
68
- @model.set_schema do
69
- primary_key :ssn, :string
70
- end
71
- @model.primary_key.should == :ssn
72
- @model.table_name.should == :items
73
- end
74
-
75
- deprec_specify "sets schema with explicit table name" do
76
- @model.set_schema :foo do
77
- primary_key :id
78
- end
79
- @model.primary_key.should == :id
80
- @model.table_name.should == :foo
81
- end
82
-
83
67
  it "doesn't raise an error on set_dataset if there is an error raised getting the schema" do
84
68
  @model.meta_def(:get_db_schema){raise Sequel::Error}
85
69
  proc{@model.set_dataset(MODEL_DB[:foo])}.should_not raise_error
@@ -91,60 +75,6 @@ describe Sequel::Model, "dataset & schema" do
91
75
  end
92
76
  end
93
77
 
94
- describe Sequel::Model, "#sti_key" do
95
- before do
96
- deprec do
97
- class ::StiTest < Sequel::Model
98
- def kind=(x); self[:kind] = x; end
99
- def refresh; end
100
- set_sti_key :kind
101
- end
102
- end
103
- class ::StiTestSub1 < StiTest
104
- end
105
- class ::StiTestSub2 < StiTest
106
- end
107
- @ds = StiTest.dataset
108
- MODEL_DB.reset
109
- end
110
-
111
- deprec_specify "should return rows with the correct class based on the polymorphic_key value" do
112
- def @ds.fetch_rows(sql)
113
- yield({:kind=>'StiTest'})
114
- yield({:kind=>'StiTestSub1'})
115
- yield({:kind=>'StiTestSub2'})
116
- end
117
- StiTest.all.collect{|x| x.class}.should == [StiTest, StiTestSub1, StiTestSub2]
118
- end
119
-
120
- deprec_specify "should fallback to the main class if polymophic_key value is NULL" do
121
- def @ds.fetch_rows(sql)
122
- yield({:kind=>nil})
123
- end
124
- StiTest.all.collect{|x| x.class}.should == [StiTest]
125
- end
126
-
127
- deprec_specify "should fallback to the main class if the given class does not exist" do
128
- def @ds.fetch_rows(sql)
129
- yield({:kind=>'StiTestSub3'})
130
- end
131
- StiTest.all.collect{|x| x.class}.should == [StiTest]
132
- end
133
-
134
- deprec_specify "should add a before_create hook that sets the model class name for the key" do
135
- StiTest.new.save
136
- StiTestSub1.new.save
137
- StiTestSub2.new.save
138
- MODEL_DB.sqls.should == ["INSERT INTO sti_tests (kind) VALUES ('StiTest')", "INSERT INTO sti_tests (kind) VALUES ('StiTestSub1')", "INSERT INTO sti_tests (kind) VALUES ('StiTestSub2')"]
139
- end
140
-
141
- deprec_specify "should add a filter to model datasets inside subclasses hook to only retreive objects with the matching key" do
142
- StiTest.dataset.sql.should == "SELECT * FROM sti_tests"
143
- StiTestSub1.dataset.sql.should == "SELECT * FROM sti_tests WHERE (kind = 'StiTestSub1')"
144
- StiTestSub2.dataset.sql.should == "SELECT * FROM sti_tests WHERE (kind = 'StiTestSub2')"
145
- end
146
- end
147
-
148
78
  describe Sequel::Model, "constructor" do
149
79
 
150
80
  before(:each) do
@@ -327,47 +257,6 @@ describe Sequel::Model, ".find_or_create" do
327
257
  end
328
258
  end
329
259
 
330
- describe Sequel::Model, ".delete_all" do
331
-
332
- before(:each) do
333
- MODEL_DB.reset
334
- @c = Class.new(Sequel::Model(:items)) do
335
- no_primary_key
336
- end
337
-
338
- @c.dataset.meta_def(:delete) {MODEL_DB << delete_sql}
339
- end
340
-
341
- deprec_specify "should delete all records in the dataset" do
342
- @c.delete_all
343
- MODEL_DB.sqls.should == ["DELETE FROM items"]
344
- end
345
-
346
- end
347
-
348
- describe Sequel::Model, ".destroy_all" do
349
-
350
- before(:each) do
351
- MODEL_DB.reset
352
- @c = Class.new(Sequel::Model(:items)) do
353
- no_primary_key
354
- end
355
-
356
- @c.dataset.meta_def(:delete) {MODEL_DB << delete_sql}
357
- end
358
-
359
- deprec_specify "should delete all records in the dataset" do
360
- @c.dataset.meta_def(:destroy) {MODEL_DB << "DESTROY this stuff"}
361
- @c.destroy_all
362
- MODEL_DB.sqls.should == ["DESTROY this stuff"]
363
- end
364
-
365
- deprec_specify "should call dataset.destroy" do
366
- @c.dataset.should_receive(:destroy).and_return(true)
367
- @c.destroy_all
368
- end
369
- end
370
-
371
260
  describe Sequel::Model, ".all" do
372
261
 
373
262
  before(:each) do
@@ -582,12 +471,3 @@ context "Model.db_schema" do
582
471
  @c.db_schema.should == {:x=>{}}
583
472
  end
584
473
  end
585
-
586
- context "Model.str_columns" do
587
- deprec_specify "should return the columns as frozen strings" do
588
- c = Class.new(Sequel::Model)
589
- c.meta_def(:columns){[:a, :b]}
590
- c.orig_str_columns.should == %w'a b'
591
- proc{c.orig_str_columns.first << 'a'}.should raise_error
592
- end
593
- end
@@ -69,74 +69,4 @@ describe Sequel::Model, "using a plugin" do
69
69
  c.should respond_to(:ghi)
70
70
  c.ghi.should == {:a => 1, :b => 2}
71
71
  end
72
-
73
- deprec_specify "should have an .is alias" do
74
- c = nil
75
- proc do
76
- c = Class.new(Sequel::Model)
77
- c.class_eval do
78
- set_dataset MODEL_DB[:items]
79
- is :timestamped, :a => 1, :b => 2
80
- end
81
- end.should_not raise_error(LoadError)
82
-
83
- c.should respond_to(:stamp_opts)
84
- c.stamp_opts.should == {:a => 1, :b => 2}
85
-
86
- # instance methods
87
- m = c.new
88
- m.should respond_to(:get_stamp)
89
- m.should respond_to(:abc)
90
- m.abc.should == {:a => 1, :b => 2}
91
- t = Time.now
92
- m[:stamp] = t
93
- m.get_stamp.should == t
94
-
95
- # class methods
96
- c.should respond_to(:deff)
97
- c.deff.should == {:a => 1, :b => 2}
98
-
99
- # dataset methods
100
- c.dataset.should respond_to(:ghi)
101
- c.dataset.ghi.should == {:a => 1, :b => 2}
102
-
103
- # dataset methods called on the class
104
- c.should respond_to(:ghi)
105
- c.ghi.should == {:a => 1, :b => 2}
106
- end
107
-
108
- deprec_specify "should have an .is_a alias" do
109
- c = nil
110
- proc do
111
- c = Class.new(Sequel::Model)
112
- c.class_eval do
113
- set_dataset MODEL_DB[:items]
114
- is_a :timestamped, :a => 1, :b => 2
115
- end
116
- end.should_not raise_error(LoadError)
117
-
118
- c.should respond_to(:stamp_opts)
119
- c.stamp_opts.should == {:a => 1, :b => 2}
120
-
121
- # instance methods
122
- m = c.new
123
- m.should respond_to(:get_stamp)
124
- m.should respond_to(:abc)
125
- m.abc.should == {:a => 1, :b => 2}
126
- t = Time.now
127
- m[:stamp] = t
128
- m.get_stamp.should == t
129
-
130
- # class methods
131
- c.should respond_to(:deff)
132
- c.deff.should == {:a => 1, :b => 2}
133
-
134
- # dataset methods
135
- c.dataset.should respond_to(:ghi)
136
- c.dataset.ghi.should == {:a => 1, :b => 2}
137
-
138
- # dataset methods called on the class
139
- c.should respond_to(:ghi)
140
- c.ghi.should == {:a => 1, :b => 2}
141
- end
142
72
  end
@@ -1,5 +1,39 @@
1
1
  require File.join(File.dirname(__FILE__), "spec_helper")
2
2
 
3
+ describe "Model#save server use" do
4
+
5
+ before(:each) do
6
+ @c = Class.new(Sequel::Model(:items)) do
7
+ columns :id, :x, :y
8
+ end
9
+ @c.db = MockDatabase.new
10
+ db2 = @db2 = MockDatabase.new
11
+ @c.class_eval do
12
+ define_method(:after_save) do
13
+ model.db = db2
14
+ ds = model.dataset
15
+ def ds.fetch_rows(sql)
16
+ yield @db.execute(sql, @opts[:server])
17
+ end
18
+ @this = nil
19
+ end
20
+ end
21
+ end
22
+
23
+ it "should use the :default server if the model doesn't have one already specified" do
24
+ @c.db.should_receive(:execute).with("INSERT INTO items (x) VALUES (1)").and_return(10)
25
+ @db2.should_receive(:execute).with('SELECT * FROM items WHERE (id = 10) LIMIT 1', :default).and_return(:x=>1, :id=>10)
26
+ @c.new(:x=>1).save
27
+ end
28
+
29
+ it "should use the model's server if the model has one already specified" do
30
+ @c.dataset = @c.dataset.server(:blah)
31
+ @c.db.should_receive(:execute).with("INSERT INTO items (x) VALUES (1)").and_return(10)
32
+ @db2.should_receive(:execute).with('SELECT * FROM items WHERE (id = 10) LIMIT 1', :blah).and_return(:x=>1, :id=>10)
33
+ @c.new(:x=>1).save
34
+ end
35
+ end
36
+
3
37
  describe "Model#save" do
4
38
 
5
39
  before(:each) do
@@ -228,73 +262,6 @@ describe "Model#save_changes" do
228
262
  end
229
263
  end
230
264
 
231
- describe "Model#update_values" do
232
- before(:each) do
233
- MODEL_DB.reset
234
-
235
- @c = Class.new(Sequel::Model(:items)) do
236
- unrestrict_primary_key
237
- columns :id, :x, :y
238
- end
239
- end
240
-
241
- deprec_specify "should generate an update statement" do
242
- o = @c.new(:id => 1)
243
- o.update_values(:x => 1)
244
- MODEL_DB.sqls.first.should == "UPDATE items SET x = 1 WHERE (id = 1)"
245
- end
246
-
247
- deprec_specify "should update attribute values" do
248
- o = @c.new(:id => 1)
249
- o.x.should be_nil
250
- o.update_values(:x => 1)
251
- o.x.should == 1
252
- end
253
-
254
- deprec_specify "should support string keys" do
255
- o = @c.new(:id => 1)
256
- o.x.should be_nil
257
- o.update_values('x' => 1)
258
- o.x.should == 1
259
- MODEL_DB.sqls.first.should == "UPDATE items SET x = 1 WHERE (id = 1)"
260
- end
261
- end
262
-
263
- describe "Model#set_values" do
264
- before(:each) do
265
- MODEL_DB.reset
266
-
267
- @c = Class.new(Sequel::Model(:items)) do
268
- unrestrict_primary_key
269
- columns :id, :x, :y
270
- end
271
- end
272
-
273
- deprec_specify "should not touch the database" do
274
- o = @c.new(:id => 1)
275
- o.set_values(:x => 1)
276
- MODEL_DB.sqls.should == []
277
- end
278
-
279
- deprec_specify "should update attribute values" do
280
- o = @c.new(:id => 1)
281
- o.x.should be_nil
282
- o.set_values(:x => 1)
283
- o.x.should == 1
284
- end
285
-
286
- deprec_specify "should support string keys" do
287
- o = @c.new(:id => 1)
288
- o.x.should be_nil
289
- o.set_values('x' => 1)
290
- o.x.should == 1
291
- end
292
-
293
- deprec_specify "should raise an error if used with a non-String, non-Symbol key" do
294
- proc{@c.new.set_values(1=>2)}.should raise_error(Sequel::Error)
295
- end
296
- end
297
-
298
265
  describe "Model#new?" do
299
266
 
300
267
  before(:each) do
@@ -506,23 +473,11 @@ describe Sequel::Model, "#set" do
506
473
  MODEL_DB.sqls.should == []
507
474
  end
508
475
 
509
- deprec_specify "should be aliased as set_with_params" do
510
- @o1.set_with_params(:x => 1, :z => 2)
511
- @o1.values.should == {:x => 1}
512
- MODEL_DB.sqls.should == []
513
- end
514
-
515
476
  it "should return self" do
516
477
  returned_value = @o1.set(:x => 1, :z => 2)
517
478
  returned_value.should == @o1
518
479
  MODEL_DB.sqls.should == []
519
480
  end
520
-
521
- deprec_specify "should assume it is a column if no column information is present and the key is a symbol" do
522
- @c.instance_variable_set(:@columns, nil)
523
- o = @c.new.set(:x123=>1)
524
- o[:x123].should == 1
525
- end
526
481
  end
527
482
 
528
483
  describe Sequel::Model, "#update" do
@@ -562,11 +517,6 @@ describe Sequel::Model, "#update" do
562
517
  @o2.values.should == {:y => 1, :id=> 5}
563
518
  MODEL_DB.sqls.first.should == "UPDATE items SET y = 1 WHERE (id = 5)"
564
519
  end
565
-
566
- deprec_specify "should be aliased as update_with_params" do
567
- @o1.update_with_params(:x => 1, :z => 2)
568
- MODEL_DB.sqls.first.should == "INSERT INTO items (x) VALUES (1)"
569
- end
570
520
  end
571
521
 
572
522
  describe Sequel::Model, "#(set|update)_(all|except|only)" do
@@ -950,14 +900,6 @@ describe Sequel::Model, "typecasting" do
950
900
  m.x.should == '1'
951
901
  end
952
902
 
953
- deprec_specify "should not convert if serializing the field" do
954
- @c.serialize :x
955
- @c.instance_variable_set(:@db_schema, {:x=>{:type=>:string}})
956
- m = @c.new
957
- m.x =[1, 2]
958
- m.x.should == [1, 2]
959
- end
960
-
961
903
  specify "should convert to integer for an integer field" do
962
904
  @c.instance_variable_set(:@db_schema, {:x=>{:type=>:integer}})
963
905
  m = @c.new
@@ -1065,7 +1007,7 @@ describe Sequel::Model, "typecasting" do
1065
1007
  specify "should convert to BigDecimal for a decimal field" do
1066
1008
  @c.instance_variable_set(:@db_schema, {:x=>{:type=>:decimal}})
1067
1009
  m = @c.new
1068
- bd = '1.0'.to_d
1010
+ bd = BigDecimal.new('1.0')
1069
1011
  m.x = '1.0'
1070
1012
  m.x.should == bd
1071
1013
  m.x = 1.0