sequel 3.48.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +114 -0
  3. data/Rakefile +10 -7
  4. data/doc/association_basics.rdoc +25 -23
  5. data/doc/code_order.rdoc +7 -0
  6. data/doc/core_extensions.rdoc +0 -10
  7. data/doc/object_model.rdoc +4 -1
  8. data/doc/querying.rdoc +3 -3
  9. data/doc/release_notes/4.0.0.txt +262 -0
  10. data/doc/security.rdoc +0 -28
  11. data/doc/testing.rdoc +8 -14
  12. data/lib/sequel/adapters/ado.rb +7 -11
  13. data/lib/sequel/adapters/ado/access.rb +8 -8
  14. data/lib/sequel/adapters/ado/mssql.rb +4 -4
  15. data/lib/sequel/adapters/amalgalite.rb +6 -6
  16. data/lib/sequel/adapters/cubrid.rb +7 -7
  17. data/lib/sequel/adapters/db2.rb +5 -9
  18. data/lib/sequel/adapters/dbi.rb +2 -6
  19. data/lib/sequel/adapters/do.rb +4 -4
  20. data/lib/sequel/adapters/firebird.rb +4 -4
  21. data/lib/sequel/adapters/ibmdb.rb +8 -8
  22. data/lib/sequel/adapters/informix.rb +2 -10
  23. data/lib/sequel/adapters/jdbc.rb +17 -17
  24. data/lib/sequel/adapters/jdbc/as400.rb +2 -2
  25. data/lib/sequel/adapters/jdbc/cubrid.rb +1 -1
  26. data/lib/sequel/adapters/jdbc/db2.rb +1 -1
  27. data/lib/sequel/adapters/jdbc/derby.rb +1 -1
  28. data/lib/sequel/adapters/jdbc/h2.rb +2 -2
  29. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -1
  30. data/lib/sequel/adapters/jdbc/informix.rb +1 -1
  31. data/lib/sequel/adapters/jdbc/mssql.rb +2 -2
  32. data/lib/sequel/adapters/jdbc/mysql.rb +1 -1
  33. data/lib/sequel/adapters/jdbc/oracle.rb +5 -1
  34. data/lib/sequel/adapters/jdbc/postgresql.rb +3 -3
  35. data/lib/sequel/adapters/jdbc/sqlite.rb +3 -3
  36. data/lib/sequel/adapters/jdbc/transactions.rb +3 -3
  37. data/lib/sequel/adapters/mock.rb +7 -7
  38. data/lib/sequel/adapters/mysql.rb +3 -3
  39. data/lib/sequel/adapters/mysql2.rb +4 -4
  40. data/lib/sequel/adapters/odbc.rb +2 -6
  41. data/lib/sequel/adapters/odbc/mssql.rb +1 -1
  42. data/lib/sequel/adapters/openbase.rb +1 -5
  43. data/lib/sequel/adapters/oracle.rb +13 -17
  44. data/lib/sequel/adapters/postgres.rb +20 -25
  45. data/lib/sequel/adapters/shared/cubrid.rb +3 -3
  46. data/lib/sequel/adapters/shared/db2.rb +2 -2
  47. data/lib/sequel/adapters/shared/firebird.rb +7 -7
  48. data/lib/sequel/adapters/shared/mssql.rb +9 -9
  49. data/lib/sequel/adapters/shared/mysql.rb +29 -13
  50. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +7 -7
  51. data/lib/sequel/adapters/shared/oracle.rb +22 -13
  52. data/lib/sequel/adapters/shared/postgres.rb +61 -46
  53. data/lib/sequel/adapters/shared/sqlite.rb +9 -9
  54. data/lib/sequel/adapters/sqlite.rb +17 -11
  55. data/lib/sequel/adapters/swift.rb +3 -3
  56. data/lib/sequel/adapters/swift/mysql.rb +1 -1
  57. data/lib/sequel/adapters/swift/sqlite.rb +1 -1
  58. data/lib/sequel/adapters/tinytds.rb +8 -8
  59. data/lib/sequel/ast_transformer.rb +3 -1
  60. data/lib/sequel/connection_pool.rb +4 -2
  61. data/lib/sequel/connection_pool/sharded_single.rb +2 -2
  62. data/lib/sequel/connection_pool/sharded_threaded.rb +5 -5
  63. data/lib/sequel/connection_pool/threaded.rb +7 -7
  64. data/lib/sequel/core.rb +4 -67
  65. data/lib/sequel/database.rb +1 -0
  66. data/lib/sequel/database/connecting.rb +2 -8
  67. data/lib/sequel/database/dataset.rb +2 -7
  68. data/lib/sequel/database/dataset_defaults.rb +0 -18
  69. data/lib/sequel/database/features.rb +4 -4
  70. data/lib/sequel/database/misc.rb +6 -8
  71. data/lib/sequel/database/query.rb +5 -61
  72. data/lib/sequel/database/schema_generator.rb +22 -20
  73. data/lib/sequel/database/schema_methods.rb +48 -20
  74. data/lib/sequel/database/transactions.rb +7 -17
  75. data/lib/sequel/dataset.rb +2 -0
  76. data/lib/sequel/dataset/actions.rb +23 -91
  77. data/lib/sequel/dataset/features.rb +1 -4
  78. data/lib/sequel/dataset/graph.rb +3 -47
  79. data/lib/sequel/dataset/misc.rb +4 -33
  80. data/lib/sequel/dataset/prepared_statements.rb +3 -1
  81. data/lib/sequel/dataset/query.rb +116 -240
  82. data/lib/sequel/dataset/sql.rb +19 -97
  83. data/lib/sequel/deprecated.rb +0 -16
  84. data/lib/sequel/exceptions.rb +0 -3
  85. data/lib/sequel/extensions/_pretty_table.rb +1 -1
  86. data/lib/sequel/extensions/columns_introspection.rb +1 -12
  87. data/lib/sequel/extensions/constraint_validations.rb +3 -3
  88. data/lib/sequel/extensions/core_extensions.rb +0 -9
  89. data/lib/sequel/extensions/date_arithmetic.rb +1 -2
  90. data/lib/sequel/extensions/graph_each.rb +11 -0
  91. data/lib/sequel/extensions/migration.rb +5 -5
  92. data/lib/sequel/extensions/null_dataset.rb +11 -13
  93. data/lib/sequel/extensions/pagination.rb +3 -6
  94. data/lib/sequel/extensions/pg_array.rb +6 -4
  95. data/lib/sequel/extensions/pg_array_ops.rb +35 -1
  96. data/lib/sequel/extensions/pg_json.rb +12 -2
  97. data/lib/sequel/extensions/pg_json_ops.rb +266 -0
  98. data/lib/sequel/extensions/pg_range.rb +2 -2
  99. data/lib/sequel/extensions/pg_range_ops.rb +0 -8
  100. data/lib/sequel/extensions/pg_row.rb +2 -2
  101. data/lib/sequel/extensions/pretty_table.rb +0 -4
  102. data/lib/sequel/extensions/query.rb +3 -8
  103. data/lib/sequel/extensions/schema_caching.rb +0 -7
  104. data/lib/sequel/extensions/schema_dumper.rb +10 -17
  105. data/lib/sequel/extensions/select_remove.rb +0 -4
  106. data/lib/sequel/extensions/set_overrides.rb +28 -0
  107. data/lib/sequel/extensions/to_dot.rb +6 -10
  108. data/lib/sequel/model.rb +6 -7
  109. data/lib/sequel/model/associations.rb +127 -182
  110. data/lib/sequel/model/base.rb +88 -211
  111. data/lib/sequel/model/errors.rb +0 -13
  112. data/lib/sequel/model/plugins.rb +2 -2
  113. data/lib/sequel/no_core_ext.rb +0 -1
  114. data/lib/sequel/plugins/after_initialize.rb +11 -17
  115. data/lib/sequel/plugins/association_autoreloading.rb +1 -47
  116. data/lib/sequel/plugins/association_dependencies.rb +2 -2
  117. data/lib/sequel/plugins/auto_validations.rb +2 -8
  118. data/lib/sequel/plugins/blacklist_security.rb +32 -2
  119. data/lib/sequel/plugins/caching.rb +1 -1
  120. data/lib/sequel/plugins/class_table_inheritance.rb +2 -2
  121. data/lib/sequel/plugins/composition.rb +10 -8
  122. data/lib/sequel/plugins/constraint_validations.rb +2 -2
  123. data/lib/sequel/plugins/dataset_associations.rb +4 -0
  124. data/lib/sequel/plugins/defaults_setter.rb +8 -6
  125. data/lib/sequel/plugins/dirty.rb +6 -6
  126. data/lib/sequel/plugins/force_encoding.rb +13 -8
  127. data/lib/sequel/plugins/hook_class_methods.rb +1 -7
  128. data/lib/sequel/plugins/json_serializer.rb +13 -74
  129. data/lib/sequel/plugins/lazy_attributes.rb +2 -4
  130. data/lib/sequel/plugins/list.rb +1 -1
  131. data/lib/sequel/plugins/many_through_many.rb +4 -11
  132. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +1 -49
  133. data/lib/sequel/plugins/nested_attributes.rb +1 -1
  134. data/lib/sequel/plugins/optimistic_locking.rb +3 -5
  135. data/lib/sequel/plugins/pg_array_associations.rb +453 -0
  136. data/lib/sequel/plugins/pg_typecast_on_load.rb +23 -7
  137. data/lib/sequel/plugins/prepared_statements.rb +1 -1
  138. data/lib/sequel/plugins/prepared_statements_associations.rb +20 -14
  139. data/lib/sequel/plugins/prepared_statements_safe.rb +2 -2
  140. data/lib/sequel/plugins/rcte_tree.rb +1 -1
  141. data/lib/sequel/plugins/serialization.rb +5 -4
  142. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  143. data/lib/sequel/plugins/sharding.rb +7 -1
  144. data/lib/sequel/plugins/single_table_inheritance.rb +1 -1
  145. data/lib/sequel/plugins/timestamps.rb +1 -1
  146. data/lib/sequel/plugins/touch.rb +2 -2
  147. data/lib/sequel/plugins/tree.rb +1 -1
  148. data/lib/sequel/plugins/typecast_on_load.rb +19 -4
  149. data/lib/sequel/plugins/validation_class_methods.rb +0 -30
  150. data/lib/sequel/plugins/validation_helpers.rb +13 -31
  151. data/lib/sequel/plugins/xml_serializer.rb +18 -57
  152. data/lib/sequel/sql.rb +20 -22
  153. data/lib/sequel/version.rb +2 -2
  154. data/spec/adapters/db2_spec.rb +14 -23
  155. data/spec/adapters/firebird_spec.rb +25 -29
  156. data/spec/adapters/informix_spec.rb +11 -14
  157. data/spec/adapters/mssql_spec.rb +71 -77
  158. data/spec/adapters/mysql_spec.rb +165 -172
  159. data/spec/adapters/oracle_spec.rb +36 -39
  160. data/spec/adapters/postgres_spec.rb +175 -100
  161. data/spec/adapters/spec_helper.rb +13 -11
  162. data/spec/adapters/sqlite_spec.rb +36 -44
  163. data/spec/core/connection_pool_spec.rb +2 -1
  164. data/spec/core/database_spec.rb +55 -55
  165. data/spec/core/dataset_spec.rb +45 -249
  166. data/spec/core/deprecated_spec.rb +0 -8
  167. data/spec/core/expression_filters_spec.rb +23 -5
  168. data/spec/core/object_graph_spec.rb +4 -66
  169. data/spec/core/schema_spec.rb +35 -12
  170. data/spec/core/spec_helper.rb +3 -2
  171. data/spec/core_extensions_spec.rb +17 -19
  172. data/spec/extensions/arbitrary_servers_spec.rb +2 -3
  173. data/spec/extensions/association_dependencies_spec.rb +14 -14
  174. data/spec/extensions/auto_validations_spec.rb +7 -0
  175. data/spec/extensions/blacklist_security_spec.rb +5 -5
  176. data/spec/extensions/blank_spec.rb +2 -0
  177. data/spec/extensions/class_table_inheritance_spec.rb +2 -2
  178. data/spec/extensions/columns_introspection_spec.rb +2 -29
  179. data/spec/extensions/composition_spec.rb +10 -17
  180. data/spec/extensions/core_refinements_spec.rb +5 -1
  181. data/spec/extensions/dataset_associations_spec.rb +18 -0
  182. data/spec/extensions/date_arithmetic_spec.rb +2 -2
  183. data/spec/extensions/defaults_setter_spec.rb +9 -9
  184. data/spec/extensions/dirty_spec.rb +0 -5
  185. data/spec/extensions/eval_inspect_spec.rb +2 -0
  186. data/spec/extensions/force_encoding_spec.rb +2 -18
  187. data/spec/extensions/hash_aliases_spec.rb +8 -0
  188. data/spec/extensions/hook_class_methods_spec.rb +39 -58
  189. data/spec/extensions/inflector_spec.rb +2 -0
  190. data/spec/extensions/instance_filters_spec.rb +8 -8
  191. data/spec/extensions/json_serializer_spec.rb +1 -41
  192. data/spec/extensions/list_spec.rb +1 -1
  193. data/spec/extensions/many_through_many_spec.rb +106 -109
  194. data/spec/extensions/migration_spec.rb +2 -0
  195. data/spec/extensions/named_timezones_spec.rb +1 -0
  196. data/spec/extensions/pg_array_associations_spec.rb +603 -0
  197. data/spec/extensions/pg_array_ops_spec.rb +25 -0
  198. data/spec/extensions/pg_array_spec.rb +9 -1
  199. data/spec/extensions/pg_hstore_ops_spec.rb +13 -0
  200. data/spec/extensions/pg_hstore_spec.rb +1 -0
  201. data/spec/extensions/pg_json_ops_spec.rb +131 -0
  202. data/spec/extensions/pg_json_spec.rb +10 -4
  203. data/spec/extensions/pg_range_ops_spec.rb +2 -5
  204. data/spec/extensions/pg_range_spec.rb +6 -2
  205. data/spec/extensions/pg_row_ops_spec.rb +2 -0
  206. data/spec/extensions/prepared_statements_associations_spec.rb +26 -5
  207. data/spec/extensions/rcte_tree_spec.rb +15 -15
  208. data/spec/extensions/schema_dumper_spec.rb +0 -1
  209. data/spec/extensions/schema_spec.rb +9 -9
  210. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  211. data/spec/extensions/serialization_spec.rb +18 -29
  212. data/spec/extensions/set_overrides_spec.rb +4 -0
  213. data/spec/extensions/{many_to_one_pk_lookup_spec.rb → shared_caching_spec.rb} +1 -4
  214. data/spec/extensions/single_table_inheritance_spec.rb +4 -4
  215. data/spec/extensions/spec_helper.rb +8 -9
  216. data/spec/extensions/sql_expr_spec.rb +2 -0
  217. data/spec/extensions/string_date_time_spec.rb +2 -0
  218. data/spec/extensions/string_stripper_spec.rb +2 -0
  219. data/spec/extensions/tactical_eager_loading_spec.rb +12 -12
  220. data/spec/extensions/thread_local_timezones_spec.rb +2 -0
  221. data/spec/extensions/timestamps_spec.rb +1 -1
  222. data/spec/extensions/to_dot_spec.rb +1 -1
  223. data/spec/extensions/touch_spec.rb +24 -24
  224. data/spec/extensions/tree_spec.rb +7 -7
  225. data/spec/extensions/typecast_on_load_spec.rb +8 -1
  226. data/spec/extensions/update_primary_key_spec.rb +10 -10
  227. data/spec/extensions/validation_class_methods_spec.rb +10 -39
  228. data/spec/extensions/validation_helpers_spec.rb +29 -47
  229. data/spec/extensions/xml_serializer_spec.rb +1 -23
  230. data/spec/integration/associations_test.rb +231 -40
  231. data/spec/integration/database_test.rb +1 -1
  232. data/spec/integration/dataset_test.rb +64 -64
  233. data/spec/integration/eager_loader_test.rb +28 -28
  234. data/spec/integration/migrator_test.rb +1 -1
  235. data/spec/integration/model_test.rb +2 -2
  236. data/spec/integration/plugin_test.rb +21 -21
  237. data/spec/integration/prepared_statement_test.rb +7 -7
  238. data/spec/integration/schema_test.rb +115 -110
  239. data/spec/integration/spec_helper.rb +17 -27
  240. data/spec/integration/timezone_test.rb +1 -1
  241. data/spec/integration/transaction_test.rb +10 -10
  242. data/spec/integration/type_test.rb +2 -2
  243. data/spec/model/association_reflection_spec.rb +2 -28
  244. data/spec/model/associations_spec.rb +239 -188
  245. data/spec/model/base_spec.rb +27 -68
  246. data/spec/model/dataset_methods_spec.rb +4 -4
  247. data/spec/model/eager_loading_spec.rb +160 -172
  248. data/spec/model/hooks_spec.rb +62 -79
  249. data/spec/model/model_spec.rb +36 -51
  250. data/spec/model/plugins_spec.rb +5 -19
  251. data/spec/model/record_spec.rb +125 -151
  252. data/spec/model/spec_helper.rb +8 -6
  253. data/spec/model/validations_spec.rb +4 -17
  254. data/spec/spec_config.rb +2 -10
  255. metadata +50 -56
  256. data/lib/sequel/deprecated_core_extensions.rb +0 -135
  257. data/lib/sequel/extensions/pg_auto_parameterize.rb +0 -185
  258. data/lib/sequel/extensions/pg_statement_cache.rb +0 -318
  259. data/lib/sequel/plugins/identity_map.rb +0 -260
  260. data/lib/sequel_core.rb +0 -2
  261. data/lib/sequel_model.rb +0 -2
  262. data/spec/extensions/association_autoreloading_spec.rb +0 -102
  263. data/spec/extensions/identity_map_spec.rb +0 -337
  264. data/spec/extensions/pg_auto_parameterize_spec.rb +0 -70
  265. data/spec/extensions/pg_statement_cache_spec.rb +0 -208
  266. data/spec/rcov.opts +0 -8
  267. data/spec/spec_config.rb.example +0 -10
