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
@@ -3,13 +3,13 @@ require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
3
3
  Sequel.extension :string_date_time
4
4
 
5
5
  describe "String#to_time" do
6
- specify "should convert the string into a Time object" do
7
- "2007-07-11".to_time.should == Time.parse("2007-07-11")
8
- "06:30".to_time.should == Time.parse("06:30")
6
+ it "should convert the string into a Time object" do
7
+ "2007-07-11".to_time.must_equal Time.parse("2007-07-11")
8
+ "06:30".to_time.must_equal Time.parse("06:30")
9
9
  end
10
10
 
11
- specify "should raise InvalidValue for an invalid time" do
12
- proc {'0000-00-00'.to_time}.should raise_error(Sequel::InvalidValue)
11
+ it "should raise InvalidValue for an invalid time" do
12
+ proc {'0000-00-00'.to_time}.must_raise(Sequel::InvalidValue)
13
13
  end
14
14
  end
15
15
 
@@ -18,21 +18,21 @@ describe "String#to_date" do
18
18
  Sequel.convert_two_digit_years = true
19
19
  end
20
20
 
21
- specify "should convert the string into a Date object" do
22
- "2007-07-11".to_date.should == Date.parse("2007-07-11")
21
+ it "should convert the string into a Date object" do
22
+ "2007-07-11".to_date.must_equal Date.parse("2007-07-11")
23
23
  end
24
24
 
25
- specify "should convert 2 digit years by default" do
26
- "July 11, 07".to_date.should == Date.parse("2007-07-11")
25
+ it "should convert 2 digit years by default" do
26
+ "July 11, 07".to_date.must_equal Date.parse("2007-07-11")
27
27
  end
28
28
 
29
- specify "should not convert 2 digit years if set not to" do
29
+ it "should not convert 2 digit years if set not to" do
30
30
  Sequel.convert_two_digit_years = false
31
- "July 11, 07".to_date.should == Date.parse("0007-07-11")
31
+ "July 11, 07".to_date.must_equal Date.parse("0007-07-11")
32
32
  end
33
33
 
34
- specify "should raise InvalidValue for an invalid date" do
35
- proc {'0000-00-00'.to_date}.should raise_error(Sequel::InvalidValue)
34
+ it "should raise InvalidValue for an invalid date" do
35
+ proc {'0000-00-00'.to_date}.must_raise(Sequel::InvalidValue)
36
36
  end
37
37
  end
38
38
 
@@ -41,21 +41,21 @@ describe "String#to_datetime" do
41
41
  Sequel.convert_two_digit_years = true
42
42
  end
43
43
 
44
- specify "should convert the string into a DateTime object" do
45
- "2007-07-11 10:11:12a".to_datetime.should == DateTime.parse("2007-07-11 10:11:12a")
44
+ it "should convert the string into a DateTime object" do
45
+ "2007-07-11 10:11:12a".to_datetime.must_equal DateTime.parse("2007-07-11 10:11:12a")
46
46
  end
47
47
 
48
- specify "should convert 2 digit years by default" do
49
- "July 11, 07 10:11:12a".to_datetime.should == DateTime.parse("2007-07-11 10:11:12a")
48
+ it "should convert 2 digit years by default" do
49
+ "July 11, 07 10:11:12a".to_datetime.must_equal DateTime.parse("2007-07-11 10:11:12a")
50
50
  end
51
51
 
52
- specify "should not convert 2 digit years if set not to" do
52
+ it "should not convert 2 digit years if set not to" do
53
53
  Sequel.convert_two_digit_years = false
54
- "July 11, 07 10:11:12a".to_datetime.should == DateTime.parse("0007-07-11 10:11:12a")
54
+ "July 11, 07 10:11:12a".to_datetime.must_equal DateTime.parse("0007-07-11 10:11:12a")
55
55
  end
56
56
 
57
- specify "should raise InvalidValue for an invalid date" do
58
- proc {'0000-00-00'.to_datetime}.should raise_error(Sequel::InvalidValue)
57
+ it "should raise InvalidValue for an invalid date" do
58
+ proc {'0000-00-00'.to_datetime}.must_raise(Sequel::InvalidValue)
59
59
  end
60
60
  end
61
61
 
@@ -65,31 +65,31 @@ describe "String#to_sequel_time" do
65
65
  Sequel.convert_two_digit_years = true
66
66
  end
67
67
 
