sequel 4.22.0 → 4.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (214) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +22 -0
  3. data/README.rdoc +6 -0
  4. data/Rakefile +59 -81
  5. data/doc/migration.rdoc +2 -0
  6. data/doc/release_notes/4.23.0.txt +65 -0
  7. data/doc/sharding.rdoc +16 -14
  8. data/doc/testing.rdoc +61 -77
  9. data/lib/sequel/adapters/jdbc.rb +1 -0
  10. data/lib/sequel/adapters/mock.rb +0 -1
  11. data/lib/sequel/adapters/postgres.rb +1 -0
  12. data/lib/sequel/adapters/postgresql.rb +1 -0
  13. data/lib/sequel/adapters/shared/postgres.rb +3 -3
  14. data/lib/sequel/connection_pool/sharded_threaded.rb +5 -0
  15. data/lib/sequel/connection_pool/threaded.rb +9 -1
  16. data/lib/sequel/database/connecting.rb +1 -1
  17. data/lib/sequel/database/transactions.rb +2 -1
  18. data/lib/sequel/dataset/prepared_statements.rb +1 -1
  19. data/lib/sequel/extensions/constraint_validations.rb +12 -12
  20. data/lib/sequel/extensions/date_arithmetic.rb +0 -4
  21. data/lib/sequel/extensions/pagination.rb +14 -2
  22. data/lib/sequel/extensions/pg_enum.rb +2 -2
  23. data/lib/sequel/extensions/pg_hstore.rb +1 -1
  24. data/lib/sequel/extensions/pg_json_ops.rb +2 -2
  25. data/lib/sequel/plugins/csv_serializer.rb +2 -0
  26. data/lib/sequel/plugins/delay_add_association.rb +50 -0
  27. data/lib/sequel/plugins/list.rb +2 -2
  28. data/lib/sequel/plugins/nested_attributes.rb +8 -28
  29. data/lib/sequel/plugins/update_refresh.rb +50 -0
  30. data/lib/sequel/plugins/validate_associated.rb +55 -0
  31. data/lib/sequel/version.rb +1 -1
  32. data/spec/adapters/db2_spec.rb +29 -29
  33. data/spec/adapters/firebird_spec.rb +97 -103
  34. data/spec/adapters/informix_spec.rb +25 -25
  35. data/spec/adapters/mssql_spec.rb +156 -172
  36. data/spec/adapters/mysql_spec.rb +334 -359
  37. data/spec/adapters/oracle_spec.rb +67 -69
  38. data/spec/adapters/postgres_spec.rb +1298 -1249
  39. data/spec/adapters/spec_helper.rb +2 -35
  40. data/spec/adapters/sqlanywhere_spec.rb +39 -39
  41. data/spec/adapters/sqlite_spec.rb +203 -200
  42. data/spec/bin_spec.rb +57 -59
  43. data/spec/core/connection_pool_spec.rb +402 -401
  44. data/spec/core/database_spec.rb +953 -944
  45. data/spec/core/dataset_spec.rb +2178 -2168
  46. data/spec/core/deprecated_spec.rb +19 -19
  47. data/spec/core/expression_filters_spec.rb +415 -415
  48. data/spec/core/mock_adapter_spec.rb +212 -212
  49. data/spec/core/object_graph_spec.rb +73 -73
  50. data/spec/core/placeholder_literalizer_spec.rb +71 -71
  51. data/spec/core/schema_generator_spec.rb +44 -44
  52. data/spec/core/schema_spec.rb +470 -472
  53. data/spec/core/spec_helper.rb +5 -20
  54. data/spec/core/version_spec.rb +2 -2
  55. data/spec/core_extensions_spec.rb +320 -320
  56. data/spec/extensions/accessed_columns_spec.rb +12 -12
  57. data/spec/extensions/active_model_spec.rb +3 -3
  58. data/spec/extensions/after_initialize_spec.rb +2 -2
  59. data/spec/extensions/arbitrary_servers_spec.rb +23 -23
  60. data/spec/extensions/association_dependencies_spec.rb +34 -34
  61. data/spec/extensions/association_pks_spec.rb +98 -98
  62. data/spec/extensions/association_proxies_spec.rb +33 -33
  63. data/spec/extensions/auto_validations_spec.rb +46 -46
  64. data/spec/extensions/blacklist_security_spec.rb +19 -18
  65. data/spec/extensions/blank_spec.rb +36 -36
  66. data/spec/extensions/boolean_readers_spec.rb +36 -36
  67. data/spec/extensions/caching_spec.rb +82 -82
  68. data/spec/extensions/class_table_inheritance_spec.rb +72 -72
  69. data/spec/extensions/column_conflicts_spec.rb +19 -14
  70. data/spec/extensions/column_select_spec.rb +19 -19
  71. data/spec/extensions/columns_introspection_spec.rb +43 -43
  72. data/spec/extensions/composition_spec.rb +64 -64
  73. data/spec/extensions/connection_validator_spec.rb +92 -90
  74. data/spec/extensions/constraint_validations_plugin_spec.rb +92 -92
  75. data/spec/extensions/constraint_validations_spec.rb +80 -80
  76. data/spec/extensions/core_refinements_spec.rb +220 -220
  77. data/spec/extensions/csv_serializer_spec.rb +44 -44
  78. data/spec/extensions/current_datetime_timestamp_spec.rb +8 -8
  79. data/spec/extensions/dataset_associations_spec.rb +65 -65
  80. data/spec/extensions/dataset_source_alias_spec.rb +16 -16
  81. data/spec/extensions/date_arithmetic_spec.rb +51 -58
  82. data/spec/extensions/defaults_setter_spec.rb +19 -19
  83. data/spec/extensions/delay_add_association_spec.rb +52 -0
  84. data/spec/extensions/dirty_spec.rb +51 -51
  85. data/spec/extensions/eager_each_spec.rb +8 -8
  86. data/spec/extensions/empty_array_ignore_nulls_spec.rb +10 -10
  87. data/spec/extensions/error_splitter_spec.rb +2 -2
  88. data/spec/extensions/error_sql_spec.rb +4 -4
  89. data/spec/extensions/eval_inspect_spec.rb +3 -3
  90. data/spec/extensions/filter_having_spec.rb +8 -8
  91. data/spec/extensions/force_encoding_spec.rb +30 -30
  92. data/spec/extensions/from_block_spec.rb +7 -7
  93. data/spec/extensions/graph_each_spec.rb +19 -19
  94. data/spec/extensions/hash_aliases_spec.rb +5 -5
  95. data/spec/extensions/hook_class_methods_spec.rb +100 -100
  96. data/spec/extensions/inflector_spec.rb +54 -54
  97. data/spec/extensions/input_transformer_spec.rb +10 -10
  98. data/spec/extensions/insert_returning_select_spec.rb +8 -8
  99. data/spec/extensions/instance_filters_spec.rb +26 -26
  100. data/spec/extensions/instance_hooks_spec.rb +85 -85
  101. data/spec/extensions/json_serializer_spec.rb +68 -68
  102. data/spec/extensions/lazy_attributes_spec.rb +49 -49
  103. data/spec/extensions/list_spec.rb +77 -75
  104. data/spec/extensions/looser_typecasting_spec.rb +16 -16
  105. data/spec/extensions/many_through_many_spec.rb +627 -627
  106. data/spec/extensions/meta_def_spec.rb +7 -7
  107. data/spec/extensions/migration_spec.rb +217 -217
  108. data/spec/extensions/modification_detection_spec.rb +20 -20
  109. data/spec/extensions/mssql_optimistic_locking_spec.rb +21 -21
  110. data/spec/extensions/named_timezones_spec.rb +18 -18
  111. data/spec/extensions/nested_attributes_spec.rb +107 -107
  112. data/spec/extensions/null_dataset_spec.rb +24 -24
  113. data/spec/extensions/optimistic_locking_spec.rb +21 -21
  114. data/spec/extensions/pagination_spec.rb +52 -52
  115. data/spec/extensions/pg_array_associations_spec.rb +273 -273
  116. data/spec/extensions/pg_array_ops_spec.rb +52 -52
  117. data/spec/extensions/pg_array_spec.rb +152 -152
  118. data/spec/extensions/pg_enum_spec.rb +13 -13
  119. data/spec/extensions/pg_hstore_ops_spec.rb +63 -63
  120. data/spec/extensions/pg_hstore_spec.rb +84 -84
  121. data/spec/extensions/pg_inet_spec.rb +15 -15
  122. data/spec/extensions/pg_interval_spec.rb +29 -29
  123. data/spec/extensions/pg_json_ops_spec.rb +86 -84
  124. data/spec/extensions/pg_json_spec.rb +104 -104
  125. data/spec/extensions/pg_loose_count_spec.rb +6 -6
  126. data/spec/extensions/pg_range_ops_spec.rb +24 -24
  127. data/spec/extensions/pg_range_spec.rb +143 -143
  128. data/spec/extensions/pg_row_ops_spec.rb +14 -14
  129. data/spec/extensions/pg_row_plugin_spec.rb +12 -12
  130. data/spec/extensions/pg_row_spec.rb +118 -118
  131. data/spec/extensions/pg_static_cache_updater_spec.rb +28 -28
  132. data/spec/extensions/pg_typecast_on_load_spec.rb +21 -21
  133. data/spec/extensions/prepared_statements_associations_spec.rb +42 -42
  134. data/spec/extensions/prepared_statements_safe_spec.rb +18 -18
  135. data/spec/extensions/prepared_statements_spec.rb +28 -28
  136. data/spec/extensions/prepared_statements_with_pk_spec.rb +11 -11
  137. data/spec/extensions/pretty_table_spec.rb +16 -16
  138. data/spec/extensions/query_literals_spec.rb +37 -37
  139. data/spec/extensions/query_spec.rb +32 -32
  140. data/spec/extensions/rcte_tree_spec.rb +141 -141
  141. data/spec/extensions/round_timestamps_spec.rb +21 -21
  142. data/spec/extensions/schema_caching_spec.rb +8 -8
  143. data/spec/extensions/schema_dumper_spec.rb +78 -78
  144. data/spec/extensions/schema_spec.rb +31 -27
  145. data/spec/extensions/scissors_spec.rb +3 -3
  146. data/spec/extensions/select_remove_spec.rb +14 -14
  147. data/spec/extensions/sequel_3_dataset_methods_spec.rb +28 -28
  148. data/spec/extensions/serialization_modification_detection_spec.rb +33 -33
  149. data/spec/extensions/serialization_spec.rb +79 -78
  150. data/spec/extensions/server_block_spec.rb +17 -17
  151. data/spec/extensions/set_overrides_spec.rb +30 -30
  152. data/spec/extensions/sharding_spec.rb +65 -65
  153. data/spec/extensions/shared_caching_spec.rb +29 -29
  154. data/spec/extensions/single_table_inheritance_spec.rb +79 -79
  155. data/spec/extensions/skip_create_refresh_spec.rb +3 -3
  156. data/spec/extensions/spec_helper.rb +4 -29
  157. data/spec/extensions/split_array_nil_spec.rb +9 -9
  158. data/spec/extensions/split_values_spec.rb +7 -7
  159. data/spec/extensions/sql_expr_spec.rb +32 -32
  160. data/spec/extensions/static_cache_spec.rb +123 -123
  161. data/spec/extensions/string_date_time_spec.rb +34 -34
  162. data/spec/extensions/string_stripper_spec.rb +15 -15
  163. data/spec/extensions/subclasses_spec.rb +31 -31
  164. data/spec/extensions/table_select_spec.rb +15 -15
  165. data/spec/extensions/tactical_eager_loading_spec.rb +23 -23
  166. data/spec/extensions/thread_local_timezones_spec.rb +13 -13
  167. data/spec/extensions/timestamps_spec.rb +40 -40
  168. data/spec/extensions/to_dot_spec.rb +34 -34
  169. data/spec/extensions/touch_spec.rb +52 -52
  170. data/spec/extensions/tree_spec.rb +72 -72
  171. data/spec/extensions/typecast_on_load_spec.rb +25 -25
  172. data/spec/extensions/unlimited_update_spec.rb +2 -2
  173. data/spec/extensions/update_or_create_spec.rb +36 -36
  174. data/spec/extensions/update_primary_key_spec.rb +35 -35
  175. data/spec/extensions/update_refresh_spec.rb +41 -0
  176. data/spec/extensions/validate_associated_spec.rb +52 -0
  177. data/spec/extensions/validation_class_methods_spec.rb +314 -317
  178. data/spec/extensions/validation_helpers_spec.rb +195 -195
  179. data/spec/extensions/xml_serializer_spec.rb +48 -48
  180. data/spec/guards_helper.rb +55 -0
  181. data/spec/integration/associations_test.rb +1089 -1088
  182. data/spec/integration/database_test.rb +29 -29
  183. data/spec/integration/dataset_test.rb +661 -661
  184. data/spec/integration/eager_loader_test.rb +147 -147
  185. data/spec/integration/migrator_test.rb +122 -122
  186. data/spec/integration/model_test.rb +70 -70
  187. data/spec/integration/plugin_test.rb +682 -640
  188. data/spec/integration/prepared_statement_test.rb +172 -172
  189. data/spec/integration/schema_test.rb +245 -245
  190. data/spec/integration/spec_helper.rb +1 -64
  191. data/spec/integration/timezone_test.rb +17 -17
  192. data/spec/integration/transaction_test.rb +87 -87
  193. data/spec/integration/type_test.rb +33 -33
  194. data/spec/model/association_reflection_spec.rb +130 -121
  195. data/spec/model/associations_spec.rb +1112 -1113
  196. data/spec/model/base_spec.rb +197 -196
  197. data/spec/model/class_dataset_methods_spec.rb +118 -118
  198. data/spec/model/dataset_methods_spec.rb +49 -49
  199. data/spec/model/eager_loading_spec.rb +705 -702
  200. data/spec/model/hooks_spec.rb +169 -168
  201. data/spec/model/inflector_spec.rb +5 -5
  202. data/spec/model/model_spec.rb +287 -297
  203. data/spec/model/plugins_spec.rb +47 -47
  204. data/spec/model/record_spec.rb +534 -535
  205. data/spec/model/spec_helper.rb +3 -21
  206. data/spec/model/validations_spec.rb +72 -70
  207. data/spec/spec_config.rb +8 -0
  208. metadata +41 -9
  209. data/lib/sequel/adapters/fdbsql.rb +0 -286
  210. data/lib/sequel/adapters/jdbc/fdbsql.rb +0 -66
  211. data/lib/sequel/adapters/openbase.rb +0 -54
  212. data/lib/sequel/adapters/shared/fdbsql.rb +0 -550
  213. data/spec/adapters/fdbsql_spec.rb +0 -429
  214. data/spec/rspec_helper.rb +0 -22