@@ -1,22 +1,5 @@
1
1
  require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
2
 
3
- describe "Model#after_initialize" do
4
- qspecify "should be called after initialization for both new object and objects retrieved from the database" do
5
-
6
- a = Class.new(Sequel::Model) do
7
- self::Foo = []
8
- columns :x, :y
9
- def after_initialize
10
- model::Foo << @values.clone
11
- end
12
- end
13
-
14
- a.new(:x => 1, :y => 2)
15
- a.call(:x => 1, :y => 3)
16
- a::Foo.should == [{:x => 1, :y => 2}, {:x => 1, :y => 3}]
17
- end
18
- end
19
-
20
3
  describe "Model#before_create && Model#after_create" do
21
4
  before do
22
5
  @c = Class.new(Sequel::Model(:items)) do
@@ -25,22 +8,22 @@ describe "Model#before_create && Model#after_create" do
25
8
  unrestrict_primary_key
26
9
 
27
10
  def after_create
28
- MODEL_DB << "BLAH after"
11
+ DB << "BLAH after"
29
12
  end
30
13
  end
31
- MODEL_DB.reset
14
+ DB.reset
32
15
  end
33
16
 
34
17
  specify "should be called around new record creation" do
35
- @c.send(:define_method, :before_create){MODEL_DB << "BLAH before"}
18
+ @c.send(:define_method, :before_create){DB << "BLAH before"}
36
19
  @c.create(:x => 2)