68
- specify "should convert the string into a Time object by default" do
69
- "2007-07-11 10:11:12a".to_sequel_time.class.should == Time
70
- "2007-07-11 10:11:12a".to_sequel_time.should == Time.parse("2007-07-11 10:11:12a")
68
+ it "should convert the string into a Time object by default" do
69
+ "2007-07-11 10:11:12a".to_sequel_time.class.must_equal Time
70
+ "2007-07-11 10:11:12a".to_sequel_time.must_equal Time.parse("2007-07-11 10:11:12a")
71
71
  end
72
72
 
73
- specify "should convert the string into a DateTime object if that is set" do
73
+ it "should convert the string into a DateTime object if that is set" do
74
74
  Sequel.datetime_class = DateTime
75
- "2007-07-11 10:11:12a".to_sequel_time.class.should == DateTime
76
- "2007-07-11 10:11:12a".to_sequel_time.should == DateTime.parse("2007-07-11 10:11:12a")
75
+ "2007-07-11 10:11:12a".to_sequel_time.class.must_equal DateTime
76
+ "2007-07-11 10:11:12a".to_sequel_time.must_equal DateTime.parse("2007-07-11 10:11:12a")
77
77
  end
78
78
 
79
- specify "should convert 2 digit years by default if using DateTime class" do
79
+ it "should convert 2 digit years by default if using DateTime class" do
80
80
  Sequel.datetime_class = DateTime
81
- "July 11, 07 10:11:12a".to_sequel_time.should == DateTime.parse("2007-07-11 10:11:12a")
81
+ "July 11, 07 10:11:12a".to_sequel_time.must_equal DateTime.parse("2007-07-11 10:11:12a")
82
82
  end
83
83
 
84
- specify "should not convert 2 digit years if set not to when using DateTime class" do
84
+ it "should not convert 2 digit years if set not to when using DateTime class" do
85
85
  Sequel.datetime_class = DateTime
86
86
  Sequel.convert_two_digit_years = false
87
- "July 11, 07 10:11:12a".to_sequel_time.should == DateTime.parse("0007-07-11 10:11:12a")
87
+ "July 11, 07 10:11:12a".to_sequel_time.must_equal DateTime.parse("0007-07-11 10:11:12a")
88
88
  end
89
89
 
90
- specify "should raise InvalidValue for an invalid time" do
91
- proc {'0000-00-00'.to_sequel_time}.should raise_error(Sequel::InvalidValue)
90
+ it "should raise InvalidValue for an invalid time" do
91
+ proc {'0000-00-00'.to_sequel_time}.must_raise(Sequel::InvalidValue)
92
92
  Sequel.datetime_class = DateTime
93
- proc {'0000-00-00'.to_sequel_time}.should raise_error(Sequel::InvalidValue)
93
+ proc {'0000-00-00'.to_sequel_time}.must_raise(Sequel::InvalidValue)
94
94
  end
95
95
  end
@@ -12,44 +12,44 @@ describe "Sequel::Plugins::StringStripper" do
12
12
 
13
13
  it "should strip all input strings" do
14
14
  @o.name = ' name '
15
- @o.name.should == 'name'
15
+ @o.name.must_equal 'name'
16
16
  end
17
17
 
18
18
  it "should not affect other types" do
19
19
  @o.name = 1
20
- @o.name.should == 1
20
+ @o.name.must_equal 1
21
21
  @o.name = Date.today
22
- @o.name.should == Date.today
22
+ @o.name.must_equal Date.today
23
23
  end
24
24
 
25
25
  it "should not strip strings for blob arguments" do
26
26
  v = Sequel.blob(' name ')
27
27
  @o.name = v
28
- @o.name.should equal(v)
28
+ @o.name.must_be_same_as(v)
29
29
  end
30
30
 
31
31
  it "should not strip strings for blob columns" do
32
32
  @o.b = ' name '
33
- @o.b.should be_a_kind_of(Sequel::SQL::Blob)
34
- @o.b.should == Sequel.blob(' name ')
33
+ @o.b.must_be_kind_of(Sequel::SQL::Blob)
34
+ @o.b.must_equal Sequel.blob(' name ')
35
35
  end
36
36
 
37
37
  it "should allow skipping of columns using Model.skip_string_stripping" do
38
- @c.skip_string_stripping?(:name).should == false
38
+ @c.skip_string_stripping?(:name).must_equal false
39
39
  @c.skip_string_stripping :name
40
- @c.skip_string_stripping?(:name).should == true
40
+ @c.skip_string_stripping?(:name).must_equal true
41
41
  v = ' name '