@@ -16,255 +16,255 @@ describe "Prepared Statements and Bound Arguments" do
16
16
  @db.drop_table?(:items)
17
17
  end
18
18
 
19
- specify "should support bound variables when selecting" do
20
- @ds.filter(:numb=>:$n).call(:each, :n=>10){|h| h.should == {:id=>1, :numb=>10}}
21
- @ds.filter(:numb=>:$n).call(:select, :n=>10).should == [{:id=>1, :numb=>10}]
22
- @ds.filter(:numb=>:$n).call(:all, :n=>10).should == [{:id=>1, :numb=>10}]
23
- @ds.filter(:numb=>:$n).call(:first, :n=>10).should == {:id=>1, :numb=>10}
24
- @ds.filter(:numb=>:$n).call([:map, :numb], :n=>10).should == [10]
25
- @ds.filter(:numb=>:$n).call([:to_hash, :id, :numb], :n=>10).should == {1=>10}
26
- @ds.filter(:numb=>:$n).call([:to_hash_groups, :id, :numb], :n=>10).should == {1=>[10]}
19
+ it "should support bound variables when selecting" do
20
+ @ds.filter(:numb=>:$n).call(:each, :n=>10){|h| h.must_equal(:id=>1, :numb=>10)}
21
+ @ds.filter(:numb=>:$n).call(:select, :n=>10).must_equal [{:id=>1, :numb=>10}]
22
+ @ds.filter(:numb=>:$n).call(:all, :n=>10).must_equal [{:id=>1, :numb=>10}]
23
+ @ds.filter(:numb=>:$n).call(:first, :n=>10).must_equal(:id=>1, :numb=>10)
24
+ @ds.filter(:numb=>:$n).call([:map, :numb], :n=>10).must_equal [10]
25
+ @ds.filter(:numb=>:$n).call([:to_hash, :id, :numb], :n=>10).must_equal(1=>10)
26
+ @ds.filter(:numb=>:$n).call([:to_hash_groups, :id, :numb], :n=>10).must_equal(1=>[10])
27
27
  end