37
- MODEL_DB.sqls.should == ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after', 'SELECT * FROM items WHERE (x = 2) LIMIT 1']
20
+ DB.sqls.should == ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after', 'SELECT * FROM items WHERE (x = 2) LIMIT 1']
38
21
  end
39
22
 
40
23
  specify ".create should cancel the save and raise an error if before_create returns false and raise_on_save_failure is true" do
41
24
  @c.send(:define_method, :before_create){false}
42
25
  proc{@c.create(:x => 2)}.should raise_error(Sequel::BeforeHookFailed)
43
- MODEL_DB.sqls.should == []
26
+ DB.sqls.should == []
44
27
  proc{@c.load(:id => 2233).save}.should_not raise_error(Sequel::ValidationFailed)
45
28
  end
46
29
 
@@ -48,7 +31,7 @@ describe "Model#before_create && Model#after_create" do
48
31
  @c.send(:define_method, :before_create){false}
49
32
  @c.raise_on_save_failure = false
50
33
  @c.create(:x => 2).should == nil
51
- MODEL_DB.sqls.should == []
34
+ DB.sqls.should == []
52
35
  end
53
36
  end
54
37
 
@@ -57,24 +40,24 @@ describe "Model#before_update && Model#after_update" do
57
40
  @c = Class.new(Sequel::Model(:items)) do
