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
@@ -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