28
28
 
29
- specify "should support blocks for each, select, all, and map when using bound variables" do
29
+ it "should support blocks for each, select, all, and map when using bound variables" do
30
30
  a = []
31
- @ds.filter(:numb=>:$n).call(:each, :n=>10){|r| r[:numb] *= 2; a << r}; a.should == [{:id=>1, :numb=>20}]
32
- @ds.filter(:numb=>:$n).call(:select, :n=>10){|r| r[:numb] *= 2}.should == [{:id=>1, :numb=>20}]
33
- @ds.filter(:numb=>:$n).call(:all, :n=>10){|r| r[:numb] *= 2}.should == [{:id=>1, :numb=>20}]
34
- @ds.filter(:numb=>:$n).call([:map], :n=>10){|r| r[:numb] * 2}.should == [20]
31
+ @ds.filter(:numb=>:$n).call(:each, :n=>10){|r| r[:numb] *= 2; a << r}; a.must_equal [{:id=>1, :numb=>20}]
32
+ @ds.filter(:numb=>:$n).call(:select, :n=>10){|r| r[:numb] *= 2}.must_equal [{:id=>1, :numb=>20}]
33
+ @ds.filter(:numb=>:$n).call(:all, :n=>10){|r| r[:numb] *= 2}.must_equal [{:id=>1, :numb=>20}]
34
+ @ds.filter(:numb=>:$n).call([:map], :n=>10){|r| r[:numb] * 2}.must_equal [20]
35
35
  end
36
36
 
37
- specify "should support binding variables before the call with #bind" do
38
- @ds.filter(:numb=>:$n).bind(:n=>10).call(:select).should == [{:id=>1, :numb=>10}]
39
- @ds.filter(:numb=>:$n).bind(:n=>10).call(:all).should == [{:id=>1, :numb=>10}]
40
- @ds.filter(:numb=>:$n).bind(:n=>10).call(:first).should == {:id=>1, :numb=>10}
37
+ it "should support binding variables before the call with #bind" do
38
+ @ds.filter(:numb=>:$n).bind(:n=>10).call(:select).must_equal [{:id=>1, :numb=>10}]
39
+ @ds.filter(:numb=>:$n).bind(:n=>10).call(:all).must_equal [{:id=>1, :numb=>10}]
40
+ @ds.filter(:numb=>:$n).bind(:n=>10).call(:first).must_equal(:id=>1, :numb=>10)
41
41
 
42
- @ds.bind(:n=>10).filter(:numb=>:$n).call(:select).should == [{:id=>1, :numb=>10}]
43
- @ds.bind(:n=>10).filter(:numb=>:$n).call(:all).should == [{:id=>1, :numb=>10}]
44
- @ds.bind(:n=>10).filter(:numb=>:$n).call(:first).should == {:id=>1, :numb=>10}
42
+ @ds.bind(:n=>10).filter(:numb=>:$n).call(:select).must_equal [{:id=>1, :numb=>10}]
43
+ @ds.bind(:n=>10).filter(:numb=>:$n).call(:all).must_equal [{:id=>1, :numb=>10}]
44
+ @ds.bind(:n=>10).filter(:numb=>:$n).call(:first).must_equal(:id=>1, :numb=>10)
45
45
  end
46
46
 
47
- specify "should allow overriding variables specified with #bind" do
48
- @ds.filter(:numb=>:$n).bind(:n=>1).call(:select, :n=>10).should == [{:id=>1, :numb=>10}]
49
- @ds.filter(:numb=>:$n).bind(:n=>1).call(:all, :n=>10).should == [{:id=>1, :numb=>10}]
50
- @ds.filter(:numb=>:$n).bind(:n=>1).call(:first, :n=>10).should == {:id=>1, :numb=>10}
47
+ it "should allow overriding variables specified with #bind" do
48
+ @ds.filter(:numb=>:$n).bind(:n=>1).call(:select, :n=>10).must_equal [{:id=>1, :numb=>10}]
49
+ @ds.filter(:numb=>:$n).bind(:n=>1).call(:all, :n=>10).must_equal [{:id=>1, :numb=>10}]
50
+ @ds.filter(:numb=>:$n).bind(:n=>1).call(:first, :n=>10).must_equal(:id=>1, :numb=>10)
51
51
 
52
- @ds.filter(:numb=>:$n).bind(:n=>1).bind(:n=>10).call(:select).should == [{:id=>1, :numb=>10}]
53
- @ds.filter(:numb=>:$n).bind(:n=>1).bind(:n=>10).call(:all).should == [{:id=>1, :numb=>10}]
54
- @ds.filter(:numb=>:$n).bind(:n=>1).bind(:n=>10).call(:first).should == {:id=>1, :numb=>10}
52
+ @ds.filter(:numb=>:$n).bind(:n=>1).bind(:n=>10).call(:select).must_equal [{:id=>1, :numb=>10}]
53
+ @ds.filter(:numb=>:$n).bind(:n=>1).bind(:n=>10).call(:all).must_equal [{:id=>1, :numb=>10}]
54
+ @ds.filter(:numb=>:$n).bind(:n=>1).bind(:n=>10).call(:first).must_equal(:id=>1, :numb=>10)
55
55
  end
56
56
 
57
- specify "should support placeholder literal strings with call" do
58
- @ds.filter("numb = ?", :$n).call(:select, :n=>10).should == [{:id=>1, :numb=>10}]
57
+ it "should support placeholder literal strings with call" do
58
+ @ds.filter("numb = ?", :$n).call(:select, :n=>10).must_equal [{:id=>1, :numb=>10}]
59
59
  end