42
42
  @o.name = v
43
- @o.name.should equal(v)
43
+ @o.name.must_be_same_as(v)
44
44
  end
45
45
 
46
46
  it "should work correctly in subclasses" do
47
47
  o = Class.new(@c).new
48
48
  o.name = ' name '
49
- o.name.should == 'name'
49
+ o.name.must_equal 'name'
50
50
  o.b = ' name '
51
- o.b.should be_a_kind_of(Sequel::SQL::Blob)
52
- o.b.should == Sequel.blob(' name ')
51
+ o.b.must_be_kind_of(Sequel::SQL::Blob)
52
+ o.b.must_equal Sequel.blob(' name ')
53
53
  end
54
54
 
55
55
  it "should work correctly for dataset changes" do
@@ -60,9 +60,9 @@ describe "Sequel::Plugins::StringStripper" do
60
60
  c.set_dataset(@db[:test2])
61
61
  o = c.new
62
62
  o.name = ' name '
63
- o.name.should == 'name'
63
+ o.name.must_equal 'name'
64
64
  o.b = ' name '
65
- o.b.should be_a_kind_of(Sequel::SQL::Blob)
66
- o.b.should == Sequel.blob(' name ')
65
+ o.b.must_be_kind_of(Sequel::SQL::Blob)
66
+ o.b.must_equal Sequel.blob(' name ')
67
67
  end
68
68
  end
@@ -6,61 +6,61 @@ describe Sequel::Model, "Subclasses plugin" do
6
6
  @c.plugin :subclasses
7
7
  end
8
8
 
9
- specify "#subclasses should record direct subclasses of the given model" do
10
- @c.subclasses.should == []
9
+ it "#subclasses should record direct subclasses of the given model" do
10
+ @c.subclasses.must_equal []
11
11
 
12
12
  sc1 = Class.new(@c)
13
- @c.subclasses.should == [sc1]
14
- sc1.subclasses.should == []
13
+ @c.subclasses.must_equal [sc1]
14
+ sc1.subclasses.must_equal []
15
15
 
16
16
  sc2 = Class.new(@c)
17
- @c.subclasses.should == [sc1, sc2]
18
- sc1.subclasses.should == []
19
- sc2.subclasses.should == []
17
+ @c.subclasses.must_equal [sc1, sc2]
18
+ sc1.subclasses.must_equal []
19
+ sc2.subclasses.must_equal []
20
20
 
21
21
  ssc1 = Class.new(sc1)
22
- @c.subclasses.should == [sc1, sc2]
23
- sc1.subclasses.should == [ssc1]
24
- sc2.subclasses.should == []
22
+ @c.subclasses.must_equal [sc1, sc2]
23
+ sc1.subclasses.must_equal [ssc1]
24
+ sc2.subclasses.must_equal []
25
25
  end
26
26
 
27
- specify "#descendents should record all descendent subclasses of the given model" do
28
- @c.descendents.should == []
27
+ it "#descendents should record all descendent subclasses of the given model" do
28
+ @c.descendents.must_equal []
29
29
 
30
30
  sc1 = Class.new(@c)
31
- @c.descendents.should == [sc1]
32
- sc1.descendents.should == []
31
+ @c.descendents.must_equal [sc1]
32
+ sc1.descendents.must_equal []
33
33
 
34
34
  sc2 = Class.new(@c)
35
- @c.descendents.should == [sc1, sc2]
36
- sc1.descendents.should == []
37
- sc2.descendents.should == []
35
+ @c.descendents.must_equal [sc1, sc2]
36
+ sc1.descendents.must_equal []
37
+ sc2.descendents.must_equal []
38
38
 
39
39
  ssc1 = Class.new(sc1)
40
- @c.descendents.should == [sc1, ssc1, sc2]
41
- sc1.descendents.should == [ssc1]
42
- sc2.descendents.should == []
43
- ssc1.descendents.should == []
40
+ @c.descendents.must_equal [sc1, ssc1, sc2]
41
+ sc1.descendents.must_equal [ssc1]
42
+ sc2.descendents.must_equal []
43
+ ssc1.descendents.must_equal []
44
44
 
45
45
  sssc1 = Class.new(ssc1)