58
41
  columns :id, :x
59
42
  def after_update
60
- MODEL_DB << "BLAH after"
43
+ DB << "BLAH after"
61
44
  end
62
45
  end
63
- MODEL_DB.reset
46
+ DB.reset
64
47
  end
65
48
 
66
49
  specify "should be called around record update" do
67
- @c.send(:define_method, :before_update){MODEL_DB << "BLAH before"}
50
+ @c.send(:define_method, :before_update){DB << "BLAH before"}
68
51
  m = @c.load(:id => 2233, :x=>123)
69
52
  m.save
70
- MODEL_DB.sqls.should == ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
53
+ DB.sqls.should == ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
71
54
  end
72
55
 
73
56
  specify "#save should cancel the save and raise an error if before_update returns false and raise_on_save_failure is true" do
74
57
  @c.send(:define_method, :before_update){false}
75
58
  proc{@c.load(:id => 2233).save}.should_not raise_error(Sequel::ValidationFailed)
76
59
  proc{@c.load(:id => 2233).save}.should raise_error(Sequel::BeforeHookFailed)
77
- MODEL_DB.sqls.should == []
60
+ DB.sqls.should == []
78
61
  end
79
62
 
80
63
  specify "#save should cancel the save and raise an error if before_update returns false and raise_on_failure option is true" do
@@ -82,14 +65,14 @@ describe "Model#before_update && Model#after_update" do
82
65
  @c.raise_on_save_failure = false
83
66
  proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.should_not raise_error(Sequel::ValidationFailed)
84
67
  proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.should raise_error(Sequel::BeforeHookFailed)
85
- MODEL_DB.sqls.should == []
68
+ DB.sqls.should == []
86
69
  end
87
70
 
88
71
  specify "#save should cancel the save and return nil if before_update returns false and raise_on_save_failure is false" do
89
72
  @c.send(:define_method, :before_update){false}
90
73
  @c.raise_on_save_failure = false
91
74
  @c.load(:id => 2233).save.should == nil
92
- MODEL_DB.sqls.should == []
75
+ DB.sqls.should == []
93
76
  end
94
77
  end
95
78
 
@@ -98,32 +81,32 @@ describe "Model#before_save && Model#after_save" do
98
81
  @c = Class.new(Sequel::Model(:items)) do
99
82
  columns :x
100
83
  def after_save
101
- MODEL_DB << "BLAH after"
84
+ DB << "BLAH after"
102
85
  end
103
86
  end
104
- MODEL_DB.reset
87
+ DB.reset
105
88
  end
106
89
 
107
90
  specify "should be called around record update" do
108
- @c.send(:define_method, :before_save){MODEL_DB << "BLAH before"}
91
+ @c.send(:define_method, :before_save){DB << "BLAH before"}
109
92
  m = @c.load(:id => 2233, :x=>123)
110
93
  m.save
111
- MODEL_DB.sqls.should == ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
94
+ DB.sqls.should == ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
112
95
  end
113
96
 
114
97
  specify "should be called around record creation" do
115
- @c.send(:define_method, :before_save){MODEL_DB << "BLAH before"}
98
+ @c.send(:define_method, :before_save){DB << "BLAH before"}
116
99
  @c.set_primary_key :x
117
100
  @c.unrestrict_primary_key
118
101
  @c.create(:x => 2)
119
- MODEL_DB.sqls.should == ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after', 'SELECT * FROM items WHERE (x = 2) LIMIT 1']
102
+ DB.sqls.should == ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after', 'SELECT * FROM items WHERE (x = 2) LIMIT 1']
120
103
  end
121
104
 
122
105
  specify "#save should cancel the save and raise an error if before_save returns false and raise_on_save_failure is true" do
123
106
  @c.send(:define_method, :before_save){false}
124
107
  proc{@c.load(:id => 2233).save}.should_not raise_error(Sequel::ValidationFailed)
125
108
  proc{@c.load(:id => 2233).save}.should raise_error(Sequel::BeforeHookFailed)
126
- MODEL_DB.sqls.should == []
109
+ DB.sqls.should == []
127
110
  end
128
111
 
129
112
  specify "#save should cancel the save and raise an error if before_save returns false and raise_on_failure option is true" do
@@ -131,20 +114,20 @@ describe "Model#before_save && Model#after_save" do
131
114
  @c.raise_on_save_failure = false
132
115
  proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.should_not raise_error(Sequel::ValidationFailed)
133
116
  proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.should raise_error(Sequel::BeforeHookFailed)
134
- MODEL_DB.sqls.should == []
117
+ DB.sqls.should == []
135
118
  end
136
119
 
137
120
  specify "#save should cancel the save and return nil if before_save returns false and raise_on_save_failure is false" do
138
121
  @c.send(:define_method, :before_save){false}
139
122
  @c.raise_on_save_failure = false