60
60
 
61
- specify "should support named placeholder literal strings and handle multiple named placeholders correctly with call" do
62
- @ds.filter("numb = :n", :n=>:$n).call(:select, :n=>10).should == [{:id=>1, :numb=>10}]
61
+ it "should support named placeholder literal strings and handle multiple named placeholders correctly with call" do
62
+ @ds.filter("numb = :n", :n=>:$n).call(:select, :n=>10).must_equal [{:id=>1, :numb=>10}]
63
63
  @ds.insert(:numb=>20)
64
64
  @ds.insert(:numb=>30)
65
- @ds.filter("numb > :n1 AND numb < :n2 AND numb = :n3", :n3=>:$n3, :n2=>:$n2, :n1=>:$n1).call(:select, :n3=>20, :n2=>30, :n1=>10).should == [{:id=>2, :numb=>20}]
65
+ @ds.filter("numb > :n1 AND numb < :n2 AND numb = :n3", :n3=>:$n3, :n2=>:$n2, :n1=>:$n1).call(:select, :n3=>20, :n2=>30, :n1=>10).must_equal [{:id=>2, :numb=>20}]
66
66
  end
67
67
 
68
- specify "should support datasets with static sql and placeholders with call" do
69
- @db["SELECT * FROM items WHERE numb = ?", :$n].call(:select, :n=>10).should == [{:id=>1, :numb=>10}]
68
+ it "should support datasets with static sql and placeholders with call" do
69
+ @db["SELECT * FROM items WHERE numb = ?", :$n].call(:select, :n=>10).must_equal [{:id=>1, :numb=>10}]
70
70
  end
71
71
 
72
- specify "should support subselects with call" do
73
- @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n)).filter(:id=>:$j).call(:select, :n=>10, :i=>1, :j=>1).should == [{:id=>1, :numb=>10}]
72
+ it "should support subselects with call" do
73
+ @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n)).filter(:id=>:$j).call(:select, :n=>10, :i=>1, :j=>1).must_equal [{:id=>1, :numb=>10}]
74
74
  end
75
75
 
76
- specify "should support subselects with exists with call" do
77
- @ds.filter(:id=>:$i).filter(@ds.select(:numb).filter(:numb=>:$n).exists).filter(:id=>:$j).call(:select, :n=>10, :i=>1, :j=>1).should == [{:id=>1, :numb=>10}]
76
+ it "should support subselects with exists with call" do
77
+ @ds.filter(:id=>:$i).filter(@ds.select(:numb).filter(:numb=>:$n).exists).filter(:id=>:$j).call(:select, :n=>10, :i=>1, :j=>1).must_equal [{:id=>1, :numb=>10}]
78
78
  end
79
79
 
80
- specify "should support subselects with literal strings with call" do
81
- @ds.filter(:id=>:$i, :numb=>@ds.select(:numb).filter("numb = ?", :$n)).call(:select, :n=>10, :i=>1).should == [{:id=>1, :numb=>10}]
80
+ it "should support subselects with literal strings with call" do
81
+ @ds.filter(:id=>:$i, :numb=>@ds.select(:numb).filter("numb = ?", :$n)).call(:select, :n=>10, :i=>1).must_equal [{:id=>1, :numb=>10}]
82
82
  end
83
83
 
84
- specify "should support subselects with static sql and placeholders with call" do
85
- @ds.filter(:id=>:$i, :numb=>@db["SELECT numb FROM items WHERE numb = ?", :$n]).call(:select, :n=>10, :i=>1).should == [{:id=>1, :numb=>10}]
84
+ it "should support subselects with static sql and placeholders with call" do
85
+ @ds.filter(:id=>:$i, :numb=>@db["SELECT numb FROM items WHERE numb = ?", :$n]).call(:select, :n=>10, :i=>1).must_equal [{:id=>1, :numb=>10}]
86
86
  end
87
87
 
88
- specify "should support subselects of subselects with call" do
89
- @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n))).filter(:id=>:$j).call(:select, :n=>10, :i=>1, :j=>1).should == [{:id=>1, :numb=>10}]
88
+ it "should support subselects of subselects with call" do
89
+ @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n))).filter(:id=>:$j).call(:select, :n=>10, :i=>1, :j=>1).must_equal [{:id=>1, :numb=>10}]
90
90
  end
91
91
 
92
92
  cspecify "should support using a bound variable for a limit and offset", [:jdbc, :db2] do
93
93
  @ds.insert(:numb=>20)
94
94
  ds = @ds.limit(:$n, :$n2).order(:id)
95
- ds.call(:select, :n=>1, :n2=>0).should == [{:id=>1, :numb=>10}]
96
- ds.call(:select, :n=>1, :n2=>1).should == [{:id=>2, :numb=>20}]
97
- ds.call(:select, :n=>1, :n2=>2).should == []
98
- ds.call(:select, :n=>2, :n2=>0).should == [{:id=>1, :numb=>10}, {:id=>2, :numb=>20}]
99
- ds.call(:select, :n=>2, :n2=>1).should == [{:id=>2, :numb=>20}]
95
+ ds.call(:select, :n=>1, :n2=>0).must_equal [{:id=>1, :numb=>10}]
96
+ ds.call(:select, :n=>1, :n2=>1).must_equal [{:id=>2, :numb=>20}]
97
+ ds.call(:select, :n=>1, :n2=>2).must_equal []
98
+ ds.call(:select, :n=>2, :n2=>0).must_equal [{:id=>1, :numb=>10}, {:id=>2, :numb=>20}]
99
+ ds.call(:select, :n=>2, :n2=>1).must_equal [{:id=>2, :numb=>20}]
100
100
  end
101
101
 
102
- specify "should support bound variables with insert" do
102
+ it "should support bound variables with insert" do
103
103
  @ds.call(:insert, {:n=>20}, :numb=>:$n)
104
- @ds.count.should == 2
105
- @ds.order(:id).map(:numb).should == [10, 20]
104
+ @ds.count.must_equal 2
105
+ @ds.order(:id).map(:numb).must_equal [10, 20]
106
106
  end
107
107
 
108
- specify "should support bound variables with NULL values" do
108
+ it "should support bound variables with NULL values" do
109
109
  @ds.delete
110
110
  @ds.call(:insert, {:n=>nil}, :numb=>@pr[:$n])
111
- @ds.count.should == 1
112
- @ds.map(:numb).should == [nil]
111
+ @ds.count.must_equal 1
112
+ @ds.map(:numb).must_equal [nil]
113
113
  end
114
114
 
115
- specify "should have insert return primary key value when using bound arguments" do
116
- @ds.call(:insert, {:n=>20}, :numb=>:$n).should == 2
117
- @ds.filter(:id=>2).first[:numb].should == 20
115
+ it "should have insert return primary key value when using bound arguments" do
116
+ @ds.call(:insert, {:n=>20}, :numb=>:$n).must_equal 2
117
+ @ds.filter(:id=>2).first[:numb].must_equal 20
118
118
  end
119
119
 
120
- specify "should support bound variables with insert_select" do
121
- @ds.call(:insert_select, {:n=>20}, :numb=>:$n).should == {:id=>2, :numb=>20}
122
- @ds.count.should == 2
123
- @ds.order(:id).map(:numb).should == [10, 20]
120
+ it "should support bound variables with insert_select" do
121
+ @ds.call(:insert_select, {:n=>20}, :numb=>:$n).must_equal(:id=>2, :numb=>20)
122
+ @ds.count.must_equal 2
123
+ @ds.order(:id).map(:numb).must_equal [10, 20]
124
124
  end if DB.dataset.supports_insert_select?