46
- @c.descendents.should == [sc1, ssc1, sssc1, sc2]
47
- sc1.descendents.should == [ssc1, sssc1]
48
- sc2.descendents.should == []
49
- ssc1.descendents.should == [sssc1]
50
- sssc1.descendents.should == []
46
+ @c.descendents.must_equal [sc1, ssc1, sssc1, sc2]
47
+ sc1.descendents.must_equal [ssc1, sssc1]
48
+ sc2.descendents.must_equal []
49
+ ssc1.descendents.must_equal [sssc1]
50
+ sssc1.descendents.must_equal []
51
51
  end
52
52
 
53
- specify "plugin block should be called with each subclass created" do
53
+ it "plugin block should be called with each subclass created" do
54
54
  c = Class.new(Sequel::Model)
55
55
  a = []
56
56
  c.plugin(:subclasses){|sc| a << sc}
57
57
  sc1 = Class.new(c)
58
- a.should == [sc1]
58
+ a.must_equal [sc1]
59
59
  sc2 = Class.new(c)
60
- a.should == [sc1, sc2]
60
+ a.must_equal [sc1, sc2]
61
61
  sc3 = Class.new(sc1)
62
- a.should == [sc1, sc2, sc3]
62
+ a.must_equal [sc1, sc2, sc3]
63
63
  sc4 = Class.new(sc3)
64
- a.should == [sc1, sc2, sc3, sc4]
64
+ a.must_equal [sc1, sc2, sc3, sc4]
65
65
  end
66
66
  end
@@ -7,58 +7,58 @@ describe "Sequel::Plugins::TableSelect" do
7
7
 
8
8
  it "should add a table.* selection to existing dataset without explicit selection" do
9
9
  @Album.plugin :table_select
10
- @Album.dataset.sql.should == 'SELECT albums.* FROM albums'
10
+ @Album.dataset.sql.must_equal 'SELECT albums.* FROM albums'
11
11
 
12
12
  @Album.dataset = :albs
13
- @Album.dataset.sql.should == 'SELECT albs.* FROM albs'
13
+ @Album.dataset.sql.must_equal 'SELECT albs.* FROM albs'
14
14
 
15
15
  @Album.dataset = Sequel.identifier(:albs)
16
- @Album.dataset.sql.should == 'SELECT albs.* FROM albs'
16
+ @Album.dataset.sql.must_equal 'SELECT albs.* FROM albs'
17
17
  end
18
18
 
19
19
  it "should handle qualified tables" do
20
20
  @Album.dataset = :s__albums
21
21
  @Album.plugin :table_select
22
- @Album.dataset.sql.should == 'SELECT s.albums.* FROM s.albums'
22
+ @Album.dataset.sql.must_equal 'SELECT s.albums.* FROM s.albums'
23
23
 
24
24
  @Album.dataset = Sequel.qualify(:s2, :albums)
25
- @Album.dataset.sql.should == 'SELECT s2.albums.* FROM s2.albums'
25
+ @Album.dataset.sql.must_equal 'SELECT s2.albums.* FROM s2.albums'
26
26
  end
27
27
 
28
28
  it "should handle aliases" do
29
29
  @Album.dataset = :albums___a
30
30
  @Album.plugin :table_select
31
- @Album.dataset.sql.should == 'SELECT a.* FROM albums AS a'
31
+ @Album.dataset.sql.must_equal 'SELECT a.* FROM albums AS a'
32
32
 
33
33
  @Album.dataset = Sequel.as(:albums, :b)
34
- @Album.dataset.sql.should == 'SELECT b.* FROM albums AS b'
34
+ @Album.dataset.sql.must_equal 'SELECT b.* FROM albums AS b'
35
35
 
36
36
  @Album.dataset = :s__albums___a
37
- @Album.dataset.sql.should == 'SELECT a.* FROM s.albums AS a'
37
+ @Album.dataset.sql.must_equal 'SELECT a.* FROM s.albums AS a'
38
38
 
39
39
  @Album.dataset = @Album.db[:albums].from_self
40
- @Album.dataset.sql.should == 'SELECT t1.* FROM (SELECT * FROM albums) AS t1'
40
+ @Album.dataset.sql.must_equal 'SELECT t1.* FROM (SELECT * FROM albums) AS t1'
41
41
 
42
42
  @Album.dataset = Sequel.as(@Album.db[:albums], :b)
43
- @Album.dataset.sql.should == 'SELECT b.* FROM (SELECT * FROM albums) AS b'
43
+ @Album.dataset.sql.must_equal 'SELECT b.* FROM (SELECT * FROM albums) AS b'
44
44
  end
45
45
 
46
46
  it "should not add a table.* selection on existing dataset with explicit selection" do
