sequel 5.29.0 → 5.30.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 (323) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +8 -1922
  3. data/doc/release_notes/5.30.0.txt +20 -0
  4. data/lib/sequel/adapters/shared/sqlite.rb +7 -1
  5. data/lib/sequel/database/transactions.rb +5 -9
  6. data/lib/sequel/version.rb +1 -1
  7. metadata +4 -368
  8. data/Rakefile +0 -151
  9. data/doc/release_notes/4.0.0.txt +0 -262
  10. data/doc/release_notes/4.1.0.txt +0 -85
  11. data/doc/release_notes/4.10.0.txt +0 -226
  12. data/doc/release_notes/4.11.0.txt +0 -147
  13. data/doc/release_notes/4.12.0.txt +0 -105
  14. data/doc/release_notes/4.13.0.txt +0 -169
  15. data/doc/release_notes/4.14.0.txt +0 -68
  16. data/doc/release_notes/4.15.0.txt +0 -56
  17. data/doc/release_notes/4.16.0.txt +0 -36
  18. data/doc/release_notes/4.17.0.txt +0 -38
  19. data/doc/release_notes/4.18.0.txt +0 -36
  20. data/doc/release_notes/4.19.0.txt +0 -45
  21. data/doc/release_notes/4.2.0.txt +0 -129
  22. data/doc/release_notes/4.20.0.txt +0 -79
  23. data/doc/release_notes/4.21.0.txt +0 -94
  24. data/doc/release_notes/4.22.0.txt +0 -72
  25. data/doc/release_notes/4.23.0.txt +0 -65
  26. data/doc/release_notes/4.24.0.txt +0 -99
  27. data/doc/release_notes/4.25.0.txt +0 -181
  28. data/doc/release_notes/4.26.0.txt +0 -44
  29. data/doc/release_notes/4.27.0.txt +0 -78
  30. data/doc/release_notes/4.28.0.txt +0 -57
  31. data/doc/release_notes/4.29.0.txt +0 -41
  32. data/doc/release_notes/4.3.0.txt +0 -40
  33. data/doc/release_notes/4.30.0.txt +0 -37
  34. data/doc/release_notes/4.31.0.txt +0 -57
  35. data/doc/release_notes/4.32.0.txt +0 -132
  36. data/doc/release_notes/4.33.0.txt +0 -88
  37. data/doc/release_notes/4.34.0.txt +0 -86
  38. data/doc/release_notes/4.35.0.txt +0 -130
  39. data/doc/release_notes/4.36.0.txt +0 -116
  40. data/doc/release_notes/4.37.0.txt +0 -50
  41. data/doc/release_notes/4.38.0.txt +0 -67
  42. data/doc/release_notes/4.39.0.txt +0 -127
  43. data/doc/release_notes/4.4.0.txt +0 -92
  44. data/doc/release_notes/4.40.0.txt +0 -179
  45. data/doc/release_notes/4.41.0.txt +0 -77
  46. data/doc/release_notes/4.42.0.txt +0 -221
  47. data/doc/release_notes/4.43.0.txt +0 -87
  48. data/doc/release_notes/4.44.0.txt +0 -125
  49. data/doc/release_notes/4.45.0.txt +0 -370
  50. data/doc/release_notes/4.46.0.txt +0 -404
  51. data/doc/release_notes/4.47.0.txt +0 -56
  52. data/doc/release_notes/4.48.0.txt +0 -293
  53. data/doc/release_notes/4.49.0.txt +0 -222
  54. data/doc/release_notes/4.5.0.txt +0 -34
  55. data/doc/release_notes/4.6.0.txt +0 -30
  56. data/doc/release_notes/4.7.0.txt +0 -103
  57. data/doc/release_notes/4.8.0.txt +0 -175
  58. data/doc/release_notes/4.9.0.txt +0 -190
  59. data/spec/adapter_spec.rb +0 -4
  60. data/spec/adapters/db2_spec.rb +0 -170
  61. data/spec/adapters/mssql_spec.rb +0 -828
  62. data/spec/adapters/mysql_spec.rb +0 -1060
  63. data/spec/adapters/oracle_spec.rb +0 -371
  64. data/spec/adapters/postgres_spec.rb +0 -4476
  65. data/spec/adapters/spec_helper.rb +0 -44
  66. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  67. data/spec/adapters/sqlite_spec.rb +0 -652
  68. data/spec/bin_spec.rb +0 -278
  69. data/spec/core/connection_pool_spec.rb +0 -1250
  70. data/spec/core/database_spec.rb +0 -2915
  71. data/spec/core/dataset_spec.rb +0 -5544
  72. data/spec/core/deprecated_spec.rb +0 -70
  73. data/spec/core/expression_filters_spec.rb +0 -1498
  74. data/spec/core/mock_adapter_spec.rb +0 -722
  75. data/spec/core/object_graph_spec.rb +0 -336
  76. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  77. data/spec/core/schema_generator_spec.rb +0 -214
  78. data/spec/core/schema_spec.rb +0 -1844
  79. data/spec/core/spec_helper.rb +0 -24
  80. data/spec/core/version_spec.rb +0 -14
  81. data/spec/core_extensions_spec.rb +0 -763
  82. data/spec/core_model_spec.rb +0 -2
  83. data/spec/core_spec.rb +0 -1
  84. data/spec/deprecation_helper.rb +0 -30
  85. data/spec/extensions/accessed_columns_spec.rb +0 -51
  86. data/spec/extensions/active_model_spec.rb +0 -99
  87. data/spec/extensions/after_initialize_spec.rb +0 -28
  88. data/spec/extensions/any_not_empty_spec.rb +0 -23
  89. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  90. data/spec/extensions/association_dependencies_spec.rb +0 -125
  91. data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  92. data/spec/extensions/association_pks_spec.rb +0 -423
  93. data/spec/extensions/association_proxies_spec.rb +0 -100
  94. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  95. data/spec/extensions/auto_validations_spec.rb +0 -229
  96. data/spec/extensions/blacklist_security_spec.rb +0 -95
  97. data/spec/extensions/blank_spec.rb +0 -69
  98. data/spec/extensions/boolean_readers_spec.rb +0 -93
  99. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  100. data/spec/extensions/caching_spec.rb +0 -273
  101. data/spec/extensions/caller_logging_spec.rb +0 -52
  102. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  103. data/spec/extensions/column_conflicts_spec.rb +0 -75
  104. data/spec/extensions/column_select_spec.rb +0 -129
  105. data/spec/extensions/columns_introspection_spec.rb +0 -90
  106. data/spec/extensions/columns_updated_spec.rb +0 -35
  107. data/spec/extensions/composition_spec.rb +0 -248
  108. data/spec/extensions/connection_expiration_spec.rb +0 -151
  109. data/spec/extensions/connection_validator_spec.rb +0 -144
  110. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  111. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  112. data/spec/extensions/constraint_validations_spec.rb +0 -439
  113. data/spec/extensions/core_refinements_spec.rb +0 -528
  114. data/spec/extensions/csv_serializer_spec.rb +0 -183
  115. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  116. data/spec/extensions/dataset_associations_spec.rb +0 -365
  117. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  118. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  119. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  120. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  121. data/spec/extensions/defaults_setter_spec.rb +0 -150
  122. data/spec/extensions/delay_add_association_spec.rb +0 -73
  123. data/spec/extensions/dirty_spec.rb +0 -222
  124. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  125. data/spec/extensions/eager_each_spec.rb +0 -62
  126. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  127. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  128. data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
  129. data/spec/extensions/error_splitter_spec.rb +0 -18
  130. data/spec/extensions/error_sql_spec.rb +0 -20
  131. data/spec/extensions/escaped_like_spec.rb +0 -40
  132. data/spec/extensions/eval_inspect_spec.rb +0 -81
  133. data/spec/extensions/exclude_or_null_spec.rb +0 -15
  134. data/spec/extensions/finder_spec.rb +0 -260
  135. data/spec/extensions/force_encoding_spec.rb +0 -126
  136. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  137. data/spec/extensions/graph_each_spec.rb +0 -113
  138. data/spec/extensions/hook_class_methods_spec.rb +0 -402
  139. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  140. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  141. data/spec/extensions/index_caching_spec.rb +0 -66
  142. data/spec/extensions/inflector_spec.rb +0 -183
  143. data/spec/extensions/input_transformer_spec.rb +0 -69
  144. data/spec/extensions/insert_conflict_spec.rb +0 -103
  145. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  146. data/spec/extensions/instance_filters_spec.rb +0 -79
  147. data/spec/extensions/instance_hooks_spec.rb +0 -246
  148. data/spec/extensions/integer64_spec.rb +0 -22
  149. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  150. data/spec/extensions/json_serializer_spec.rb +0 -346
  151. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  152. data/spec/extensions/list_spec.rb +0 -291
  153. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  154. data/spec/extensions/many_through_many_spec.rb +0 -2177
  155. data/spec/extensions/migration_spec.rb +0 -864
  156. data/spec/extensions/modification_detection_spec.rb +0 -93
  157. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  158. data/spec/extensions/named_timezones_spec.rb +0 -218
  159. data/spec/extensions/nested_attributes_spec.rb +0 -815
  160. data/spec/extensions/null_dataset_spec.rb +0 -85
  161. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  162. data/spec/extensions/pagination_spec.rb +0 -116
  163. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  164. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  165. data/spec/extensions/pg_array_spec.rb +0 -398
  166. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  167. data/spec/extensions/pg_enum_spec.rb +0 -118
  168. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  169. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  170. data/spec/extensions/pg_hstore_spec.rb +0 -219
  171. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  172. data/spec/extensions/pg_inet_spec.rb +0 -72
  173. data/spec/extensions/pg_interval_spec.rb +0 -103
  174. data/spec/extensions/pg_json_ops_spec.rb +0 -356
  175. data/spec/extensions/pg_json_spec.rb +0 -451
  176. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  177. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  178. data/spec/extensions/pg_range_spec.rb +0 -600
  179. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  180. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  181. data/spec/extensions/pg_row_spec.rb +0 -363
  182. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  183. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  184. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  185. data/spec/extensions/prepared_statements_spec.rb +0 -177
  186. data/spec/extensions/pretty_table_spec.rb +0 -123
  187. data/spec/extensions/query_spec.rb +0 -94
  188. data/spec/extensions/rcte_tree_spec.rb +0 -387
  189. data/spec/extensions/round_timestamps_spec.rb +0 -39
  190. data/spec/extensions/s_spec.rb +0 -60
  191. data/spec/extensions/schema_caching_spec.rb +0 -64
  192. data/spec/extensions/schema_dumper_spec.rb +0 -870
  193. data/spec/extensions/select_remove_spec.rb +0 -38
  194. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  195. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  196. data/spec/extensions/serialization_spec.rb +0 -365
  197. data/spec/extensions/server_block_spec.rb +0 -135
  198. data/spec/extensions/server_logging_spec.rb +0 -45
  199. data/spec/extensions/sharding_spec.rb +0 -197
  200. data/spec/extensions/shared_caching_spec.rb +0 -151
  201. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  202. data/spec/extensions/singular_table_names_spec.rb +0 -22
  203. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  204. data/spec/extensions/spec_helper.rb +0 -70
  205. data/spec/extensions/split_array_nil_spec.rb +0 -24
  206. data/spec/extensions/split_values_spec.rb +0 -57
  207. data/spec/extensions/sql_comments_spec.rb +0 -33
  208. data/spec/extensions/sql_expr_spec.rb +0 -59
  209. data/spec/extensions/static_cache_cache_spec.rb +0 -35
  210. data/spec/extensions/static_cache_spec.rb +0 -471
  211. data/spec/extensions/string_agg_spec.rb +0 -90
  212. data/spec/extensions/string_date_time_spec.rb +0 -95
  213. data/spec/extensions/string_stripper_spec.rb +0 -68
  214. data/spec/extensions/subclasses_spec.rb +0 -79
  215. data/spec/extensions/subset_conditions_spec.rb +0 -38
  216. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  217. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  218. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  219. data/spec/extensions/table_select_spec.rb +0 -83
  220. data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  221. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  222. data/spec/extensions/throw_failures_spec.rb +0 -74
  223. data/spec/extensions/timestamps_spec.rb +0 -209
  224. data/spec/extensions/to_dot_spec.rb +0 -153
  225. data/spec/extensions/touch_spec.rb +0 -226
  226. data/spec/extensions/tree_spec.rb +0 -334
  227. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  228. data/spec/extensions/unlimited_update_spec.rb +0 -21
  229. data/spec/extensions/update_or_create_spec.rb +0 -83
  230. data/spec/extensions/update_primary_key_spec.rb +0 -105
  231. data/spec/extensions/update_refresh_spec.rb +0 -59
  232. data/spec/extensions/uuid_spec.rb +0 -101
  233. data/spec/extensions/validate_associated_spec.rb +0 -52
  234. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  235. data/spec/extensions/validation_contexts_spec.rb +0 -31
  236. data/spec/extensions/validation_helpers_spec.rb +0 -525
  237. data/spec/extensions/whitelist_security_spec.rb +0 -157
  238. data/spec/extensions/xml_serializer_spec.rb +0 -213
  239. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  240. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  241. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  242. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  243. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  244. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  245. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  246. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  247. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  248. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  249. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  250. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  251. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  252. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  253. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  254. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  255. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  256. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  257. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  258. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  259. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  260. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  261. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  262. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  263. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  264. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  265. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  266. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  267. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  268. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  269. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  270. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  271. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  272. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  273. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  274. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  275. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  276. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  277. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  278. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  279. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  280. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  281. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  282. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  283. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  284. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  285. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  286. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  287. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  288. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  289. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  290. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  291. data/spec/guards_helper.rb +0 -59
  292. data/spec/integration/associations_test.rb +0 -2597
  293. data/spec/integration/database_test.rb +0 -113
  294. data/spec/integration/dataset_test.rb +0 -2037
  295. data/spec/integration/eager_loader_test.rb +0 -687
  296. data/spec/integration/migrator_test.rb +0 -262
  297. data/spec/integration/model_test.rb +0 -203
  298. data/spec/integration/plugin_test.rb +0 -2423
  299. data/spec/integration/prepared_statement_test.rb +0 -405
  300. data/spec/integration/schema_test.rb +0 -903
  301. data/spec/integration/spec_helper.rb +0 -71
  302. data/spec/integration/timezone_test.rb +0 -86
  303. data/spec/integration/transaction_test.rb +0 -603
  304. data/spec/integration/type_test.rb +0 -127
  305. data/spec/model/association_reflection_spec.rb +0 -803
  306. data/spec/model/associations_spec.rb +0 -4738
  307. data/spec/model/base_spec.rb +0 -875
  308. data/spec/model/class_dataset_methods_spec.rb +0 -146
  309. data/spec/model/dataset_methods_spec.rb +0 -198
  310. data/spec/model/eager_loading_spec.rb +0 -2377
  311. data/spec/model/hooks_spec.rb +0 -370
  312. data/spec/model/inflector_spec.rb +0 -26
  313. data/spec/model/model_spec.rb +0 -956
  314. data/spec/model/plugins_spec.rb +0 -429
  315. data/spec/model/record_spec.rb +0 -2118
  316. data/spec/model/spec_helper.rb +0 -46
  317. data/spec/model/validations_spec.rb +0 -220
  318. data/spec/model_no_assoc_spec.rb +0 -1
  319. data/spec/model_spec.rb +0 -1
  320. data/spec/plugin_spec.rb +0 -1
  321. data/spec/sequel_coverage.rb +0 -15
  322. data/spec/sequel_warning.rb +0 -5
  323. data/spec/spec_config.rb +0 -12