125
125
 
126
- specify "should support bound variables with delete" do
127
- @ds.filter(:numb=>:$n).call(:delete, :n=>10).should == 1
128
- @ds.count.should == 0
126
+ it "should support bound variables with delete" do
127
+ @ds.filter(:numb=>:$n).call(:delete, :n=>10).must_equal 1
128
+ @ds.count.must_equal 0
129
129
  end
130
130
 
131
- specify "should support bound variables with update" do
132
- @ds.filter(:numb=>:$n).call(:update, {:n=>10, :nn=>20}, :numb=>Sequel.+(:numb, :$nn)).should == 1
133
- @ds.all.should == [{:id=>1, :numb=>30}]
131
+ it "should support bound variables with update" do
132
+ @ds.filter(:numb=>:$n).call(:update, {:n=>10, :nn=>20}, :numb=>Sequel.+(:numb, :$nn)).must_equal 1
133
+ @ds.all.must_equal [{:id=>1, :numb=>30}]
134
134
  end
135
135
 
136
- specify "should support prepared statements when selecting" do
136
+ it "should support prepared statements when selecting" do
137
137
  @ds.filter(:numb=>:$n).prepare(:each, :select_n)
138
- @db.call(:select_n, :n=>10){|h| h.should == {:id=>1, :numb=>10}}
138
+ @db.call(:select_n, :n=>10){|h| h.must_equal(:id=>1, :numb=>10)}
139
139
  @ds.filter(:numb=>:$n).prepare(:select, :select_n)
140
- @db.call(:select_n, :n=>10).should == [{:id=>1, :numb=>10}]
140
+ @db.call(:select_n, :n=>10).must_equal [{:id=>1, :numb=>10}]
141
141
  @ds.filter(:numb=>:$n).prepare(:all, :select_n)
142
- @db.call(:select_n, :n=>10).should == [{:id=>1, :numb=>10}]
142
+ @db.call(:select_n, :n=>10).must_equal [{:id=>1, :numb=>10}]
143
143
  @ds.filter(:numb=>:$n).prepare(:first, :select_n)
144
- @db.call(:select_n, :n=>10).should == {:id=>1, :numb=>10}
144
+ @db.call(:select_n, :n=>10).must_equal(:id=>1, :numb=>10)
145
145
  @ds.filter(:numb=>:$n).prepare([:map, :numb], :select_n)
146
- @db.call(:select_n, :n=>10).should == [10]
146
+ @db.call(:select_n, :n=>10).must_equal [10]
147
147
  @ds.filter(:numb=>:$n).prepare([:to_hash, :id, :numb], :select_n)
148
- @db.call(:select_n, :n=>10).should == {1=>10}
148
+ @db.call(:select_n, :n=>10).must_equal(1=>10)
149
149
  end
150
150
 
151
- specify "should support blocks for each, select, all, and map when using prepared statements" do
151
+ it "should support blocks for each, select, all, and map when using prepared statements" do
152
152
  a = []
153
- @ds.filter(:numb=>:$n).prepare(:each, :select_n).call(:n=>10){|r| r[:numb] *= 2; a << r}; a.should == [{:id=>1, :numb=>20}]
153
+ @ds.filter(:numb=>:$n).prepare(:each, :select_n).call(:n=>10){|r| r[:numb] *= 2; a << r}; a.must_equal [{:id=>1, :numb=>20}]
154
154
  a = []
155
- @db.call(:select_n, :n=>10){|r| r[:numb] *= 2; a << r}; a.should == [{:id=>1, :numb=>20}]
156
- @ds.filter(:numb=>:$n).prepare(:select, :select_n).call(:n=>10){|r| r[:numb] *= 2}.should == [{:id=>1, :numb=>20}]
157
- @db.call(:select_n, :n=>10){|r| r[:numb] *= 2}.should == [{:id=>1, :numb=>20}]
158
- @ds.filter(:numb=>:$n).prepare(:all, :select_n).call(:n=>10){|r| r[:numb] *= 2}.should == [{:id=>1, :numb=>20}]
159
- @db.call(:select_n, :n=>10){|r| r[:numb] *= 2}.should == [{:id=>1, :numb=>20}]
160
- @ds.filter(:numb=>:$n).prepare([:map], :select_n).call(:n=>10){|r| r[:numb] *= 2}.should == [20]
161
- @db.call(:select_n, :n=>10){|r| r[:numb] *= 2}.should == [20]
155
+ @db.call(:select_n, :n=>10){|r| r[:numb] *= 2; a << r}; a.must_equal [{:id=>1, :numb=>20}]
156
+ @ds.filter(:numb=>:$n).prepare(:select, :select_n).call(:n=>10){|r| r[:numb] *= 2}.must_equal [{:id=>1, :numb=>20}]
157
+ @db.call(:select_n, :n=>10){|r| r[:numb] *= 2}.must_equal [{:id=>1, :numb=>20}]
158
+ @ds.filter(:numb=>:$n).prepare(:all, :select_n).call(:n=>10){|r| r[:numb] *= 2}.must_equal [{:id=>1, :numb=>20}]
159
+ @db.call(:select_n, :n=>10){|r| r[:numb] *= 2}.must_equal [{:id=>1, :numb=>20}]
160
+ @ds.filter(:numb=>:$n).prepare([:map], :select_n).call(:n=>10){|r| r[:numb] *= 2}.must_equal [20]
161
+ @db.call(:select_n, :n=>10){|r| r[:numb] *= 2}.must_equal [20]
162
162
  end
163
163
 
164
- cspecify "should support prepared statements being called multiple times with different arguments", [:jdbc, :fdbsql] do
164
+ it "should support prepared statements being called multiple times with different arguments" do
165
165
  @ds.filter(:numb=>:$n).prepare(:select, :select_n)
166
- @db.call(:select_n, :n=>10).should == [{:id=>1, :numb=>10}]
167
- @db.call(:select_n, :n=>0).should == []
168
- @db.call(:select_n, :n=>10).should == [{:id=>1, :numb=>10}]
166
+ @db.call(:select_n, :n=>10).must_equal [{:id=>1, :numb=>10}]
167
+ @db.call(:select_n, :n=>0).must_equal []
168
+ @db.call(:select_n, :n=>10).must_equal [{:id=>1, :numb=>10}]
169
169
  end
170
170
 
171
- specify "should support placeholder literal strings with prepare" do
172
- @ds.filter("numb = ?", :$n).prepare(:select, :seq_select).call(:n=>10).should == [{:id=>1, :numb=>10}]
171
+ it "should support placeholder literal strings with prepare" do
172
+ @ds.filter("numb = ?", :$n).prepare(:select, :seq_select).call(:n=>10).must_equal [{:id=>1, :numb=>10}]
173
173
  end
174
174
 
175
- specify "should support named placeholder literal strings and handle multiple named placeholders correctly with prepare" do
176
- @ds.filter("numb = :n", :n=>:$n).prepare(:select, :seq_select).call(:n=>10).should == [{:id=>1, :numb=>10}]
175
+ it "should support named placeholder literal strings and handle multiple named placeholders correctly with prepare" do
176
+ @ds.filter("numb = :n", :n=>:$n).prepare(:select, :seq_select).call(:n=>10).must_equal [{:id=>1, :numb=>10}]
177
177
  @ds.insert(:numb=>20)