47
47
  @Album.dataset = @Album.dataset.select(:name)
48
48
  @Album.plugin :table_select
49
- @Album.dataset.sql.should == 'SELECT name FROM albums'
49
+ @Album.dataset.sql.must_equal 'SELECT name FROM albums'
50
50
 
51
51
  @Album.dataset = @Album.dataset.select(:name, :artist)
52
- @Album.dataset.sql.should == 'SELECT name, artist FROM albums'
52
+ @Album.dataset.sql.must_equal 'SELECT name, artist FROM albums'
53
53
  end
54
54
 
55
55
  it "should not add a table.* selection on existing dataset with multiple tables" do
56
56
  @Album.dataset = @Album.db.from(:a1, :a2)
57
57
  @Album.plugin :table_select
58
- @Album.dataset.sql.should == 'SELECT * FROM a1, a2'
58
+ @Album.dataset.sql.must_equal 'SELECT * FROM a1, a2'
59
59
 
60
60
  @Album.dataset = @Album.db.from(:a1).cross_join(:a2)
61
- @Album.dataset.sql.should == 'SELECT * FROM a1 CROSS JOIN a2'
61
+ @Album.dataset.sql.must_equal 'SELECT * FROM a1 CROSS JOIN a2'
62
62
  end
63
63
 
64
64
  it "works correctly when loaded on model without a dataset" do
@@ -66,6 +66,6 @@ describe "Sequel::Plugins::TableSelect" do
66
66
  c.plugin :table_select
67
67
  sc = Class.new(c)
68
68
  sc.dataset = :a
69
- sc.dataset.sql.should == "SELECT a.* FROM a"
69
+ sc.dataset.sql.must_equal "SELECT a.* FROM a"
70
70
  end
71
71
  end
@@ -29,30 +29,30 @@ describe "Sequel::Plugins::TacticalEagerLoading" do
29
29
 
30
30
  it "Dataset#all should set the retrieved_by and retrieved_with attributes" do
31
31
  ts = @c.all
32
- ts.map{|x| [x.retrieved_by, x.retrieved_with]}.should == [[@ds,ts], [@ds,ts], [@ds,ts], [@ds,ts]]
32
+ ts.map{|x| [x.retrieved_by, x.retrieved_with]}.must_equal [[@ds,ts], [@ds,ts], [@ds,ts], [@ds,ts]]
33
33
  end
34
34
 
35
35
  it "Dataset#all shouldn't raise an error if a Sequel::Model instance is not returned" do
36
- proc{@c.naked.all}.should_not raise_error
36
+ @c.naked.all
37
37
  end
38
38
 
39
39
  it "association getter methods should eagerly load the association if the association isn't cached" do
40
- DB.sqls.length.should == 0
40
+ DB.sqls.length.must_equal 0
41
41
  ts = @c.all
42
- DB.sqls.length.should == 1
43
- ts.map{|x| x.parent}.should == [ts[2], ts[3], nil, nil]
44
- DB.sqls.length.should == 1
45
- ts.map{|x| x.children}.should == [[], [], [ts[0]], [ts[1]]]
46
- DB.sqls.length.should == 1
42
+ DB.sqls.length.must_equal 1
43
+ ts.map{|x| x.parent}.must_equal [ts[2], ts[3], nil, nil]
44
+ DB.sqls.length.must_equal 1
45
+ ts.map{|x| x.children}.must_equal [[], [], [ts[0]], [ts[1]]]
46
+ DB.sqls.length.must_equal 1
47
47
  end
48
48
 
49
49
  it "association getter methods should not eagerly load the association if the association is cached" do
50
- DB.sqls.length.should == 0
50
+ DB.sqls.length.must_equal 0
51
51
  ts = @c.all
52
- DB.sqls.length.should == 1
53
- ts.map{|x| x.parent}.should == [ts[2], ts[3], nil, nil]
54
- @ds.should_not_receive(:eager_load)
55
- ts.map{|x| x.parent}.should == [ts[2], ts[3], nil, nil]
52
+ DB.sqls.length.must_equal 1
53
+ ts.map{|x| x.parent}.must_equal [ts[2], ts[3], nil, nil]
54
+ def @ds.eager_load(*) raise end
55
+ ts.map{|x| x.parent}.must_equal [ts[2], ts[3], nil, nil]
56
56
  end
57
57
 
58
58
  it "should handle case where an association is valid on an instance, but not on all instances" do