140
123
  @c.load(:id => 2233).save.should == nil
141
- MODEL_DB.sqls.should == []
124
+ DB.sqls.should == []
142
125
  end
143
126
 
144
127
  specify "#save should have a raised exception reference the model instance" do
145
128
  @c.send(:define_method, :before_save){false}
146
129
  proc{@c.create(:x => 2233)}.should raise_error(Sequel::HookFailed){|e| e.model.should == @c.load(:x=>2233)}
147
- MODEL_DB.sqls.should == []
130
+ DB.sqls.should == []
148
131
  end
149
132
  end
150
133
 
@@ -152,37 +135,37 @@ describe "Model#before_destroy && Model#after_destroy" do
152
135
  before do
153
136
  @c = Class.new(Sequel::Model(:items)) do
154
137
  def after_destroy
155
- MODEL_DB << "BLAH after"
138
+ DB << "BLAH after"
156
139
  end
157
140
  end
158
- MODEL_DB.reset
141
+ DB.reset
159
142
  end
160
143
 
161
144
  specify "should be called around record destruction" do
162
- @c.send(:define_method, :before_destroy){MODEL_DB << "BLAH before"}
145
+ @c.send(:define_method, :before_destroy){DB << "BLAH before"}
163
146
  m = @c.load(:id => 2233)
164
147
  m.destroy
165
- MODEL_DB.sqls.should == ['BLAH before', 'DELETE FROM items WHERE id = 2233', 'BLAH after']
148
+ DB.sqls.should == ['BLAH before', 'DELETE FROM items WHERE id = 2233', 'BLAH after']
166
149
  end
167
150
 
168
151
  specify "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_save_failure is true" do
169
152
  @c.send(:define_method, :before_destroy){false}
170
153
  proc{@c.load(:id => 2233).destroy}.should raise_error(Sequel::BeforeHookFailed)
171
- MODEL_DB.sqls.should == []
154
+ DB.sqls.should == []
172
155
  end
173
156
 
174
157
  specify "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_failure option is true" do
175
158
  @c.send(:define_method, :before_destroy){false}
176
159
  @c.raise_on_save_failure = false
177
160
  proc{@c.load(:id => 2233).destroy(:raise_on_failure => true)}.should raise_error(Sequel::BeforeHookFailed)
178
- MODEL_DB.sqls.should == []
161
+ DB.sqls.should == []
179
162
  end
180
163
 
181
164
  specify "#destroy should cancel the destroy and return nil if before_destroy returns false and raise_on_save_failure is false" do
182
165
  @c.send(:define_method, :before_destroy){false}
183
166
  @c.raise_on_save_failure = false
184
167
  @c.load(:id => 2233).destroy.should == nil
185
- MODEL_DB.sqls.should == []
168
+ DB.sqls.should == []
186
169
  end
187
170
  end
188
171
 
@@ -191,7 +174,7 @@ describe "Model#before_validation && Model#after_validation" do
191
174
  @c = Class.new(Sequel::Model(:items)) do
192
175
  columns :id
193
176
  def after_validation
194
- MODEL_DB << "BLAH after"
177
+ DB << "BLAH after"
195
178
  end
196
179
 
197
180
  def validate
@@ -201,33 +184,33 @@ describe "Model#before_validation && Model#after_validation" do
201
184
  end
202
185
 
203
186
  specify "should be called around validation" do
204
- @c.send(:define_method, :before_validation){MODEL_DB << "BLAH before"}
187
+ @c.send(:define_method, :before_validation){DB << "BLAH before"}
205
188
  m = @c.load(:id => 2233)
206
189
  m.should be_valid
207
- MODEL_DB.sqls.should == ['BLAH before', 'BLAH after']
190
+ DB.sqls.should == ['BLAH before', 'BLAH after']
208
191
 
209
192
  m = @c.load(:id => 22)
210
193
  m.should_not be_valid
211
- MODEL_DB.sqls.should == ['BLAH before', 'BLAH after']
194
+ DB.sqls.should == ['BLAH before', 'BLAH after']
212
195
  end
213
196
 
214
197
  specify "should be called when calling save" do
215
- @c.send(:define_method, :before_validation){MODEL_DB << "BLAH before"}
198
+ @c.send(:define_method, :before_validation){DB << "BLAH before"}
216
199
  m = @c.load(:id => 2233, :x=>123)
217
200
  m.save.should == m
218
- MODEL_DB.sqls.should == ['BLAH before', 'BLAH after', 'UPDATE items SET x = 123 WHERE (id = 2233)']
201
+ DB.sqls.should == ['BLAH before', 'BLAH after', 'UPDATE items SET x = 123 WHERE (id = 2233)']
219
202
 
220
203
  m = @c.load(:id => 22)
221
204
  m.raise_on_save_failure = false
222
205
  m.save.should == nil
223
- MODEL_DB.sqls.should == ['BLAH before', 'BLAH after']
206
+ DB.sqls.should == ['BLAH before', 'BLAH after']
224
207
  end
225
208
 
226
209
  specify "#save should cancel the save and raise an error if before_validation returns false and raise_on_save_failure is true" do
227
210
  @c.send(:define_method, :before_validation){false}
228
211
  proc{@c.load(:id => 2233).save}.should_not raise_error(Sequel::ValidationFailed)
229
212
  proc{@c.load(:id => 2233).save}.should raise_error(Sequel::BeforeHookFailed)
230
- MODEL_DB.sqls.should == []
213
+ DB.sqls.should == []
231
214
  end
232
215
 
233
216
  specify "#save should cancel the save and raise an error if before_validation returns false and raise_on_failure option is true" do
@@ -235,14 +218,14 @@ describe "Model#before_validation && Model#after_validation" do
235
218
  @c.raise_on_save_failure = false
236
219
  proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.should_not raise_error(Sequel::ValidationFailed)
237
220
  proc{@c.load(:id => 2233).save(:raise_on_failure => true)}.should raise_error(Sequel::BeforeHookFailed)
238
- MODEL_DB.sqls.should == []
221
+ DB.sqls.should == []
239
222
  end
240
223
 
241
224
  specify "#save should cancel the save and return nil if before_validation returns false and raise_on_save_failure is false" do
242
225
  @c.send(:define_method, :before_validation){false}
243
226
  @c.raise_on_save_failure = false
244
227
  @c.load(:id => 2233).save.should == nil
245
- MODEL_DB.sqls.should == []
228
+ DB.sqls.should == []
246
229
  end
247
230
 
248
231
  specify "#valid? should return false if before_validation returns false" do