178
178
  @ds.insert(:numb=>30)
179
- @ds.filter("numb > :n1 AND numb < :n2 AND numb = :n3", :n3=>:$n3, :n2=>:$n2, :n1=>:$n1).call(:select, :n3=>20, :n2=>30, :n1=>10).should == [{:id=>2, :numb=>20}]
179
+ @ds.filter("numb > :n1 AND numb < :n2 AND numb = :n3", :n3=>:$n3, :n2=>:$n2, :n1=>:$n1).call(:select, :n3=>20, :n2=>30, :n1=>10).must_equal [{:id=>2, :numb=>20}]
180
180
  end
181
181
 
182
- specify "should support datasets with static sql and placeholders with prepare" do
183
- @db["SELECT * FROM items WHERE numb = ?", :$n].prepare(:select, :seq_select).call(:n=>10).should == [{:id=>1, :numb=>10}]
182
+ it "should support datasets with static sql and placeholders with prepare" do
183
+ @db["SELECT * FROM items WHERE numb = ?", :$n].prepare(:select, :seq_select).call(:n=>10).must_equal [{:id=>1, :numb=>10}]
184
184
  end
185
185
 
186
- specify "should support subselects with prepare" do
187
- @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n)).filter(:id=>:$j).prepare(:select, :seq_select).call(:n=>10, :i=>1, :j=>1).should == [{:id=>1, :numb=>10}]
186
+ it "should support subselects with prepare" do
187
+ @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n)).filter(:id=>:$j).prepare(:select, :seq_select).call(:n=>10, :i=>1, :j=>1).must_equal [{:id=>1, :numb=>10}]
188
188
  end
189
189
 
190
- specify "should support subselects with exists with prepare" do
191
- @ds.filter(:id=>:$i).filter(@ds.select(:numb).filter(:numb=>:$n).exists).filter(:id=>:$j).prepare(:select, :seq_select).call(:n=>10, :i=>1, :j=>1).should == [{:id=>1, :numb=>10}]
190
+ it "should support subselects with exists with prepare" do
191
+ @ds.filter(:id=>:$i).filter(@ds.select(:numb).filter(:numb=>:$n).exists).filter(:id=>:$j).prepare(:select, :seq_select).call(:n=>10, :i=>1, :j=>1).must_equal [{:id=>1, :numb=>10}]
192
192
  end
193
193
 
194
- specify "should support subselects with literal strings with prepare" do
195
- @ds.filter(:id=>:$i, :numb=>@ds.select(:numb).filter("numb = ?", :$n)).prepare(:select, :seq_select).call(:n=>10, :i=>1).should == [{:id=>1, :numb=>10}]
194
+ it "should support subselects with literal strings with prepare" do
195
+ @ds.filter(:id=>:$i, :numb=>@ds.select(:numb).filter("numb = ?", :$n)).prepare(:select, :seq_select).call(:n=>10, :i=>1).must_equal [{:id=>1, :numb=>10}]
196
196
  end
197
197
 
198
- specify "should support subselects with static sql and placeholders with prepare" do
199
- @ds.filter(:id=>:$i, :numb=>@db["SELECT numb FROM items WHERE numb = ?", :$n]).prepare(:select, :seq_select).call(:n=>10, :i=>1).should == [{:id=>1, :numb=>10}]
198
+ it "should support subselects with static sql and placeholders with prepare" do
199
+ @ds.filter(:id=>:$i, :numb=>@db["SELECT numb FROM items WHERE numb = ?", :$n]).prepare(:select, :seq_select).call(:n=>10, :i=>1).must_equal [{:id=>1, :numb=>10}]
200
200
  end
201
201
 
202
- specify "should support subselects of subselects with prepare" do
203
- @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n))).filter(:id=>:$j).prepare(:select, :seq_select).call(:n=>10, :i=>1, :j=>1).should == [{:id=>1, :numb=>10}]
202
+ it "should support subselects of subselects with prepare" do
203
+ @ds.filter(:id=>:$i).filter(:numb=>@ds.select(:numb).filter(:numb=>@ds.select(:numb).filter(:numb=>:$n))).filter(:id=>:$j).prepare(:select, :seq_select).call(:n=>10, :i=>1, :j=>1).must_equal [{:id=>1, :numb=>10}]
204
204
  end
205
205
 
206
206
  cspecify "should support using a prepared_statement for a limit and offset", :db2 do
207
207
  @ds.insert(:numb=>20)
208
208
  ps = @ds.limit(:$n, :$n2).order(:id).prepare(:select, :seq_select)
209
- ps.call(:n=>1, :n2=>0).should == [{:id=>1, :numb=>10}]
210
- ps.call(:n=>1, :n2=>1).should == [{:id=>2, :numb=>20}]
211
- ps.call(:n=>1, :n2=>2).should == []
212
- ps.call(:n=>2, :n2=>0).should == [{:id=>1, :numb=>10}, {:id=>2, :numb=>20}]
213
- ps.call(:n=>2, :n2=>1).should == [{:id=>2, :numb=>20}]
209
+ ps.call(:n=>1, :n2=>0).must_equal [{:id=>1, :numb=>10}]
210
+ ps.call(:n=>1, :n2=>1).must_equal [{:id=>2, :numb=>20}]
211
+ ps.call(:n=>1, :n2=>2).must_equal []
212
+ ps.call(:n=>2, :n2=>0).must_equal [{:id=>1, :numb=>10}, {:id=>2, :numb=>20}]
213
+ ps.call(:n=>2, :n2=>1).must_equal [{:id=>2, :numb=>20}]
214
214
  end
215
215
 
216
- specify "should support prepared statements with insert" do
216
+ it "should support prepared statements with insert" do
217
217
  @ds.prepare(:insert, :insert_n, :numb=>:$n)
218
218
  @db.call(:insert_n, :n=>20)
219
- @ds.count.should == 2
220
- @ds.order(:id).map(:numb).should == [10, 20]
219
+ @ds.count.must_equal 2
220
+ @ds.order(:id).map(:numb).must_equal [10, 20]
221
221
  end
222
222
 
223
- specify "should support prepared statements with NULL values" do
223
+ it "should support prepared statements with NULL values" do
224
224
  @ds.delete
225
225
  @ds.prepare(:insert, :insert_n, :numb=>@pr[:$n])
226
226
  @db.call(:insert_n, :n=>nil)
227
- @ds.count.should == 1
228
- @ds.map(:numb).should == [nil]
227
+ @ds.count.must_equal 1
228
+ @ds.map(:numb).must_equal [nil]
229
229
  end
230
230
 
231
- specify "should have insert return primary key value when using prepared statements" do
231
+ it "should have insert return primary key value when using prepared statements" do
232
232
  @ds.prepare(:insert, :insert_n, :numb=>:$n)
233
- @db.call(:insert_n, :n=>20).should == 2
234
- @ds.filter(:id=>2).first[:numb].should == 20
233
+ @db.call(:insert_n, :n=>20).must_equal 2
234
+ @ds.filter(:id=>2).first[:numb].must_equal 20
235
235
  end
236
236
 
237
- specify "should support prepared_statements with insert_select" do
238
- @ds.prepare(:insert_select, :insert_select_n, :numb=>:$n).call(:n=>20).should == {:id=>2, :numb=>20}
239
- @ds.count.should == 2
240
- @ds.order(:id).map(:numb).should == [10, 20]
237
+ it "should support prepared_statements with insert_select" do
238
+ @ds.prepare(:insert_select, :insert_select_n, :numb=>:$n).call(:n=>20).must_equal(:id=>2, :numb=>20)
239
+ @ds.count.must_equal 2
240
+ @ds.order(:id).map(:numb).must_equal [10, 20]
241
241
  end if DB.dataset.supports_insert_select?