@@ -65,18 +65,18 @@ describe "Sequel::Plugins::TacticalEagerLoading" do
65
65
  it "association getter methods should not eagerly load the association if an instance is frozen" do
66
66
  ts = @c.all
67
67
  ts.first.freeze
68
- DB.sqls.length.should == 1
69
- ts.map{|x| x.parent}.should == [ts[2], ts[3], nil, nil]
70
- DB.sqls.length.should == 2
71
- ts.map{|x| x.children}.should == [[], [], [ts[0]], [ts[1]]]
72
- DB.sqls.length.should == 2
73
- ts.map{|x| x.parent}.should == [ts[2], ts[3], nil, nil]
74
- DB.sqls.length.should == 1
75
- ts.map{|x| x.children}.should == [[], [], [ts[0]], [ts[1]]]
76
- DB.sqls.length.should == 1
68
+ DB.sqls.length.must_equal 1
69
+ ts.map{|x| x.parent}.must_equal [ts[2], ts[3], nil, nil]
70
+ DB.sqls.length.must_equal 2
71
+ ts.map{|x| x.children}.must_equal [[], [], [ts[0]], [ts[1]]]
72
+ DB.sqls.length.must_equal 2
73
+ ts.map{|x| x.parent}.must_equal [ts[2], ts[3], nil, nil]
74
+ DB.sqls.length.must_equal 1
75
+ ts.map{|x| x.children}.must_equal [[], [], [ts[0]], [ts[1]]]
76
+ DB.sqls.length.must_equal 1
77
77
  end
78
78
 
79
79
  it "#marshallable should make marshalling not fail" do
80
- proc{Marshal.dump(@c.all.map{|x| x.marshallable!})}.should_not raise_error
80
+ Marshal.dump(@c.all.map{|x| x.marshallable!})
81
81
  end
82
82
  end
@@ -11,33 +11,33 @@ describe "Sequel thread_local_timezones extension" do
11
11
  end
12
12
 
13
13
  it "should allow specifying thread local timezones via thread_*_timezone=" do
14
- proc{Sequel.thread_application_timezone = :local}.should_not raise_error
15
- proc{Sequel.thread_database_timezone = :utc}.should_not raise_error
16
- proc{Sequel.thread_typecast_timezone = nil}.should_not raise_error
14
+ Sequel.thread_application_timezone = :local
15
+ Sequel.thread_database_timezone = :utc
16
+ Sequel.thread_typecast_timezone = nil
17
17
  end
18
18
 
19
19
  it "should use thread local timezone if available" do
20
20
  Sequel.thread_application_timezone = :local
21
- Sequel.application_timezone.should == :local
21
+ Sequel.application_timezone.must_equal :local
22
22
  Sequel.thread_database_timezone = :utc
23
- Sequel.database_timezone.should == :utc
23
+ Sequel.database_timezone.must_equal :utc
24
24
  Sequel.thread_typecast_timezone = nil
25
- Sequel.typecast_timezone.should == nil
25
+ Sequel.typecast_timezone.must_equal nil
26
26
  end
27
27
 
28
28
  it "should fallback to default timezone if no thread_local timezone" do
29
29
  Sequel.default_timezone = :utc
30
- Sequel.application_timezone.should == :utc
31
- Sequel.database_timezone.should == :utc
32
- Sequel.typecast_timezone.should == :utc
30
+ Sequel.application_timezone.must_equal :utc
31
+ Sequel.database_timezone.must_equal :utc
32
+ Sequel.typecast_timezone.must_equal :utc
33
33
  end
34
34
 
35
35
  it "should use a nil thread_local_timezone if set instead of falling back to the default timezone if thread_local_timezone is set to :nil" do
36
36
  Sequel.typecast_timezone = :utc
37
37
  Sequel.thread_typecast_timezone = nil
38
- Sequel.typecast_timezone.should == :utc
38
+ Sequel.typecast_timezone.must_equal :utc
39
39
  Sequel.thread_typecast_timezone = :nil
40
- Sequel.typecast_timezone.should == nil
40
+ Sequel.typecast_timezone.must_equal nil
41
41
  end
42
42
 
43
43
  it "should be thread safe" do
@@ -61,7 +61,7 @@ describe "Sequel thread_local_timezones extension" do
61
61
  q1.push nil
62
62
  t1.join
63
63
  t2.join
64
- tz1.should == :utc
65
- tz2.should == :local
64
+ tz1.must_equal :utc
65
+ tz2.must_equal :local
66
66
  end
67
67
  end