@@ -256,82 +239,82 @@ describe "Model around filters" do
256
239
  @c = Class.new(Sequel::Model(:items)) do
257
240
  columns :id, :x
258
241
  end
259
- MODEL_DB.reset
242
+ DB.reset
260
243
  end
261
244
 
262
245
  specify "around_create should be called around new record creation" do
263
246
  @c.class_eval do
264
247
  def around_create
265
- MODEL_DB << 'ac_before'
248
+ DB << 'ac_before'
266
249
  super
267
- MODEL_DB << 'ac_after'
250
+ DB << 'ac_after'
268
251
  end
269
252
  end
270
253
  @c.create(:x => 2)
271
- MODEL_DB.sqls.should == ['ac_before', 'INSERT INTO items (x) VALUES (2)', 'ac_after', "SELECT * FROM items WHERE (id = 10) LIMIT 1"]
254
+ DB.sqls.should == ['ac_before', 'INSERT INTO items (x) VALUES (2)', 'ac_after', "SELECT * FROM items WHERE (id = 10) LIMIT 1"]
272
255
  end
273
256
 
274
257
  specify "around_delete should be called around record destruction" do
275
258
  @c.class_eval do
276
259
  def around_destroy
277
- MODEL_DB << 'ad_before'
260
+ DB << 'ad_before'
278
261
  super
279
- MODEL_DB << 'ad_after'
262
+ DB << 'ad_after'
280
263
  end
281
264
  end
282
265
  @c.load(:id=>1, :x => 2).destroy
283
- MODEL_DB.sqls.should == ['ad_before', 'DELETE FROM items WHERE id = 1', 'ad_after']
266
+ DB.sqls.should == ['ad_before', 'DELETE FROM items WHERE id = 1', 'ad_after']
284
267
  end
285
268
 
286
269
  specify "around_update should be called around updating existing records" do
287
270
  @c.class_eval do
288
271
  def around_update
289
- MODEL_DB << 'au_before'
272
+ DB << 'au_before'
290
273
  super
291
- MODEL_DB << 'au_after'
274
+ DB << 'au_after'
292
275
  end
293
276
  end
294
277
  @c.load(:id=>1, :x => 2).save
295
- MODEL_DB.sqls.should == ['au_before', 'UPDATE items SET x = 2 WHERE (id = 1)', 'au_after']
278
+ DB.sqls.should == ['au_before', 'UPDATE items SET x = 2 WHERE (id = 1)', 'au_after']
296
279
  end
297
280
 
298
281
  specify "around_save should be called around saving both new and existing records, around either after_create and after_update" do
299
282
  @c.class_eval do
300
283
  def around_update
301
- MODEL_DB << 'au_before'
284
+ DB << 'au_before'
302
285
  super
303
- MODEL_DB << 'au_after'
286
+ DB << 'au_after'
304
287
  end
305
288
  def around_create
306
- MODEL_DB << 'ac_before'
289
+ DB << 'ac_before'
307
290
  super
308
- MODEL_DB << 'ac_after'
291
+ DB << 'ac_after'
309
292
  end
310
293
  def around_save
311
- MODEL_DB << 'as_before'
294
+ DB << 'as_before'
312
295
  super
313
- MODEL_DB << 'as_after'
296
+ DB << 'as_after'
314
297
  end
315
298
  end
316
299
  @c.create(:x => 2)
317
- MODEL_DB.sqls.should == ['as_before', 'ac_before', 'INSERT INTO items (x) VALUES (2)', 'ac_after', 'as_after', "SELECT * FROM items WHERE (id = 10) LIMIT 1"]
300
+ DB.sqls.should == ['as_before', 'ac_before', 'INSERT INTO items (x) VALUES (2)', 'ac_after', 'as_after', "SELECT * FROM items WHERE (id = 10) LIMIT 1"]
318
301
  @c.load(:id=>1, :x => 2).save
319
- MODEL_DB.sqls.should == ['as_before', 'au_before', 'UPDATE items SET x = 2 WHERE (id = 1)', 'au_after', 'as_after']
302
+ DB.sqls.should == ['as_before', 'au_before', 'UPDATE items SET x = 2 WHERE (id = 1)', 'au_after', 'as_after']
320
303
  end
321
304
 
322
305
  specify "around_validation should be called around validating records" do
323
306
  @c.class_eval do
324
307
  def around_validation
325
- MODEL_DB << 'av_before'
308
+ DB << 'av_before'
326
309
  super
327
- MODEL_DB << 'av_after'
310
+ DB << 'av_after'
328
311
  end
329
312
  def validate
330
- MODEL_DB << 'validate'
313
+ DB << 'validate'
331
314
  end
332
315
  end
333
316
  @c.new(:x => 2).valid?.should == true
334
- MODEL_DB.sqls.should == [ 'av_before', 'validate', 'av_after' ]
317
+ DB.sqls.should == [ 'av_before', 'validate', 'av_after' ]
335
318
  end
336
319
 
337
320
  specify "around_validation should be able to catch validation errors and modify them" do
@@ -150,12 +150,12 @@ describe Sequel::Model do
150
150
  end
151
151
 
152
152
  it "should be associated with a dataset" do
153
- model_a = Class.new(Sequel::Model) { set_dataset MODEL_DB[:as] }
153
+ model_a = Class.new(Sequel::Model) { set_dataset DB[:as] }
154
154
 
155
155
  model_a.dataset.should be_a_kind_of(Sequel::Mock::Dataset)
156
156
  model_a.dataset.opts[:from].should == [:as]
157
157
 
158
- model_b = Class.new(Sequel::Model) { set_dataset MODEL_DB[:bs] }
158
+ model_b = Class.new(Sequel::Model) { set_dataset DB[:bs] }
159
159
 
160
160
  model_b.dataset.should be_a_kind_of(Sequel::Mock::Dataset)
161
161
  model_b.dataset.opts[:from].should == [:bs]
@@ -183,36 +183,36 @@ describe Sequel::Model do
183
183
  end
184
184
 
185
185
  it "allows dataset change" do
186
- @model.set_dataset(MODEL_DB[:foo])
186
+ @model.set_dataset(DB[:foo])
187
187
  @model.table_name.should == :foo
188
188
  end
189
189
 
190
190
  it "allows set_dataset to accept a Symbol" do
191
- @model.db = MODEL_DB
191
+ @model.db = DB
192
192
  @model.set_dataset(:foo)
193
193
  @model.table_name.should == :foo
194
194
  end
195
195
 