242
242
 
243
- specify "should support prepared statements with delete" do
243
+ it "should support prepared statements with delete" do
244
244
  @ds.filter(:numb=>:$n).prepare(:delete, :delete_n)
245
- @db.call(:delete_n, :n=>10).should == 1
246
- @ds.count.should == 0
245
+ @db.call(:delete_n, :n=>10).must_equal 1
246
+ @ds.count.must_equal 0
247
247
  end
248
248
 
249
- specify "should support prepared statements with update" do
249
+ it "should support prepared statements with update" do
250
250
  @ds.filter(:numb=>:$n).prepare(:update, :update_n, :numb=>Sequel.+(:numb, :$nn))
251
- @db.call(:update_n, :n=>10, :nn=>20).should == 1
252
- @ds.all.should == [{:id=>1, :numb=>30}]
251
+ @db.call(:update_n, :n=>10, :nn=>20).must_equal 1
252
+ @ds.all.must_equal [{:id=>1, :numb=>30}]
253
253
  end
254
254
 
255
- specify "model datasets should return model instances when using select, all, and first with bound variables" do
256
- @c.filter(:numb=>:$n).call(:select, :n=>10).should == [@c.load(:id=>1, :numb=>10)]
257
- @c.filter(:numb=>:$n).call(:all, :n=>10).should == [@c.load(:id=>1, :numb=>10)]
258
- @c.filter(:numb=>:$n).call(:first, :n=>10).should == @c.load(:id=>1, :numb=>10)
255
+ it "model datasets should return model instances when using select, all, and first with bound variables" do
256
+ @c.filter(:numb=>:$n).call(:select, :n=>10).must_equal [@c.load(:id=>1, :numb=>10)]
257
+ @c.filter(:numb=>:$n).call(:all, :n=>10).must_equal [@c.load(:id=>1, :numb=>10)]
258
+ @c.filter(:numb=>:$n).call(:first, :n=>10).must_equal @c.load(:id=>1, :numb=>10)
259
259
  end
260
260
 
261
- specify "model datasets should return model instances when using select, all, and first with prepared statements" do
261
+ it "model datasets should return model instances when using select, all, and first with prepared statements" do
262
262
  @c.filter(:numb=>:$n).prepare(:select, :select_n1)
263
- @db.call(:select_n1, :n=>10).should == [@c.load(:id=>1, :numb=>10)]
263
+ @db.call(:select_n1, :n=>10).must_equal [@c.load(:id=>1, :numb=>10)]
264
264
  @c.filter(:numb=>:$n).prepare(:all, :select_n1)
265
- @db.call(:select_n1, :n=>10).should == [@c.load(:id=>1, :numb=>10)]
265
+ @db.call(:select_n1, :n=>10).must_equal [@c.load(:id=>1, :numb=>10)]
266
266
  @c.filter(:numb=>:$n).prepare(:first, :select_n1)
267
- @db.call(:select_n1, :n=>10).should == @c.load(:id=>1, :numb=>10)
267
+ @db.call(:select_n1, :n=>10).must_equal @c.load(:id=>1, :numb=>10)
268
268
  end
269
269
  end
270
270
 
@@ -296,67 +296,67 @@ describe "Bound Argument Types" do
296
296
  end
297
297
 
298
298
  cspecify "should handle date type", [:do, :sqlite], [:tinytds], [:jdbc, :mssql], [:jdbc, :sqlite], :oracle do
299
- @ds.filter(:d=>:$x).prepare(:first, :ps_date).call(:x=>@vs[:d])[:d].should == @vs[:d]
299
+ @ds.filter(:d=>:$x).prepare(:first, :ps_date).call(:x=>@vs[:d])[:d].must_equal @vs[:d]
300
300
  end
301
301
 
302
302
  cspecify "should handle datetime type", [:do], [:mysql2], [:jdbc, :sqlite], [:tinytds], [:oracle] do
303
303
  Sequel.datetime_class = DateTime
304
- @ds.filter(:dt=>:$x).prepare(:first, :ps_datetime).call(:x=>@vs[:dt])[:dt].should == @vs[:dt]
304
+ @ds.filter(:dt=>:$x).prepare(:first, :ps_datetime).call(:x=>@vs[:dt])[:dt].must_equal @vs[:dt]
305
305
  end
306
306
 
307
307
  cspecify "should handle datetime type with fractional seconds", [:do, :postgres], [:jdbc, :sqlite], [:oracle] do
308
308
  Sequel.datetime_class = DateTime
309
309
  fract_time = DateTime.parse('2010-10-12 13:14:15.500000')
310
310
  @ds.prepare(:update, :ps_datetime_up, :dt=>:$x).call(:x=>fract_time)
311
- @ds.literal(@ds.filter(:dt=>:$x).prepare(:first, :ps_datetime).call(:x=>fract_time)[:dt]).should == @ds.literal(fract_time)
311
+ @ds.literal(@ds.filter(:dt=>:$x).prepare(:first, :ps_datetime).call(:x=>fract_time)[:dt]).must_equal @ds.literal(fract_time)
312
312
  end
313
313
 
314
314
  cspecify "should handle time type", [:do], [:jdbc, :sqlite], [:swift], [:oracle] do
315
- @ds.filter(:t=>:$x).prepare(:first, :ps_time).call(:x=>@vs[:t])[:t].should == @vs[:t]
315
+ @ds.filter(:t=>:$x).prepare(:first, :ps_time).call(:x=>@vs[:t])[:t].must_equal @vs[:t]
316
316
  end
317
317
 
318
318
  cspecify "should handle time type with fractional seconds", [:do, :postgres], [:jdbc, :sqlite], [:oracle], [:swift, :postgres] do
319
319
  fract_time = @vs[:t] + 0.5
320
320
  @ds.prepare(:update, :ps_time_up, :t=>:$x).call(:x=>fract_time)
321
- @ds.literal(@ds.filter(:t=>:$x).prepare(:first, :ps_time).call(:x=>fract_time)[:t]).should == @ds.literal(fract_time)
321
+ @ds.literal(@ds.filter(:t=>:$x).prepare(:first, :ps_time).call(:x=>fract_time)[:t]).must_equal @ds.literal(fract_time)
322
322
  end
323
323
 
324
324
  cspecify "should handle blob type", [:odbc], [:oracle] do
325
325
  @ds.delete
326
326
  @ds.prepare(:insert, :ps_blob, {:file=>:$x}).call(:x=>@vs[:file])
327
- @ds.get(:file).should == @vs[:file]
327
+ @ds.get(:file).must_equal @vs[:file]
328
328
  end
329
329
 
330
330
  cspecify "should handle blob type with special characters", [:odbc], [:oracle] do
331
331
  @ds.delete
332
332
  blob = Sequel.blob("\"'[]`a0 ")
333
333
  @ds.prepare(:insert, :ps_blob, {:file=>:$x}).call(:x=>blob)
334
- @ds.get(:file).should == blob
334
+ @ds.get(:file).must_equal blob
335
335
  end
336
336
 
337
- cspecify "should handle blob type with nil values", [:oracle], [:tinytds], [:jdbc, proc{|db| defined?(Sequel::JDBC::SQLServer::DatabaseMethods) && db.is_a?(Sequel::JDBC::SQLServer::DatabaseMethods)}] do
337
+ cspecify "should handle blob type with nil values", [:oracle], [:tinytds], [:jdbc, :mssql] do
338
338
  @ds.delete
