sequel 4.22.0 → 4.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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