196
196
  it "allows set_dataset to accept a LiteralString" do
197
- @model.db = MODEL_DB
197
+ @model.db = DB
198
198
  @model.set_dataset(Sequel.lit('foo'))
199
199
  @model.table_name.should == Sequel.lit('foo')
200
200
  end
201
201
 
202
202
  it "allows set_dataset to acceptan SQL::Identifier" do
203
- @model.db = MODEL_DB
203
+ @model.db = DB
204
204
  @model.set_dataset(Sequel.identifier(:foo))
205
205
  @model.table_name.should == Sequel.identifier(:foo)
206
206
  end
207
207
 
208
208
  it "allows set_dataset to acceptan SQL::QualifiedIdentifier" do
209
- @model.db = MODEL_DB
209
+ @model.db = DB
210
210
  @model.set_dataset(Sequel.qualify(:bar, :foo))
211
211
  @model.table_name.should == Sequel.qualify(:bar, :foo)
212
212
  end
213
213
 
214
214
  it "allows set_dataset to acceptan SQL::AliasedExpression" do
215
- @model.db = MODEL_DB
215
+ @model.db = DB
216
216
  @model.set_dataset(Sequel.as(:foo, :bar))
217
217
  @model.table_name.should == :bar
218
218
  end
@@ -227,14 +227,14 @@ describe Sequel::Model do
227
227
  end
228
228
 
229
229
  it "set_dataset should add the destroy method to the dataset that destroys each object" do
230
- ds = MODEL_DB[:foo]
230
+ ds = DB[:foo]
231
231
  ds.should_not respond_to(:destroy)
232
232
  @model.set_dataset(ds)
233
233
  ds.should respond_to(:destroy)
234
- MODEL_DB.sqls
234
+ DB.sqls
235
235
  ds._fetch = [{:id=>1}, {:id=>2}]
236
236
  ds.destroy.should == 2
237
- MODEL_DB.sqls.should == ["SELECT * FROM foo", "DELETE FROM foo WHERE id = 1", "DELETE FROM foo WHERE id = 2"]
237
+ DB.sqls.should == ["SELECT * FROM foo", "DELETE FROM foo WHERE id = 1", "DELETE FROM foo WHERE id = 2"]
238
238
  end
239
239
 
240
240
  it "set_dataset should add the destroy method that respects sharding with transactions" do
@@ -254,12 +254,12 @@ describe Sequel::Model do
254
254
 
255
255
  it "should not raise an error if there is a problem getting the columns for a dataset" do
256
256
  def @model.columns() raise Sequel::Error end
257
- proc{@model.set_dataset(MODEL_DB[:foo].join(:blah))}.should_not raise_error
257
+ proc{@model.set_dataset(DB[:foo].join(:blah))}.should_not raise_error
258
258
  end
259
259
 
260
260
  it "doesn't raise an error on set_dataset if there is an error raised getting the schema" do
261
261
  def @model.get_db_schema(*) raise Sequel::Error end
262
- proc{@model.set_dataset(MODEL_DB[:foo])}.should_not raise_error
262
+ proc{@model.set_dataset(DB[:foo])}.should_not raise_error
263
263
  end
264
264
 
265
265
  it "doesn't raise an error on inherited if there is an error setting the dataset" do
@@ -328,19 +328,12 @@ describe Sequel::Model, "constructors" do
328
328
  o.values.should == {:a=>1}
329
329
  o.new?.should be_false
330
330
  end
331
-
332
- qspecify "should have .new with a second true argument create an existing object" do
333
- o = @m.new({:a=>1}, true)
334
- o.should be_a_kind_of(@m)
335
- o.values.should == {:a=>1}
336
- o.new?.should be_false
337
- end
338
331
  end
339
332
 
340
333
  describe Sequel::Model, "new" do
341
334
  before do
342
335
  @m = Class.new(Sequel::Model) do
343
- set_dataset MODEL_DB[:items]
336
+ set_dataset DB[:items]
344
337
  columns :x, :id
345
338
  end
346
339
  end
@@ -374,7 +367,7 @@ end
374
367
  describe Sequel::Model, ".subset" do
375
368
  before do
376
369
  @c = Class.new(Sequel::Model(:items))
377
- MODEL_DB.reset
370
+ DB.reset
378
371
  end
379
372
 
380
373
  specify "should create a filter on the underlying dataset" do
@@ -405,29 +398,29 @@ describe Sequel::Model, ".find" do
405
398
  before do
406
399
  @c = Class.new(Sequel::Model(:items))
407
400
  @c.dataset._fetch = {:name => 'sharon', :id => 1}
408
- MODEL_DB.reset
401
+ DB.reset
409
402
  end
410
403
 
411
404
  it "should return the first record matching the given filter" do
412
405
  @c.find(:name => 'sharon').should be_a_kind_of(@c)
413
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE (name = 'sharon') LIMIT 1"]
406
+ DB.sqls.should == ["SELECT * FROM items WHERE (name = 'sharon') LIMIT 1"]
414
407
 
415
408
  @c.find(Sequel.expr(:name).like('abc%')).should be_a_kind_of(@c)
416
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE (name LIKE 'abc%' ESCAPE '\\') LIMIT 1"]
409
+ DB.sqls.should == ["SELECT * FROM items WHERE (name LIKE 'abc%' ESCAPE '\\') LIMIT 1"]
417
410
  end
418
411
 
419
412
  specify "should accept filter blocks" do
420
413
  @c.find{id > 1}.should be_a_kind_of(@c)
421
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE (id > 1) LIMIT 1"]
414
+ DB.sqls.should == ["SELECT * FROM items WHERE (id > 1) LIMIT 1"]
422
415
 
423
416
  @c.find{(x > 1) & (y < 2)}.should be_a_kind_of(@c)
424
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE ((x > 1) AND (y < 2)) LIMIT 1"]
417
+ DB.sqls.should == ["SELECT * FROM items WHERE ((x > 1) AND (y < 2)) LIMIT 1"]
425
418
  end
426
419
  end
427
420
 
428
421
  describe Sequel::Model, ".fetch" do
429
422
  before do
430
- MODEL_DB.reset
423
+ DB.reset
431
424
  @c = Class.new(Sequel::Model(:items))
432
425
  end
433
426
 
@@ -448,19 +441,19 @@ describe Sequel::Model, ".find_or_create" do
448
441
  set_primary_key :id
449
442
  columns :x
450
443
  end
451
- MODEL_DB.reset
444
+ DB.reset
452
445
  end
453
446
 
454
447
  it "should find the record" do