339
339
  @ds.prepare(:insert, :ps_blob, {:file=>:$x}).call(:x=>nil)
340
- @ds.get(:file).should == nil
340
+ @ds.get(:file).must_equal nil
341
341
  end
342
342
 
343
343
  cspecify "should handle blob type with embedded zeros", [:odbc], [:oracle] do
344
344
  zero_blob = Sequel::SQL::Blob.new("a\0"*100)
345
345
  @ds.delete
346
346
  @ds.prepare(:insert, :ps_blob, {:file=>:$x}).call(:x=>zero_blob)
347
- @ds.get(:file).should == zero_blob
347
+ @ds.get(:file).must_equal zero_blob
348
348
  end
349
349
 
350
350
  cspecify "should handle float type", [:swift, :sqlite] do
351
- @ds.filter(:f=>:$x).prepare(:first, :ps_float).call(:x=>@vs[:f])[:f].should == @vs[:f]
351
+ @ds.filter(:f=>:$x).prepare(:first, :ps_float).call(:x=>@vs[:f])[:f].must_equal @vs[:f]
352
352
  end
353
353
 
354
- specify "should handle string type" do
355
- @ds.filter(:s=>:$x).prepare(:first, :ps_string).call(:x=>@vs[:s])[:s].should == @vs[:s]
354
+ it "should handle string type" do
355
+ @ds.filter(:s=>:$x).prepare(:first, :ps_string).call(:x=>@vs[:s])[:s].must_equal @vs[:s]
356
356
  end
357
357
 
358
358
  cspecify "should handle boolean type", [:do, :sqlite], [:jdbc, :sqlite], [:jdbc, :db2], :oracle do
359
- @ds.filter(:b=>:$x).prepare(:first, :ps_string).call(:x=>@vs[:b])[:b].should == @vs[:b]
359
+ @ds.filter(:b=>:$x).prepare(:first, :ps_string).call(:x=>@vs[:b])[:b].must_equal @vs[:b]
360
360
  end
361
361
  end
362
362
 
@@ -375,45 +375,45 @@ describe "Dataset#unbind" do
375
375
  DB.drop_table?(:items)
376
376
  end
377
377
 
378
- specify "should unbind values assigned to equality and inequality statements" do
378
+ it "should unbind values assigned to equality and inequality statements" do
379
379
  @ct[Integer, 10]
380
- @u[@ds.filter(:c=>10)].should == {:c=>10}
381
- @u[@ds.exclude(:c=>10)].should == nil
382
- @u[@ds.filter{c < 10}].should == nil
383
- @u[@ds.filter{c <= 10}].should == {:c=>10}
384
- @u[@ds.filter{c > 10}].should == nil
385
- @u[@ds.filter{c >= 10}].should == {:c=>10}
380
+ @u[@ds.filter(:c=>10)].must_equal(:c=>10)
381
+ @u[@ds.exclude(:c=>10)].must_equal nil
382
+ @u[@ds.filter{c < 10}].must_equal nil
383
+ @u[@ds.filter{c <= 10}].must_equal(:c=>10)
384
+ @u[@ds.filter{c > 10}].must_equal nil
385
+ @u[@ds.filter{c >= 10}].must_equal(:c=>10)
386
386
  end
387
387
 
388
388
  cspecify "should handle numerics and strings", [:odbc], [:swift, :sqlite] do
389
389
  @ct[Integer, 10]
390
- @u[@ds.filter(:c=>10)].should == {:c=>10}
390
+ @u[@ds.filter(:c=>10)].must_equal(:c=>10)
391
391
  @ct[Float, 0.0]
392
- @u[@ds.filter{c < 1}].should == {:c=>0.0}
392
+ @u[@ds.filter{c < 1}].must_equal(:c=>0.0)
393
393
  @ct[String, 'foo']
394
- @u[@ds.filter(:c=>'foo')].should == {:c=>'foo'}
394
+ @u[@ds.filter(:c=>'foo')].must_equal(:c=>'foo')
395
395
 
396
396
  DB.create_table!(:items) do
397
397
  BigDecimal :c, :size=>[15,2]
398
398
  end
399
399
  @ds.insert(:c=>BigDecimal.new('1.1'))
400
- @u[@ds.filter{c > 0}].should == {:c=>BigDecimal.new('1.1')}
400
+ @u[@ds.filter{c > 0}].must_equal(:c=>BigDecimal.new('1.1'))
401
401
  end
402
402
 
403
403
  cspecify "should handle dates and times", [:do], [:jdbc, :mssql], [:jdbc, :sqlite], [:swift], [:tinytds], :oracle do
404
404
  @ct[Date, Date.today]
405
- @u[@ds.filter(:c=>Date.today)].should == {:c=>Date.today}
405
+ @u[@ds.filter(:c=>Date.today)].must_equal(:c=>Date.today)
406
406
  t = Time.now
407
407
  @ct[Time, t]
408
- @u[@ds.filter{c < t + 1}][:c].to_i.should == t.to_i
408
+ @u[@ds.filter{c < t + 1}][:c].to_i.must_equal t.to_i
409
409
  end
410
410
 
411
- specify "should handle QualifiedIdentifiers" do
411
+ it "should handle QualifiedIdentifiers" do
412
412
  @ct[Integer, 10]
413
- @u[@ds.filter{items__c > 1}].should == {:c=>10}
413
+ @u[@ds.filter{items__c > 1}].must_equal(:c=>10)
414
414
  end
415
415
 
416
- specify "should handle deep nesting" do
416
+ it "should handle deep nesting" do
417
417
  DB.create_table!(:items) do
418
418
  Integer :a
419
419
  Integer :b
@@ -421,13 +421,13 @@ describe "Dataset#unbind" do
421
421
  Integer :d
422
422
  end
423
423
  @ds.insert(:a=>2, :b=>0, :c=>3, :d=>5)
424
- @u[@ds.filter{a > 1}.and{b < 2}.or(:c=>3).and(Sequel.case({~Sequel.expr(:d=>4)=>1}, 0) => 1)].should == {:a=>2, :b=>0, :c=>3, :d=>5}
425
- @u[@ds.filter{a > 1}.and{b < 2}.or(:c=>3).and(Sequel.case({~Sequel.expr(:d=>5)=>1}, 0) => 1)].should == nil
424
+ @u[@ds.filter{a > 1}.and{b < 2}.or(:c=>3).and(Sequel.case({~Sequel.expr(:d=>4)=>1}, 0) => 1)].must_equal(:a=>2, :b=>0, :c=>3, :d=>5)
425
+ @u[@ds.filter{a > 1}.and{b < 2}.or(:c=>3).and(Sequel.case({~Sequel.expr(:d=>5)=>1}, 0) => 1)].must_equal nil
426
426
  end
427
427
 
428
- specify "should handle case where the same variable has the same value in multiple places " do
428
+ it "should handle case where the same variable has the same value in multiple places " do
429
429
  @ct[Integer, 1]
430
- @u[@ds.filter{c > 1}.or{c < 1}.invert].should == {:c=>1}
431
- @u[@ds.filter{c > 1}.or{c < 1}].should == nil
430
+ @u[@ds.filter{c > 1}.or{c < 1}.invert].must_equal(:c=>1)
431
+ @u[@ds.filter{c > 1}.or{c < 1}].must_equal nil
432
432
  end
433
433
  end