@@ -1,262 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- Sequel.extension :migration
4
- describe Sequel::Migrator do
5
- before do
6
- @db = DB
7
- @m = Sequel::Migrator
8
- end
9
- after do
10
- @db.drop_table?(:schema_info, :schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333, :sm11111, :sm22222, :a, :b, :c, :d)
11
- end
12
-
13
- it "should be able to migrate up and down all the way successfully" do
14
- @dir = 'spec/files/integer_migrations'
15
- @m.apply(@db, @dir)
16
- [:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
17
- @db[:schema_info].get(:version).must_equal 3
18
- @m.apply(@db, @dir, 0)
19
- [:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
20
- @db[:schema_info].get(:version).must_equal 0
21
- end
22
-
23
- it "should be able to migrate up and down to specific versions successfully" do
24
- @dir = 'spec/files/integer_migrations'
25
- @m.apply(@db, @dir, 2)
26
- [:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
27
- @db.table_exists?(:sm3333).must_equal false
28
- @db[:schema_info].get(:version).must_equal 2
29
- @m.apply(@db, @dir, 1)
30
- [:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
31
- @db.table_exists?(:sm1111).must_equal true
32
- @db[:schema_info].get(:version).must_equal 1
33
- end
34
-
35
- it "should correctly set migration version to the last successful migration if the migration raises an error when migrating up" do
36
- @dir = 'spec/files/bad_up_migration'
37
- proc{@m.apply(@db, @dir)}.must_raise Sequel::DatabaseError
38
- [:schema_info, :sm11111].each{|n| @db.table_exists?(n).must_equal true}
39
- @db.table_exists?(:sm22222).must_equal false
40
- @db[:schema_info].get(:version).must_equal 1
41
- @m.apply(@db, @dir, 0)
42
- [:sm11111, :sm22222].each{|n| @db.table_exists?(n).must_equal false}
43
- @db[:schema_info].get(:version).must_equal 0
44
- end
45
-
46
- it "should correctly set migration version to the last successful migration if the migration raises an error when migrating down" do
47
- @dir = 'spec/files/bad_down_migration'
48
- @m.apply(@db, @dir)
49
- [:schema_info, :sm11111, :sm22222].each{|n| @db.table_exists?(n).must_equal true}
50
- @db[:schema_info].get(:version).must_equal 2
51
- proc{@m.apply(@db, @dir, 0)}.must_raise Sequel::DatabaseError
52
- [:sm22222].each{|n| @db.table_exists?(n).must_equal false}
53
- @db.table_exists?(:sm11111).must_equal true
54
- @db[:schema_info].get(:version).must_equal 1
55
- end
56
-
57
- it "should handle migrating up or down all the way with timestamped migrations" do
58
- @dir = 'spec/files/timestamped_migrations'
59
- @m.apply(@db, @dir)
60
- [:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
61
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb 1273253853_3_create_users.rb'
62
- @m.apply(@db, @dir, 0)
63
- [:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
64
- @db[:schema_migrations].select_order_map(:filename).must_equal []
65
- end
66
-
67
- it "should handle migrating up or down to specific timestamps with timestamped migrations" do
68
- @dir = 'spec/files/timestamped_migrations'
69
- @m.apply(@db, @dir, 1273253851)
70
- [:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
71
- @db.table_exists?(:sm3333).must_equal false
72
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
73
- @m.apply(@db, @dir, 1273253849)
74
- [:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
75
- @db.table_exists?(:sm1111).must_equal true
76
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
77
- end
78
-
79
- it "should apply all missing files when migrating up with timestamped migrations" do
80
- @dir = 'spec/files/timestamped_migrations'
81
- @m.apply(@db, @dir)
82
- @dir = 'spec/files/interleaved_timestamped_migrations'
83
- @m.apply(@db, @dir)
84
- [:schema_migrations, :sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
85
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb 1273253852_create_albums.rb 1273253853_3_create_users.rb'
86
- end
87
-
88
- it "should not apply down action to migrations where up action hasn't been applied" do
89
- @dir = 'spec/files/timestamped_migrations'
90
- @m.apply(@db, @dir)
91
- @dir = 'spec/files/interleaved_timestamped_migrations'
92
- @m.apply(@db, @dir, 0)
93
- [:sm1111, :sm1122, :sm2222, :sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
94
- @db[:schema_migrations].select_order_map(:filename).must_equal []
95
- end
96
-
97
- it "should handle updating to a specific timestamp when interleaving migrations with timestamps" do
98
- @dir = 'spec/files/timestamped_migrations'
99
- @m.apply(@db, @dir)
100
- @dir = 'spec/files/interleaved_timestamped_migrations'
101
- @m.apply(@db, @dir, 1273253851)
102
- [:schema_migrations, :sm1111, :sm1122, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
103
- [:sm2233, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
104
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253850_create_artists.rb 1273253851_create_nodes.rb'
105
- end
106
-
107
- it "should correctly update schema_migrations table when an error occurs when migrating up or down using timestamped migrations" do
108
- @dir = 'spec/files/bad_timestamped_migrations'
109
- proc{@m.apply(@db, @dir)}.must_raise Sequel::DatabaseError
110
- [:schema_migrations, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
111
- @db.table_exists?(:sm3333).must_equal false
112
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253851_create_nodes.rb'
113
- proc{@m.apply(@db, @dir, 0)}.must_raise Sequel::DatabaseError
114
- [:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
115
- @db.table_exists?(:sm1111).must_equal true
116
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
117
- end
118
-
119
- it "should handle multiple migrations with the same timestamp correctly" do
120
- @dir = 'spec/files/duplicate_timestamped_migrations'
121
- @m.apply(@db, @dir)
122
- [:schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
123
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
124
- @m.apply(@db, @dir, 1273253853)
125
- [:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
126
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb 1273253853_create_nodes.rb 1273253853_create_users.rb'
127
- @m.apply(@db, @dir, 1273253849)
128
- [:sm1111].each{|n| @db.table_exists?(n).must_equal true}
129
- [:sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
130
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'1273253849_create_sessions.rb'
131
- @m.apply(@db, @dir, 1273253848)
132
- [:sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal false}
133
- @db[:schema_migrations].select_order_map(:filename).must_equal []
134
- end
135
-
136
- it "should convert schema_info table to schema_migrations table" do
137
- @dir = 'spec/files/integer_migrations'
138
- @m.apply(@db, @dir)
139
- [:schema_info, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
140
- [:schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
141
-
142
- @dir = 'spec/files/convert_to_timestamp_migrations'
143
- @m.apply(@db, @dir)
144
- [:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal true}
145
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
146
-
147
- @m.apply(@db, @dir, 4)
148
- [:schema_info, :schema_migrations, :sm1111, :sm2222, :sm3333].each{|n| @db.table_exists?(n).must_equal true}
149
- [:sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
150
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb'
151
-
152
- @m.apply(@db, @dir, 0)
153
- [:schema_info, :schema_migrations].each{|n| @db.table_exists?(n).must_equal true}
154
- [:sm1111, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
155
- @db[:schema_migrations].select_order_map(:filename).must_equal []
156
- end
157
-
158
- it "should handle unapplied migrations when migrating schema_info table to schema_migrations table" do
159
- @dir = 'spec/files/integer_migrations'
160
- @m.apply(@db, @dir, 2)
161
- [:schema_info, :sm1111, :sm2222].each{|n| @db.table_exists?(n).must_equal true}
162
- [:schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
163
-
164
- @dir = 'spec/files/convert_to_timestamp_migrations'
165
- @m.apply(@db, @dir, 1273253850)
166
- [:schema_info, :sm1111, :sm2222, :sm3333, :schema_migrations, :sm1122].each{|n| @db.table_exists?(n).must_equal true}
167
- [:sm2233].each{|n| @db.table_exists?(n).must_equal false}
168
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb'
169
- end
170
-
171
- it "should handle unapplied migrations when migrating schema_info table to schema_migrations table and target is less than last integer migration version" do
172
- @dir = 'spec/files/integer_migrations'
173
- @m.apply(@db, @dir, 1)
174
- [:schema_info, :sm1111].each{|n| @db.table_exists?(n).must_equal true}
175
- [:schema_migrations, :sm2222, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
176
-
177
- @dir = 'spec/files/convert_to_timestamp_migrations'
178
- @m.apply(@db, @dir, 2)
179
- [:schema_info, :sm1111, :sm2222, :schema_migrations].each{|n| @db.table_exists?(n).must_equal true}
180
- [:sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal false}
181
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb'
182
-
183
- @m.apply(@db, @dir)
184
- [:schema_info, :sm1111, :sm2222, :schema_migrations, :sm3333, :sm1122, :sm2233].each{|n| @db.table_exists?(n).must_equal true}
185
- @db[:schema_migrations].select_order_map(:filename).must_equal %w'001_create_sessions.rb 002_create_nodes.rb 003_3_create_users.rb 1273253850_create_artists.rb 1273253852_create_albums.rb'
186
- end
187
-
188
- it "should handle reversible migrations" do
189
- @dir = 'spec/files/reversible_migrations'
190
- @db.drop_table?(:a, :b)
191
- @m.apply(@db, @dir, 1)
192
- [:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
193
- [:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
194
- @db[:a].columns.must_equal [:a]
195
-
196
- @m.apply(@db, @dir, 2)
197
- [:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
198
- [:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
199
- @db[:a].columns.must_equal [:a, :b]
200
-
201
- @m.apply(@db, @dir, 3)
202
- [:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
203
- [:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
204
- @db[:a].columns.must_equal [:a, :c]
205
-
206
- @m.apply(@db, @dir, 4)
207
- [:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
208
- [:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
209
- @db[:b].columns.must_equal [:a, :c]
210
-
211
- @m.apply(@db, @dir, 5)
212
- [:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
213
- [:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
214
- @db[:b].columns.must_equal [:a, :c, :e]
215
-
216
- if @db.supports_foreign_key_parsing?
217
- @m.apply(@db, @dir, 6)
218
- [:schema_info, :b, :c].each{|n| @db.table_exists?(n).must_equal true}
219
- [:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
220
- @db[:b].columns.must_equal [:a, :c, :e, :f]
221
-
222
- @m.apply(@db, @dir, 7)
223
- [:schema_info, :b, :c, :d].each{|n| @db.table_exists?(n).must_equal true}
224
- [:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
225
- @db[:b].columns.must_equal [:a, :c, :e, :f, :g]
226
-
227
- @m.apply(@db, @dir, 6)
228
- [:schema_info, :b, :c].each{|n| @db.table_exists?(n).must_equal true}
229
- [:schema_migrations, :a, :d].each{|n| @db.table_exists?(n).must_equal false}
230
- @db[:b].columns.must_equal [:a, :c, :e, :f]
231
- end
232
-
233
- @m.apply(@db, @dir, 5)
234
- [:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
235
- [:schema_migrations, :a, :c].each{|n| @db.table_exists?(n).must_equal false}
236
- @db[:b].columns.must_equal [:a, :c, :e]
237
-
238
- @m.apply(@db, @dir, 4)
239
- [:schema_info, :b].each{|n| @db.table_exists?(n).must_equal true}
240
- [:schema_migrations, :a].each{|n| @db.table_exists?(n).must_equal false}
241
- @db[:b].columns.must_equal [:a, :c]
242
-
243
- @m.apply(@db, @dir, 3)
244
- [:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
245
- [:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
246
- @db[:a].columns.must_equal [:a, :c]
247
-
248
- @m.apply(@db, @dir, 2)
249
- [:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
250
- [:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
251
- @db[:a].columns.must_equal [:a, :b]
252
-
253
- @m.apply(@db, @dir, 1)
254
- [:schema_info, :a].each{|n| @db.table_exists?(n).must_equal true}
255
- [:schema_migrations, :b].each{|n| @db.table_exists?(n).must_equal false}
256
- @db[:a].columns.must_equal [:a]
257
-
258
- @m.apply(@db, @dir, 0)
259
- [:schema_info].each{|n| @db.table_exists?(n).must_equal true}
260
- [:schema_migrations, :a, :b].each{|n| @db.table_exists?(n).must_equal false}
261
- end
262
- end
@@ -1,203 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "Sequel::Model basic support" do
4
- before do
5
- @db = DB
6
- @db.create_table!(:items, :engine=>:InnoDB) do
7
- primary_key :id
8
- String :name
9
- end
10
- class ::Item < Sequel::Model(@db)
11
- end
12
- end
13
- after do
14
- @db.drop_table?(:items)
15
- Object.send(:remove_const, :Item)
16
- end
17
-
18
- it ".find should return first matching item" do
19
- Item.all.must_equal []
20
- Item.find(:name=>'J').must_be_nil
21
- Item.create(:name=>'J')
22
- Item.find(:name=>'J').must_equal Item.load(:id=>1, :name=>'J')
23
- end
24
-
25
- it ".finder should create method that returns first matching item" do
26
- def Item.by_name(name) where(:name=>name) end
27
- Item.plugin :finder
28
- Item.finder :by_name
29
- Item.first_by_name('J').must_be_nil
30
- Item.create(:name=>'J')
31
- Item.first_by_name('J').must_equal Item.load(:id=>1, :name=>'J')
32
- Item.first_by_name(['J', 'K']).must_equal Item.load(:id=>1, :name=>'J')
33
- end
34
-
35
- it ".prepared_finder should create method that returns first matching item" do
36
- def Item.by_name(name) where(:name=>name) end
37
- Item.plugin :finder
38
- Item.prepared_finder :by_name
39
- Item.first_by_name('J').must_be_nil
40
- Item.create(:name=>'J')
41
- Item.first_by_name('J').must_equal Item.load(:id=>1, :name=>'J')
42
- end
43
-
44
- it ".find_or_create should return first matching item, or create it if it doesn't exist" do
45
- Item.all.must_equal []
46
- Item.find_or_create(:name=>'J').must_equal Item.load(:id=>1, :name=>'J')
47
- Item.all.must_equal [Item.load(:id=>1, :name=>'J')]
48
- Item.find_or_create(:name=>'J').must_equal Item.load(:id=>1, :name=>'J')
49
- Item.all.must_equal [Item.load(:id=>1, :name=>'J')]
50
- end
51
-
52
- it "should raise an error if the implied database table doesn't exist" do
53
- proc do
54
- class ::Item::Thing < Sequel::Model
55
- end
56
- end.must_raise Sequel::Error
57
- end
58
-
59
- it "should not raise an error if the implied database table doesn't exist if require_valid_table is false" do
60
- c = Sequel::Model(@db)
61
- c.require_valid_table = false
62
- class ::Item::Thing < c
63
- set_dataset :items
64
- end
65
- Item.create(:name=>'J')
66
- Item::Thing.first.must_equal Item::Thing.load(:id=>1, :name=>'J')
67
- end
68
-
69
- it "should create accessors for all table columns even if all dataset columns aren't selected" do
70
- c = Class.new(Sequel::Model(@db[:items].select(:id)))
71
- o = c.new
72
- o.name = 'A'
73
- o.save.must_equal c.load(:id=>1)
74
- c.select_map(:name).must_equal ['A']
75
- end
76
-
77
- it "should work correctly when a dataset restricts the colums it selects" do
78
- class ::Item::Thing < Sequel::Model(@db[:items].select(:name))
79
- end
80
- Item.create(:name=>'J')
81
- Item::Thing.first.must_equal Item::Thing.load(:name=>'J')
82
- end
83
-
84
- it "#delete should delete items correctly" do
85
- i = Item.create(:name=>'J')
86
- Item.count.must_equal 1
87
- i.delete
88
- Item.count.must_equal 0
89
- end
90
-
91
- it "#save should return nil if raise_on_save_failure is false and save isn't successful" do
92
- i = Item.new(:name=>'J')
93
- i.use_transactions = true
94
- def i.after_save
95
- raise Sequel::Rollback
96
- end
97
- i.save.must_be_nil
98
- end
99
-
100
- it "#exists? should return whether the item is still in the database" do
101
- i = Item.create(:name=>'J')
102
- i.exists?.must_equal true
103
- Item.dataset.delete
104
- i.exists?.must_equal false
105
- end
106
-
107
- it "#save should only update specified columns when saving" do
108
- @db.create_table!(:items) do
109
- primary_key :id
110
- String :name
111
- Integer :num
112
- end
113
- Item.dataset = Item.dataset
114
- i = Item.create(:name=>'J', :num=>1)
115
- Item.all.must_equal [Item.load(:id=>1, :name=>'J', :num=>1)]
116
- i.set(:name=>'K', :num=>2)
117
- i.save(:columns=>:name)
118
- Item.all.must_equal [Item.load(:id=>1, :name=>'K', :num=>1)]
119
- i.set(:name=>'L')
120
- i.save(:columns=>:num)
121
- Item.all.must_equal [Item.load(:id=>1, :name=>'K', :num=>2)]
122
- end
123
-
124
- it "#save should check that the only a single row is modified, unless require_modification is false" do
125
- i = Item.create(:name=>'a')
126
- i.require_modification = true
127
- i.delete
128
- proc{i.save}.must_raise(Sequel::NoExistingObject)
129
- proc{i.delete}.must_raise(Sequel::NoExistingObject)
130
-
131
- i.require_modification = false
132
- i.save
133
- i.delete
134
- end
135
-
136
- it ".to_hash should return a hash keyed on primary key if no argument provided" do
137
- Item.create(:name=>'J')
138
- Item.to_hash.must_equal(1=>Item.load(:id=>1, :name=>'J'))
139
- end
140
-
141
- it ".to_hash should return a hash keyed on argument if one argument provided" do
142
- Item.create(:name=>'J')
143
- Item.to_hash(:name).must_equal('J'=>Item.load(:id=>1, :name=>'J'))
144
- end
145
-
146
- it "should be marshallable before and after saving if marshallable! is called" do
147
- i = Item.new(:name=>'J')
148
- s = nil
149
- i2 = nil
150
- i.marshallable!
151
- s = Marshal.dump(i)
152
- i2 = Marshal.load(s)
153
- i2.must_equal i
154
-
155
- i.save
156
- i.marshallable!
157
- s = Marshal.dump(i)
158
- i2 = Marshal.load(s)
159
- i2.must_equal i
160
-
161
- i.save
162
- i.marshallable!
163
- s = Marshal.dump(i)
164
- i2 = Marshal.load(s)
165
- i2.must_equal i
166
- end
167
-
168
- it "#lock! should lock records" do
169
- Item.db.transaction do
170
- i = Item.create(:name=>'J')
171
- i.lock!
172
- i.update(:name=>'K')
173
- end
174
- end
175
- end
176
-
177
- describe "Sequel::Model with no existing table" do
178
- it "should not raise an error when setting the dataset" do
179
- db = DB
180
- db.drop_table?(:items)
181
- c = Class.new(Sequel::Model)
182
- proc{c.set_dataset(db[:items])}.must_raise Sequel::Error
183
- db.transaction do
184
- c = Class.new(Sequel::Model)
185
- proc{c.dataset = db[:items]}.must_raise Sequel::Error
186
- db.get(Sequel.cast(1, Integer)).must_equal 1
187
- end
188
- end
189
-
190
- it "should not raise an error when setting the dataset when require_valid_table is false" do
191
- db = DB
192
- db.drop_table?(:items)
193
- c = Class.new(Sequel::Model)
194
- c.require_valid_table = false
195
- c.set_dataset(db[:items])
196
- db.transaction do
197
- c = Class.new(Sequel::Model)
198
- c.require_valid_table = false
199
- c.dataset = db[:items]
200
- db.get(Sequel.cast(1, Integer)).must_equal 1
201
- end
202
- end
203
- end