455
448
  @c.find_or_create(:x => 1).should == @c.load(:x=>1, :id=>1)
456
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE (x = 1) LIMIT 1"]
449
+ DB.sqls.should == ["SELECT * FROM items WHERE (x = 1) LIMIT 1"]
457
450
  end
458
451
 
459
452
  it "should create the record if not found" do
460
453
  @c.instance_dataset._fetch = @c.dataset._fetch = [[], {:x=>1, :id=>1}]
461
454
  @c.instance_dataset.autoid = @c.dataset.autoid = 1
462
455
  @c.find_or_create(:x => 1).should == @c.load(:x=>1, :id=>1)
463
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE (x = 1) LIMIT 1",
456
+ DB.sqls.should == ["SELECT * FROM items WHERE (x = 1) LIMIT 1",
464
457
  "INSERT INTO items (x) VALUES (1)",
465
458
  "SELECT * FROM items WHERE (id = 1) LIMIT 1"]
466
459
  end
@@ -469,7 +462,7 @@ describe Sequel::Model, ".find_or_create" do
469
462
  @c.instance_dataset._fetch = @c.dataset._fetch = [[], {:x=>1, :id=>1}]
470
463
  @c.instance_dataset.autoid = @c.dataset.autoid = 1
471
464
  @c.find_or_create(:x => 1){|x| x[:y] = 2}.should == @c.load(:x=>1, :id=>1)
472
- sqls = MODEL_DB.sqls
465
+ sqls = DB.sqls
473
466
  sqls.first.should == "SELECT * FROM items WHERE (x = 1) LIMIT 1"
474
467
  ["INSERT INTO items (x, y) VALUES (1, 2)", "INSERT INTO items (y, x) VALUES (2, 1)"].should include(sqls[1])
475
468
  sqls.last.should == "SELECT * FROM items WHERE (id = 1) LIMIT 1"
@@ -489,7 +482,7 @@ describe Sequel::Model, "A model class without a primary key" do
489
482
  columns :x
490
483
  no_primary_key
491
484
  end
492
- MODEL_DB.reset
485
+ DB.reset
493
486
  end
494
487
 
495
488
  it "should be able to insert records without selecting them back" do
@@ -498,7 +491,7 @@ describe Sequel::Model, "A model class without a primary key" do
498
491
  i.class.should be(@c)
499
492
  i.values.to_hash.should == {:x => 1}
500
493
 
501
- MODEL_DB.sqls.should == ['INSERT INTO items (x) VALUES (1)']
494
+ DB.sqls.should == ['INSERT INTO items (x) VALUES (1)']
502
495
  end
503
496
 
504
497
  it "should raise when deleting" do
@@ -513,7 +506,7 @@ describe Sequel::Model, "A model class without a primary key" do
513
506
  o = @c.new(:x => 2)
514
507
  o.should be_new
515
508
  o.save
516
- MODEL_DB.sqls.should == ['INSERT INTO items (x) VALUES (2)']
509
+ DB.sqls.should == ['INSERT INTO items (x) VALUES (2)']
517
510
  end
518
511
  end
519
512
 
@@ -526,7 +519,7 @@ describe Sequel::Model, "attribute accessors" do
526
519
  end
527
520
  @dataset = db[:items].columns(:x, :z)
528
521
  @c = Class.new(Sequel::Model)
529
- MODEL_DB.reset
522
+ DB.reset
530
523
  end
531
524
 
532
525
  it "should be created on set_dataset" do
@@ -581,46 +574,38 @@ describe Sequel::Model, ".[]" do
581
574
  before do
582
575
  @c = Class.new(Sequel::Model(:items))
583
576
  @c.dataset._fetch = {:name => 'sharon', :id => 1}
584
- MODEL_DB.reset
577
+ DB.reset
585
578
  end
586
579
 
587
580
  it "should return the first record for the given pk" do
588
581
  @c[1].should == @c.load(:name => 'sharon', :id => 1)
589
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE id = 1"]
582
+ DB.sqls.should == ["SELECT * FROM items WHERE id = 1"]
590
583
  @c[9999].should == @c.load(:name => 'sharon', :id => 1)
591
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE id = 9999"]
584
+ DB.sqls.should == ["SELECT * FROM items WHERE id = 9999"]
592
585
  end
593
586
 
594
587
  it "should have #[] return nil if no rows match" do
595
588
  @c.dataset._fetch = []
596
589
  @c[1].should == nil
597
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE id = 1"]
590
+ DB.sqls.should == ["SELECT * FROM items WHERE id = 1"]
598
591
  end
599
592
 
600
593
  it "should work correctly for custom primary key" do
601
594
  @c.set_primary_key :name
602
595
  @c['sharon'].should == @c.load(:name => 'sharon', :id => 1)
603
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE name = 'sharon'"]
596
+ DB.sqls.should == ["SELECT * FROM items WHERE name = 'sharon'"]
604
597
  end
605
598
 
606
599
  it "should return the first record for the given pk for a filtered dataset" do
607
600
  @c.dataset = @c.dataset.filter(:active=>true)
608
601
  @c[1].should == @c.load(:name => 'sharon', :id => 1)
609
- MODEL_DB.sqls.should == ["SELECT * FROM items WHERE ((active IS TRUE) AND (id = 1)) LIMIT 1"]
602
+ DB.sqls.should == ["SELECT * FROM items WHERE ((active IS TRUE) AND (id = 1)) LIMIT 1"]
610
603
  end
611
604
 
612
605
  it "should work correctly for composite primary key specified as array" do
613
606
  @c.set_primary_key [:node_id, :kind]
614
607
  @c[3921, 201].should be_a_kind_of(@c)
615
- sqls = MODEL_DB.sqls
616
- sqls.length.should == 1
617
- sqls.first.should =~ /^SELECT \* FROM items WHERE \((\(node_id = 3921\) AND \(kind = 201\))|(\(kind = 201\) AND \(node_id = 3921\))\) LIMIT 1$/
618
- end
619
-
620
- qspecify "should work correctly for composite primary key specified as separate arguments" do
621
- @c.set_primary_key :node_id, :kind
622
- @c[3921, 201].should be_a_kind_of(@c)
623
- sqls = MODEL_DB.sqls
608
+ sqls = DB.sqls
624
609
  sqls.length.should == 1
625
610
  sqls.first.should =~ /^SELECT \* FROM items WHERE \((\(node_id = 3921\) AND \(kind = 201\))|(\(kind = 201\) AND \(node_id = 3921\))\) LIMIT 1$/
626
611
  end