sequel 4.26.0 → 5.37.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 (692) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +405 -5656
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +232 -157
  5. data/bin/sequel +32 -9
  6. data/doc/advanced_associations.rdoc +252 -188
  7. data/doc/association_basics.rdoc +231 -273
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +75 -48
  10. data/doc/code_order.rdoc +28 -10
  11. data/doc/core_extensions.rdoc +104 -63
  12. data/doc/dataset_basics.rdoc +12 -21
  13. data/doc/dataset_filtering.rdoc +99 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +74 -31
  16. data/doc/migration.rdoc +72 -46
  17. data/doc/model_dataset_method_design.rdoc +129 -0
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +12 -12
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +59 -69
  22. data/doc/opening_databases.rdoc +84 -94
  23. data/doc/postgresql.rdoc +268 -38
  24. data/doc/prepared_statements.rdoc +29 -24
  25. data/doc/querying.rdoc +184 -164
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/release_notes/5.1.0.txt +31 -0
  29. data/doc/release_notes/5.10.0.txt +84 -0
  30. data/doc/release_notes/5.11.0.txt +83 -0
  31. data/doc/release_notes/5.12.0.txt +141 -0
  32. data/doc/release_notes/5.13.0.txt +27 -0
  33. data/doc/release_notes/5.14.0.txt +63 -0
  34. data/doc/release_notes/5.15.0.txt +39 -0
  35. data/doc/release_notes/5.16.0.txt +110 -0
  36. data/doc/release_notes/5.17.0.txt +31 -0
  37. data/doc/release_notes/5.18.0.txt +69 -0
  38. data/doc/release_notes/5.19.0.txt +28 -0
  39. data/doc/release_notes/5.2.0.txt +33 -0
  40. data/doc/release_notes/5.20.0.txt +89 -0
  41. data/doc/release_notes/5.21.0.txt +87 -0
  42. data/doc/release_notes/5.22.0.txt +48 -0
  43. data/doc/release_notes/5.23.0.txt +56 -0
  44. data/doc/release_notes/5.24.0.txt +56 -0
  45. data/doc/release_notes/5.25.0.txt +32 -0
  46. data/doc/release_notes/5.26.0.txt +35 -0
  47. data/doc/release_notes/5.27.0.txt +21 -0
  48. data/doc/release_notes/5.28.0.txt +16 -0
  49. data/doc/release_notes/5.29.0.txt +22 -0
  50. data/doc/release_notes/5.3.0.txt +121 -0
  51. data/doc/release_notes/5.30.0.txt +20 -0
  52. data/doc/release_notes/5.31.0.txt +148 -0
  53. data/doc/release_notes/5.32.0.txt +46 -0
  54. data/doc/release_notes/5.33.0.txt +24 -0
  55. data/doc/release_notes/5.34.0.txt +40 -0
  56. data/doc/release_notes/5.35.0.txt +56 -0
  57. data/doc/release_notes/5.36.0.txt +60 -0
  58. data/doc/release_notes/5.37.0.txt +30 -0
  59. data/doc/release_notes/5.4.0.txt +80 -0
  60. data/doc/release_notes/5.5.0.txt +61 -0
  61. data/doc/release_notes/5.6.0.txt +31 -0
  62. data/doc/release_notes/5.7.0.txt +108 -0
  63. data/doc/release_notes/5.8.0.txt +170 -0
  64. data/doc/release_notes/5.9.0.txt +99 -0
  65. data/doc/schema_modification.rdoc +102 -77
  66. data/doc/security.rdoc +160 -87
  67. data/doc/sharding.rdoc +74 -47
  68. data/doc/sql.rdoc +135 -122
  69. data/doc/testing.rdoc +34 -18
  70. data/doc/thread_safety.rdoc +2 -4
  71. data/doc/transactions.rdoc +101 -19
  72. data/doc/validations.rdoc +64 -51
  73. data/doc/virtual_rows.rdoc +90 -109
  74. data/lib/sequel.rb +3 -1
  75. data/lib/sequel/adapters/ado.rb +154 -22
  76. data/lib/sequel/adapters/ado/access.rb +21 -21
  77. data/lib/sequel/adapters/ado/mssql.rb +8 -15
  78. data/lib/sequel/adapters/amalgalite.rb +17 -25
  79. data/lib/sequel/adapters/ibmdb.rb +52 -58
  80. data/lib/sequel/adapters/jdbc.rb +149 -127
  81. data/lib/sequel/adapters/jdbc/db2.rb +32 -40
  82. data/lib/sequel/adapters/jdbc/derby.rb +56 -58
  83. data/lib/sequel/adapters/jdbc/h2.rb +40 -30
  84. data/lib/sequel/adapters/jdbc/hsqldb.rb +22 -33
  85. data/lib/sequel/adapters/jdbc/jtds.rb +4 -10
  86. data/lib/sequel/adapters/jdbc/mssql.rb +6 -12
  87. data/lib/sequel/adapters/jdbc/mysql.rb +17 -18
  88. data/lib/sequel/adapters/jdbc/oracle.rb +25 -19
  89. data/lib/sequel/adapters/jdbc/postgresql.rb +90 -69
  90. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +14 -24
  91. data/lib/sequel/adapters/jdbc/sqlite.rb +50 -12
  92. data/lib/sequel/adapters/jdbc/sqlserver.rb +36 -9
  93. data/lib/sequel/adapters/jdbc/transactions.rb +25 -39
  94. data/lib/sequel/adapters/mock.rb +104 -113
  95. data/lib/sequel/adapters/mysql.rb +42 -61
  96. data/lib/sequel/adapters/mysql2.rb +126 -35
  97. data/lib/sequel/adapters/odbc.rb +21 -28
  98. data/lib/sequel/adapters/odbc/db2.rb +3 -1
  99. data/lib/sequel/adapters/odbc/mssql.rb +11 -15
  100. data/lib/sequel/adapters/odbc/oracle.rb +11 -0
  101. data/lib/sequel/adapters/oracle.rb +62 -68
  102. data/lib/sequel/adapters/postgres.rb +257 -311
  103. data/lib/sequel/adapters/postgresql.rb +3 -1
  104. data/lib/sequel/adapters/shared/access.rb +75 -79
  105. data/lib/sequel/adapters/shared/db2.rb +96 -74
  106. data/lib/sequel/adapters/shared/mssql.rb +258 -213
  107. data/lib/sequel/adapters/shared/mysql.rb +284 -216
  108. data/lib/sequel/adapters/shared/oracle.rb +175 -60
  109. data/lib/sequel/adapters/shared/postgres.rb +829 -383
  110. data/lib/sequel/adapters/shared/sqlanywhere.rb +105 -127
  111. data/lib/sequel/adapters/shared/sqlite.rb +382 -159
  112. data/lib/sequel/adapters/sqlanywhere.rb +53 -38
  113. data/lib/sequel/adapters/sqlite.rb +111 -105
  114. data/lib/sequel/adapters/tinytds.rb +38 -46
  115. data/lib/sequel/adapters/utils/emulate_offset_with_reverse_and_count.rb +8 -9
  116. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +7 -5
  117. data/lib/sequel/adapters/utils/mysql_mysql2.rb +87 -0
  118. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +56 -0
  119. data/lib/sequel/adapters/utils/replace.rb +3 -4
  120. data/lib/sequel/adapters/utils/split_alter_table.rb +2 -0
  121. data/lib/sequel/adapters/utils/stored_procedures.rb +9 -22
  122. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +28 -0
  123. data/lib/sequel/ast_transformer.rb +13 -89
  124. data/lib/sequel/connection_pool.rb +54 -26
  125. data/lib/sequel/connection_pool/sharded_single.rb +19 -12
  126. data/lib/sequel/connection_pool/sharded_threaded.rb +160 -111
  127. data/lib/sequel/connection_pool/single.rb +21 -12
  128. data/lib/sequel/connection_pool/threaded.rb +137 -119
  129. data/lib/sequel/core.rb +352 -320
  130. data/lib/sequel/database.rb +19 -2
  131. data/lib/sequel/database/connecting.rb +70 -55
  132. data/lib/sequel/database/dataset.rb +15 -5
  133. data/lib/sequel/database/dataset_defaults.rb +20 -102
  134. data/lib/sequel/database/features.rb +20 -4
  135. data/lib/sequel/database/logging.rb +25 -7
  136. data/lib/sequel/database/misc.rb +132 -118
  137. data/lib/sequel/database/query.rb +51 -28
  138. data/lib/sequel/database/schema_generator.rb +188 -75
  139. data/lib/sequel/database/schema_methods.rb +161 -92
  140. data/lib/sequel/database/transactions.rb +260 -58
  141. data/lib/sequel/dataset.rb +28 -12
  142. data/lib/sequel/dataset/actions.rb +354 -170
  143. data/lib/sequel/dataset/dataset_module.rb +46 -0
  144. data/lib/sequel/dataset/features.rb +81 -34
  145. data/lib/sequel/dataset/graph.rb +82 -58
  146. data/lib/sequel/dataset/misc.rb +139 -47
  147. data/lib/sequel/dataset/placeholder_literalizer.rb +66 -26
  148. data/lib/sequel/dataset/prepared_statements.rb +188 -85
  149. data/lib/sequel/dataset/query.rb +428 -214
  150. data/lib/sequel/dataset/sql.rb +446 -339
  151. data/lib/sequel/deprecated.rb +14 -2
  152. data/lib/sequel/exceptions.rb +48 -16
  153. data/lib/sequel/extensions/_model_constraint_validations.rb +16 -0
  154. data/lib/sequel/extensions/_model_pg_row.rb +43 -0
  155. data/lib/sequel/extensions/_pretty_table.rb +10 -9
  156. data/lib/sequel/extensions/any_not_empty.rb +45 -0
  157. data/lib/sequel/extensions/arbitrary_servers.rb +15 -11
  158. data/lib/sequel/extensions/auto_literal_strings.rb +74 -0
  159. data/lib/sequel/extensions/blank.rb +2 -0
  160. data/lib/sequel/extensions/caller_logging.rb +79 -0
  161. data/lib/sequel/extensions/columns_introspection.rb +9 -4
  162. data/lib/sequel/extensions/connection_expiration.rb +99 -0
  163. data/lib/sequel/extensions/connection_validator.rb +26 -13
  164. data/lib/sequel/extensions/constant_sql_override.rb +65 -0
  165. data/lib/sequel/extensions/constraint_validations.rb +93 -38
  166. data/lib/sequel/extensions/core_extensions.rb +45 -53
  167. data/lib/sequel/extensions/core_refinements.rb +44 -46
  168. data/lib/sequel/extensions/current_datetime_timestamp.rb +5 -4
  169. data/lib/sequel/extensions/dataset_source_alias.rb +4 -0
  170. data/lib/sequel/extensions/date_arithmetic.rb +42 -16
  171. data/lib/sequel/extensions/datetime_parse_to_time.rb +37 -0
  172. data/lib/sequel/extensions/duplicate_columns_handler.rb +94 -0
  173. data/lib/sequel/extensions/empty_array_consider_nulls.rb +7 -3
  174. data/lib/sequel/extensions/error_sql.rb +7 -3
  175. data/lib/sequel/extensions/escaped_like.rb +100 -0
  176. data/lib/sequel/extensions/eval_inspect.rb +14 -15
  177. data/lib/sequel/extensions/exclude_or_null.rb +68 -0
  178. data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
  179. data/lib/sequel/extensions/freeze_datasets.rb +3 -0
  180. data/lib/sequel/extensions/from_block.rb +2 -31
  181. data/lib/sequel/extensions/graph_each.rb +19 -6
  182. data/lib/sequel/extensions/identifier_mangling.rb +180 -0
  183. data/lib/sequel/extensions/implicit_subquery.rb +48 -0
  184. data/lib/sequel/extensions/index_caching.rb +109 -0
  185. data/lib/sequel/extensions/inflector.rb +8 -4
  186. data/lib/sequel/extensions/integer64.rb +32 -0
  187. data/lib/sequel/extensions/looser_typecasting.rb +19 -9
  188. data/lib/sequel/extensions/migration.rb +132 -80
  189. data/lib/sequel/extensions/mssql_emulate_lateral_with_apply.rb +4 -0
  190. data/lib/sequel/extensions/named_timezones.rb +88 -23
  191. data/lib/sequel/extensions/no_auto_literal_strings.rb +4 -0
  192. data/lib/sequel/extensions/null_dataset.rb +12 -8
  193. data/lib/sequel/extensions/pagination.rb +35 -28
  194. data/lib/sequel/extensions/pg_array.rb +227 -316
  195. data/lib/sequel/extensions/pg_array_ops.rb +19 -7
  196. data/lib/sequel/extensions/pg_enum.rb +69 -24
  197. data/lib/sequel/extensions/pg_extended_date_support.rb +250 -0
  198. data/lib/sequel/extensions/pg_hstore.rb +50 -59
  199. data/lib/sequel/extensions/pg_hstore_ops.rb +9 -3
  200. data/lib/sequel/extensions/pg_inet.rb +34 -15
  201. data/lib/sequel/extensions/pg_inet_ops.rb +5 -1
  202. data/lib/sequel/extensions/pg_interval.rb +26 -26
  203. data/lib/sequel/extensions/pg_json.rb +422 -141
  204. data/lib/sequel/extensions/pg_json_ops.rb +248 -9
  205. data/lib/sequel/extensions/pg_loose_count.rb +5 -1
  206. data/lib/sequel/extensions/pg_range.rb +162 -146
  207. data/lib/sequel/extensions/pg_range_ops.rb +10 -5
  208. data/lib/sequel/extensions/pg_row.rb +53 -87
  209. data/lib/sequel/extensions/pg_row_ops.rb +36 -13
  210. data/lib/sequel/extensions/pg_static_cache_updater.rb +6 -2
  211. data/lib/sequel/extensions/pg_timestamptz.rb +28 -0
  212. data/lib/sequel/extensions/pretty_table.rb +4 -0
  213. data/lib/sequel/extensions/query.rb +12 -7
  214. data/lib/sequel/extensions/round_timestamps.rb +6 -9
  215. data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
  216. data/lib/sequel/extensions/s.rb +59 -0
  217. data/lib/sequel/extensions/schema_caching.rb +14 -1
  218. data/lib/sequel/extensions/schema_dumper.rb +83 -55
  219. data/lib/sequel/extensions/select_remove.rb +8 -4
  220. data/lib/sequel/extensions/sequel_4_dataset_methods.rb +85 -0
  221. data/lib/sequel/extensions/server_block.rb +50 -17
  222. data/lib/sequel/extensions/server_logging.rb +61 -0
  223. data/lib/sequel/extensions/split_array_nil.rb +8 -4
  224. data/lib/sequel/extensions/sql_comments.rb +96 -0
  225. data/lib/sequel/extensions/sql_expr.rb +4 -1
  226. data/lib/sequel/extensions/string_agg.rb +181 -0
  227. data/lib/sequel/extensions/string_date_time.rb +2 -0
  228. data/lib/sequel/extensions/symbol_aref.rb +53 -0
  229. data/lib/sequel/extensions/symbol_aref_refinement.rb +43 -0
  230. data/lib/sequel/extensions/symbol_as.rb +23 -0
  231. data/lib/sequel/extensions/symbol_as_refinement.rb +37 -0
  232. data/lib/sequel/extensions/synchronize_sql.rb +45 -0
  233. data/lib/sequel/extensions/thread_local_timezones.rb +4 -0
  234. data/lib/sequel/extensions/to_dot.rb +15 -5
  235. data/lib/sequel/extensions/virtual_row_method_block.rb +44 -0
  236. data/lib/sequel/model.rb +36 -126
  237. data/lib/sequel/model/associations.rb +850 -257
  238. data/lib/sequel/model/base.rb +652 -764
  239. data/lib/sequel/model/dataset_module.rb +13 -10
  240. data/lib/sequel/model/default_inflections.rb +3 -1
  241. data/lib/sequel/model/errors.rb +3 -3
  242. data/lib/sequel/model/exceptions.rb +12 -12
  243. data/lib/sequel/model/inflections.rb +8 -19
  244. data/lib/sequel/model/plugins.rb +111 -0
  245. data/lib/sequel/plugins/accessed_columns.rb +2 -0
  246. data/lib/sequel/plugins/active_model.rb +32 -7
  247. data/lib/sequel/plugins/after_initialize.rb +3 -1
  248. data/lib/sequel/plugins/association_dependencies.rb +27 -18
  249. data/lib/sequel/plugins/association_lazy_eager_option.rb +66 -0
  250. data/lib/sequel/plugins/association_multi_add_remove.rb +85 -0
  251. data/lib/sequel/plugins/association_pks.rb +181 -83
  252. data/lib/sequel/plugins/association_proxies.rb +33 -9
  253. data/lib/sequel/plugins/auto_validations.rb +58 -23
  254. data/lib/sequel/plugins/before_after_save.rb +8 -0
  255. data/lib/sequel/plugins/blacklist_security.rb +23 -12
  256. data/lib/sequel/plugins/boolean_readers.rb +9 -6
  257. data/lib/sequel/plugins/boolean_subsets.rb +64 -0
  258. data/lib/sequel/plugins/caching.rb +27 -16
  259. data/lib/sequel/plugins/class_table_inheritance.rb +192 -94
  260. data/lib/sequel/plugins/column_conflicts.rb +18 -3
  261. data/lib/sequel/plugins/column_select.rb +9 -5
  262. data/lib/sequel/plugins/columns_updated.rb +42 -0
  263. data/lib/sequel/plugins/composition.rb +36 -24
  264. data/lib/sequel/plugins/constraint_validations.rb +37 -16
  265. data/lib/sequel/plugins/csv_serializer.rb +58 -35
  266. data/lib/sequel/plugins/dataset_associations.rb +60 -18
  267. data/lib/sequel/plugins/def_dataset_method.rb +90 -0
  268. data/lib/sequel/plugins/defaults_setter.rb +74 -13
  269. data/lib/sequel/plugins/delay_add_association.rb +4 -1
  270. data/lib/sequel/plugins/dirty.rb +65 -24
  271. data/lib/sequel/plugins/eager_each.rb +27 -3
  272. data/lib/sequel/plugins/eager_graph_eager.rb +139 -0
  273. data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
  274. data/lib/sequel/plugins/error_splitter.rb +19 -12
  275. data/lib/sequel/plugins/finder.rb +246 -0
  276. data/lib/sequel/plugins/forbid_lazy_load.rb +216 -0
  277. data/lib/sequel/plugins/force_encoding.rb +9 -12
  278. data/lib/sequel/plugins/hook_class_methods.rb +39 -54
  279. data/lib/sequel/plugins/input_transformer.rb +20 -10
  280. data/lib/sequel/plugins/insert_conflict.rb +72 -0
  281. data/lib/sequel/plugins/insert_returning_select.rb +4 -2
  282. data/lib/sequel/plugins/instance_filters.rb +12 -8
  283. data/lib/sequel/plugins/instance_hooks.rb +36 -17
  284. data/lib/sequel/plugins/instance_specific_default.rb +113 -0
  285. data/lib/sequel/plugins/inverted_subsets.rb +24 -13
  286. data/lib/sequel/plugins/json_serializer.rb +123 -47
  287. data/lib/sequel/plugins/lazy_attributes.rb +20 -14
  288. data/lib/sequel/plugins/list.rb +40 -26
  289. data/lib/sequel/plugins/many_through_many.rb +28 -12
  290. data/lib/sequel/plugins/modification_detection.rb +17 -5
  291. data/lib/sequel/plugins/mssql_optimistic_locking.rb +8 -5
  292. data/lib/sequel/plugins/nested_attributes.rb +55 -28
  293. data/lib/sequel/plugins/optimistic_locking.rb +5 -3
  294. data/lib/sequel/plugins/pg_array_associations.rb +52 -18
  295. data/lib/sequel/plugins/pg_auto_constraint_validations.rb +348 -0
  296. data/lib/sequel/plugins/pg_row.rb +7 -51
  297. data/lib/sequel/plugins/prepared_statements.rb +53 -72
  298. data/lib/sequel/plugins/prepared_statements_safe.rb +13 -5
  299. data/lib/sequel/plugins/rcte_tree.rb +43 -63
  300. data/lib/sequel/plugins/serialization.rb +37 -44
  301. data/lib/sequel/plugins/serialization_modification_detection.rb +3 -1
  302. data/lib/sequel/plugins/sharding.rb +17 -10
  303. data/lib/sequel/plugins/single_table_inheritance.rb +62 -28
  304. data/lib/sequel/plugins/singular_table_names.rb +2 -0
  305. data/lib/sequel/plugins/skip_create_refresh.rb +5 -3
  306. data/lib/sequel/plugins/skip_saving_columns.rb +108 -0
  307. data/lib/sequel/plugins/split_values.rb +13 -6
  308. data/lib/sequel/plugins/static_cache.rb +79 -53
  309. data/lib/sequel/plugins/static_cache_cache.rb +53 -0
  310. data/lib/sequel/plugins/string_stripper.rb +5 -3
  311. data/lib/sequel/plugins/subclasses.rb +20 -2
  312. data/lib/sequel/plugins/subset_conditions.rb +48 -0
  313. data/lib/sequel/plugins/table_select.rb +4 -2
  314. data/lib/sequel/plugins/tactical_eager_loading.rb +120 -6
  315. data/lib/sequel/plugins/throw_failures.rb +110 -0
  316. data/lib/sequel/plugins/timestamps.rb +22 -8
  317. data/lib/sequel/plugins/touch.rb +21 -8
  318. data/lib/sequel/plugins/tree.rb +57 -30
  319. data/lib/sequel/plugins/typecast_on_load.rb +14 -4
  320. data/lib/sequel/plugins/unlimited_update.rb +3 -7
  321. data/lib/sequel/plugins/update_or_create.rb +6 -4
  322. data/lib/sequel/plugins/update_primary_key.rb +3 -1
  323. data/lib/sequel/plugins/update_refresh.rb +28 -15
  324. data/lib/sequel/plugins/uuid.rb +70 -0
  325. data/lib/sequel/plugins/validate_associated.rb +20 -0
  326. data/lib/sequel/plugins/validation_class_methods.rb +40 -19
  327. data/lib/sequel/plugins/validation_contexts.rb +49 -0
  328. data/lib/sequel/plugins/validation_helpers.rb +49 -31
  329. data/lib/sequel/plugins/whitelist_security.rb +122 -0
  330. data/lib/sequel/plugins/xml_serializer.rb +31 -30
  331. data/lib/sequel/sql.rb +479 -329
  332. data/lib/sequel/timezones.rb +62 -32
  333. data/lib/sequel/version.rb +10 -3
  334. metadata +177 -477
  335. data/Rakefile +0 -165
  336. data/doc/active_record.rdoc +0 -912
  337. data/doc/release_notes/1.0.txt +0 -38
  338. data/doc/release_notes/1.1.txt +0 -143
  339. data/doc/release_notes/1.3.txt +0 -101
  340. data/doc/release_notes/1.4.0.txt +0 -53
  341. data/doc/release_notes/1.5.0.txt +0 -155
  342. data/doc/release_notes/2.0.0.txt +0 -298
  343. data/doc/release_notes/2.1.0.txt +0 -271
  344. data/doc/release_notes/2.10.0.txt +0 -328
  345. data/doc/release_notes/2.11.0.txt +0 -215
  346. data/doc/release_notes/2.12.0.txt +0 -534
  347. data/doc/release_notes/2.2.0.txt +0 -253
  348. data/doc/release_notes/2.3.0.txt +0 -88
  349. data/doc/release_notes/2.4.0.txt +0 -106
  350. data/doc/release_notes/2.5.0.txt +0 -137
  351. data/doc/release_notes/2.6.0.txt +0 -157
  352. data/doc/release_notes/2.7.0.txt +0 -166
  353. data/doc/release_notes/2.8.0.txt +0 -171
  354. data/doc/release_notes/2.9.0.txt +0 -97
  355. data/doc/release_notes/3.0.0.txt +0 -221
  356. data/doc/release_notes/3.1.0.txt +0 -406
  357. data/doc/release_notes/3.10.0.txt +0 -286
  358. data/doc/release_notes/3.11.0.txt +0 -254
  359. data/doc/release_notes/3.12.0.txt +0 -304
  360. data/doc/release_notes/3.13.0.txt +0 -210
  361. data/doc/release_notes/3.14.0.txt +0 -118
  362. data/doc/release_notes/3.15.0.txt +0 -78
  363. data/doc/release_notes/3.16.0.txt +0 -45
  364. data/doc/release_notes/3.17.0.txt +0 -58
  365. data/doc/release_notes/3.18.0.txt +0 -120
  366. data/doc/release_notes/3.19.0.txt +0 -67
  367. data/doc/release_notes/3.2.0.txt +0 -268
  368. data/doc/release_notes/3.20.0.txt +0 -41
  369. data/doc/release_notes/3.21.0.txt +0 -87
  370. data/doc/release_notes/3.22.0.txt +0 -39
  371. data/doc/release_notes/3.23.0.txt +0 -172
  372. data/doc/release_notes/3.24.0.txt +0 -420
  373. data/doc/release_notes/3.25.0.txt +0 -88
  374. data/doc/release_notes/3.26.0.txt +0 -88
  375. data/doc/release_notes/3.27.0.txt +0 -82
  376. data/doc/release_notes/3.28.0.txt +0 -304
  377. data/doc/release_notes/3.29.0.txt +0 -459
  378. data/doc/release_notes/3.3.0.txt +0 -192
  379. data/doc/release_notes/3.30.0.txt +0 -135
  380. data/doc/release_notes/3.31.0.txt +0 -146
  381. data/doc/release_notes/3.32.0.txt +0 -202
  382. data/doc/release_notes/3.33.0.txt +0 -157
  383. data/doc/release_notes/3.34.0.txt +0 -671
  384. data/doc/release_notes/3.35.0.txt +0 -144
  385. data/doc/release_notes/3.36.0.txt +0 -245
  386. data/doc/release_notes/3.37.0.txt +0 -338
  387. data/doc/release_notes/3.38.0.txt +0 -234
  388. data/doc/release_notes/3.39.0.txt +0 -237
  389. data/doc/release_notes/3.4.0.txt +0 -325
  390. data/doc/release_notes/3.40.0.txt +0 -73
  391. data/doc/release_notes/3.41.0.txt +0 -155
  392. data/doc/release_notes/3.42.0.txt +0 -74
  393. data/doc/release_notes/3.43.0.txt +0 -105
  394. data/doc/release_notes/3.44.0.txt +0 -152
  395. data/doc/release_notes/3.45.0.txt +0 -179
  396. data/doc/release_notes/3.46.0.txt +0 -122
  397. data/doc/release_notes/3.47.0.txt +0 -270
  398. data/doc/release_notes/3.48.0.txt +0 -477
  399. data/doc/release_notes/3.5.0.txt +0 -510
  400. data/doc/release_notes/3.6.0.txt +0 -366
  401. data/doc/release_notes/3.7.0.txt +0 -179
  402. data/doc/release_notes/3.8.0.txt +0 -151
  403. data/doc/release_notes/3.9.0.txt +0 -233
  404. data/doc/release_notes/4.0.0.txt +0 -262
  405. data/doc/release_notes/4.1.0.txt +0 -85
  406. data/doc/release_notes/4.10.0.txt +0 -226
  407. data/doc/release_notes/4.11.0.txt +0 -147
  408. data/doc/release_notes/4.12.0.txt +0 -105
  409. data/doc/release_notes/4.13.0.txt +0 -169
  410. data/doc/release_notes/4.14.0.txt +0 -68
  411. data/doc/release_notes/4.15.0.txt +0 -56
  412. data/doc/release_notes/4.16.0.txt +0 -36
  413. data/doc/release_notes/4.17.0.txt +0 -38
  414. data/doc/release_notes/4.18.0.txt +0 -36
  415. data/doc/release_notes/4.19.0.txt +0 -45
  416. data/doc/release_notes/4.2.0.txt +0 -129
  417. data/doc/release_notes/4.20.0.txt +0 -79
  418. data/doc/release_notes/4.21.0.txt +0 -94
  419. data/doc/release_notes/4.22.0.txt +0 -72
  420. data/doc/release_notes/4.23.0.txt +0 -65
  421. data/doc/release_notes/4.24.0.txt +0 -99
  422. data/doc/release_notes/4.25.0.txt +0 -181
  423. data/doc/release_notes/4.26.0.txt +0 -44
  424. data/doc/release_notes/4.3.0.txt +0 -40
  425. data/doc/release_notes/4.4.0.txt +0 -92
  426. data/doc/release_notes/4.5.0.txt +0 -34
  427. data/doc/release_notes/4.6.0.txt +0 -30
  428. data/doc/release_notes/4.7.0.txt +0 -103
  429. data/doc/release_notes/4.8.0.txt +0 -175
  430. data/doc/release_notes/4.9.0.txt +0 -190
  431. data/lib/sequel/adapters/cubrid.rb +0 -142
  432. data/lib/sequel/adapters/do.rb +0 -156
  433. data/lib/sequel/adapters/do/mysql.rb +0 -64
  434. data/lib/sequel/adapters/do/postgres.rb +0 -42
  435. data/lib/sequel/adapters/do/sqlite3.rb +0 -40
  436. data/lib/sequel/adapters/jdbc/as400.rb +0 -82
  437. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -62
  438. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -34
  439. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -31
  440. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -31
  441. data/lib/sequel/adapters/odbc/progress.rb +0 -8
  442. data/lib/sequel/adapters/shared/cubrid.rb +0 -243
  443. data/lib/sequel/adapters/shared/firebird.rb +0 -245
  444. data/lib/sequel/adapters/shared/informix.rb +0 -52
  445. data/lib/sequel/adapters/shared/mysql_prepared_statements.rb +0 -150
  446. data/lib/sequel/adapters/shared/progress.rb +0 -38
  447. data/lib/sequel/adapters/swift.rb +0 -158
  448. data/lib/sequel/adapters/swift/mysql.rb +0 -47
  449. data/lib/sequel/adapters/swift/postgres.rb +0 -45
  450. data/lib/sequel/adapters/swift/sqlite.rb +0 -47
  451. data/lib/sequel/adapters/utils/pg_types.rb +0 -68
  452. data/lib/sequel/dataset/mutation.rb +0 -109
  453. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -3
  454. data/lib/sequel/extensions/filter_having.rb +0 -59
  455. data/lib/sequel/extensions/hash_aliases.rb +0 -45
  456. data/lib/sequel/extensions/meta_def.rb +0 -31
  457. data/lib/sequel/extensions/query_literals.rb +0 -80
  458. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -22
  459. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -118
  460. data/lib/sequel/extensions/set_overrides.rb +0 -72
  461. data/lib/sequel/no_core_ext.rb +0 -1
  462. data/lib/sequel/plugins/association_autoreloading.rb +0 -7
  463. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -7
  464. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -78
  465. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -117
  466. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -59
  467. data/lib/sequel/plugins/schema.rb +0 -80
  468. data/lib/sequel/plugins/scissors.rb +0 -33
  469. data/spec/adapters/db2_spec.rb +0 -160
  470. data/spec/adapters/firebird_spec.rb +0 -411
  471. data/spec/adapters/informix_spec.rb +0 -100
  472. data/spec/adapters/mssql_spec.rb +0 -706
  473. data/spec/adapters/mysql_spec.rb +0 -1287
  474. data/spec/adapters/oracle_spec.rb +0 -313
  475. data/spec/adapters/postgres_spec.rb +0 -3725
  476. data/spec/adapters/spec_helper.rb +0 -43
  477. data/spec/adapters/sqlanywhere_spec.rb +0 -170
  478. data/spec/adapters/sqlite_spec.rb +0 -653
  479. data/spec/bin_spec.rb +0 -254
  480. data/spec/core/connection_pool_spec.rb +0 -1016
  481. data/spec/core/database_spec.rb +0 -2531
  482. data/spec/core/dataset_spec.rb +0 -5098
  483. data/spec/core/deprecated_spec.rb +0 -70
  484. data/spec/core/expression_filters_spec.rb +0 -1243
  485. data/spec/core/mock_adapter_spec.rb +0 -462
  486. data/spec/core/object_graph_spec.rb +0 -303
  487. data/spec/core/placeholder_literalizer_spec.rb +0 -163
  488. data/spec/core/schema_generator_spec.rb +0 -179
  489. data/spec/core/schema_spec.rb +0 -1659
  490. data/spec/core/spec_helper.rb +0 -34
  491. data/spec/core/version_spec.rb +0 -7
  492. data/spec/core_extensions_spec.rb +0 -699
  493. data/spec/extensions/accessed_columns_spec.rb +0 -51
  494. data/spec/extensions/active_model_spec.rb +0 -123
  495. data/spec/extensions/after_initialize_spec.rb +0 -24
  496. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  497. data/spec/extensions/association_dependencies_spec.rb +0 -117
  498. data/spec/extensions/association_pks_spec.rb +0 -365
  499. data/spec/extensions/association_proxies_spec.rb +0 -86
  500. data/spec/extensions/auto_validations_spec.rb +0 -192
  501. data/spec/extensions/blacklist_security_spec.rb +0 -88
  502. data/spec/extensions/blank_spec.rb +0 -69
  503. data/spec/extensions/boolean_readers_spec.rb +0 -93
  504. data/spec/extensions/caching_spec.rb +0 -270
  505. data/spec/extensions/class_table_inheritance_spec.rb +0 -420
  506. data/spec/extensions/column_conflicts_spec.rb +0 -60
  507. data/spec/extensions/column_select_spec.rb +0 -108
  508. data/spec/extensions/columns_introspection_spec.rb +0 -91
  509. data/spec/extensions/composition_spec.rb +0 -242
  510. data/spec/extensions/connection_validator_spec.rb +0 -120
  511. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -274
  512. data/spec/extensions/constraint_validations_spec.rb +0 -325
  513. data/spec/extensions/core_refinements_spec.rb +0 -519
  514. data/spec/extensions/csv_serializer_spec.rb +0 -173
  515. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  516. data/spec/extensions/dataset_associations_spec.rb +0 -311
  517. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  518. data/spec/extensions/date_arithmetic_spec.rb +0 -150
  519. data/spec/extensions/defaults_setter_spec.rb +0 -101
  520. data/spec/extensions/delay_add_association_spec.rb +0 -52
  521. data/spec/extensions/dirty_spec.rb +0 -180
  522. data/spec/extensions/eager_each_spec.rb +0 -42
  523. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  524. data/spec/extensions/error_splitter_spec.rb +0 -18
  525. data/spec/extensions/error_sql_spec.rb +0 -20
  526. data/spec/extensions/eval_inspect_spec.rb +0 -73
  527. data/spec/extensions/filter_having_spec.rb +0 -40
  528. data/spec/extensions/force_encoding_spec.rb +0 -114
  529. data/spec/extensions/from_block_spec.rb +0 -21
  530. data/spec/extensions/graph_each_spec.rb +0 -109
  531. data/spec/extensions/hash_aliases_spec.rb +0 -24
  532. data/spec/extensions/hook_class_methods_spec.rb +0 -429
  533. data/spec/extensions/inflector_spec.rb +0 -183
  534. data/spec/extensions/input_transformer_spec.rb +0 -54
  535. data/spec/extensions/insert_returning_select_spec.rb +0 -46
  536. data/spec/extensions/instance_filters_spec.rb +0 -79
  537. data/spec/extensions/instance_hooks_spec.rb +0 -276
  538. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  539. data/spec/extensions/json_serializer_spec.rb +0 -291
  540. data/spec/extensions/lazy_attributes_spec.rb +0 -170
  541. data/spec/extensions/list_spec.rb +0 -267
  542. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  543. data/spec/extensions/many_through_many_spec.rb +0 -2172
  544. data/spec/extensions/meta_def_spec.rb +0 -21
  545. data/spec/extensions/migration_spec.rb +0 -712
  546. data/spec/extensions/modification_detection_spec.rb +0 -80
  547. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -91
  548. data/spec/extensions/named_timezones_spec.rb +0 -108
  549. data/spec/extensions/nested_attributes_spec.rb +0 -697
  550. data/spec/extensions/null_dataset_spec.rb +0 -85
  551. data/spec/extensions/optimistic_locking_spec.rb +0 -128
  552. data/spec/extensions/pagination_spec.rb +0 -118
  553. data/spec/extensions/pg_array_associations_spec.rb +0 -736
  554. data/spec/extensions/pg_array_ops_spec.rb +0 -143
  555. data/spec/extensions/pg_array_spec.rb +0 -395
  556. data/spec/extensions/pg_enum_spec.rb +0 -92
  557. data/spec/extensions/pg_hstore_ops_spec.rb +0 -236
  558. data/spec/extensions/pg_hstore_spec.rb +0 -206
  559. data/spec/extensions/pg_inet_ops_spec.rb +0 -101
  560. data/spec/extensions/pg_inet_spec.rb +0 -52
  561. data/spec/extensions/pg_interval_spec.rb +0 -76
  562. data/spec/extensions/pg_json_ops_spec.rb +0 -229
  563. data/spec/extensions/pg_json_spec.rb +0 -218
  564. data/spec/extensions/pg_loose_count_spec.rb +0 -17
  565. data/spec/extensions/pg_range_ops_spec.rb +0 -58
  566. data/spec/extensions/pg_range_spec.rb +0 -404
  567. data/spec/extensions/pg_row_ops_spec.rb +0 -60
  568. data/spec/extensions/pg_row_plugin_spec.rb +0 -62
  569. data/spec/extensions/pg_row_spec.rb +0 -360
  570. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -92
  571. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -63
  572. data/spec/extensions/prepared_statements_associations_spec.rb +0 -159
  573. data/spec/extensions/prepared_statements_safe_spec.rb +0 -61
  574. data/spec/extensions/prepared_statements_spec.rb +0 -103
  575. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -31
  576. data/spec/extensions/pretty_table_spec.rb +0 -92
  577. data/spec/extensions/query_literals_spec.rb +0 -183
  578. data/spec/extensions/query_spec.rb +0 -102
  579. data/spec/extensions/rcte_tree_spec.rb +0 -392
  580. data/spec/extensions/round_timestamps_spec.rb +0 -43
  581. data/spec/extensions/schema_caching_spec.rb +0 -41
  582. data/spec/extensions/schema_dumper_spec.rb +0 -789
  583. data/spec/extensions/schema_spec.rb +0 -117
  584. data/spec/extensions/scissors_spec.rb +0 -26
  585. data/spec/extensions/select_remove_spec.rb +0 -38
  586. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -101
  587. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  588. data/spec/extensions/serialization_spec.rb +0 -362
  589. data/spec/extensions/server_block_spec.rb +0 -90
  590. data/spec/extensions/set_overrides_spec.rb +0 -61
  591. data/spec/extensions/sharding_spec.rb +0 -198
  592. data/spec/extensions/shared_caching_spec.rb +0 -175
  593. data/spec/extensions/single_table_inheritance_spec.rb +0 -297
  594. data/spec/extensions/singular_table_names_spec.rb +0 -22
  595. data/spec/extensions/skip_create_refresh_spec.rb +0 -17
  596. data/spec/extensions/spec_helper.rb +0 -71
  597. data/spec/extensions/split_array_nil_spec.rb +0 -24
  598. data/spec/extensions/split_values_spec.rb +0 -22
  599. data/spec/extensions/sql_expr_spec.rb +0 -60
  600. data/spec/extensions/static_cache_spec.rb +0 -361
  601. data/spec/extensions/string_date_time_spec.rb +0 -95
  602. data/spec/extensions/string_stripper_spec.rb +0 -68
  603. data/spec/extensions/subclasses_spec.rb +0 -66
  604. data/spec/extensions/table_select_spec.rb +0 -71
  605. data/spec/extensions/tactical_eager_loading_spec.rb +0 -82
  606. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  607. data/spec/extensions/timestamps_spec.rb +0 -175
  608. data/spec/extensions/to_dot_spec.rb +0 -154
  609. data/spec/extensions/touch_spec.rb +0 -203
  610. data/spec/extensions/tree_spec.rb +0 -274
  611. data/spec/extensions/typecast_on_load_spec.rb +0 -80
  612. data/spec/extensions/unlimited_update_spec.rb +0 -20
  613. data/spec/extensions/update_or_create_spec.rb +0 -87
  614. data/spec/extensions/update_primary_key_spec.rb +0 -100
  615. data/spec/extensions/update_refresh_spec.rb +0 -53
  616. data/spec/extensions/validate_associated_spec.rb +0 -52
  617. data/spec/extensions/validation_class_methods_spec.rb +0 -1027
  618. data/spec/extensions/validation_helpers_spec.rb +0 -541
  619. data/spec/extensions/xml_serializer_spec.rb +0 -207
  620. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  621. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  622. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  623. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  624. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  625. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  626. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  627. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  628. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  629. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  630. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  631. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  632. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  633. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  634. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  635. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  636. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  637. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  638. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  639. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  640. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  641. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  642. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  643. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  644. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  645. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  646. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  647. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  648. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  649. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  650. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  651. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  652. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  653. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  654. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  655. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  656. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  657. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  658. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  659. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  660. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  661. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  662. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  663. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  664. data/spec/guards_helper.rb +0 -55
  665. data/spec/integration/associations_test.rb +0 -2454
  666. data/spec/integration/database_test.rb +0 -113
  667. data/spec/integration/dataset_test.rb +0 -1808
  668. data/spec/integration/eager_loader_test.rb +0 -687
  669. data/spec/integration/migrator_test.rb +0 -240
  670. data/spec/integration/model_test.rb +0 -226
  671. data/spec/integration/plugin_test.rb +0 -2240
  672. data/spec/integration/prepared_statement_test.rb +0 -467
  673. data/spec/integration/schema_test.rb +0 -817
  674. data/spec/integration/spec_helper.rb +0 -48
  675. data/spec/integration/timezone_test.rb +0 -86
  676. data/spec/integration/transaction_test.rb +0 -374
  677. data/spec/integration/type_test.rb +0 -133
  678. data/spec/model/association_reflection_spec.rb +0 -525
  679. data/spec/model/associations_spec.rb +0 -4426
  680. data/spec/model/base_spec.rb +0 -759
  681. data/spec/model/class_dataset_methods_spec.rb +0 -146
  682. data/spec/model/dataset_methods_spec.rb +0 -149
  683. data/spec/model/eager_loading_spec.rb +0 -2137
  684. data/spec/model/hooks_spec.rb +0 -604
  685. data/spec/model/inflector_spec.rb +0 -26
  686. data/spec/model/model_spec.rb +0 -982
  687. data/spec/model/plugins_spec.rb +0 -299
  688. data/spec/model/record_spec.rb +0 -2147
  689. data/spec/model/spec_helper.rb +0 -46
  690. data/spec/model/validations_spec.rb +0 -193
  691. data/spec/sequel_coverage.rb +0 -15
  692. data/spec/spec_config.rb +0 -10
@@ -1,183 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
2
-
3
- Sequel.extension :inflector
4
-
5
- describe String do
6
- it "#camelize and #camelcase should transform the word to CamelCase" do
7
- "egg_and_hams".camelize.must_equal "EggAndHams"
8
- "egg_and_hams".camelize(false).must_equal "eggAndHams"
9
- "post".camelize.must_equal "Post"
10
- "post".camelcase.must_equal "Post"
11
- end
12
-
13
- it "#constantize should eval the string to get a constant" do
14
- "String".constantize.must_equal String
15
- "String::Inflections".constantize.must_equal String::Inflections
16
- proc{"BKSDDF".constantize}.must_raise NameError
17
- proc{"++A++".constantize}.must_raise NameError
18
- end
19
-
20
- it "#dasherize should transform underscores to dashes" do
21
- "egg_and_hams".dasherize.must_equal "egg-and-hams"
22
- "post".dasherize.must_equal "post"
23
- end
24
-
25
- it "#demodulize should remove any preceding modules" do
26
- "String::Inflections::Blah".demodulize.must_equal "Blah"
27
- "String::Inflections".demodulize.must_equal "Inflections"
28
- "String".demodulize.must_equal "String"
29
- end
30
-
31
- it "#humanize should remove _i, transform underscore to spaces, and capitalize" do
32
- "egg_and_hams".humanize.must_equal "Egg and hams"
33
- "post".humanize.must_equal "Post"
34
- "post_id".humanize.must_equal "Post"
35
- end
36
-
37
- it "#titleize and #titlecase should underscore, humanize, and capitalize all words" do
38
- "egg-and: hams".titleize.must_equal "Egg And: Hams"
39
- "post".titleize.must_equal "Post"
40
- "post".titlecase.must_equal "Post"
41
- end
42
-
43
- it "#underscore should add underscores between CamelCased words, change :: to / and - to _, and downcase" do
44
- "EggAndHams".underscore.must_equal "egg_and_hams"
45
- "EGGAndHams".underscore.must_equal "egg_and_hams"
46
- "Egg::And::Hams".underscore.must_equal "egg/and/hams"
47
- "post".underscore.must_equal "post"
48
- "post-id".underscore.must_equal "post_id"
49
- end
50
-
51
- it "#pluralize should transform words from singular to plural" do
52
- "post".pluralize.must_equal "posts"
53
- "octopus".pluralize.must_equal"octopuses"
54
- "the blue mailman".pluralize.must_equal "the blue mailmen"
55
- "CamelOctopus".pluralize.must_equal "CamelOctopuses"
56
- end
57
-
58
- it "#singularize should transform words from plural to singular" do
59
- "posts".singularize.must_equal "post"
60
- "octopuses".singularize.must_equal "octopus"
61
- "the blue mailmen".singularize.must_equal "the blue mailman"
62
- "CamelOctopuses".singularize.must_equal "CamelOctopus"
63
- end
64
-
65
- it "#tableize should transform class names to table names" do
66
- "RawScaledScorer".tableize.must_equal "raw_scaled_scorers"
67
- "egg_and_ham".tableize.must_equal "egg_and_hams"
68
- "fancyCategory".tableize.must_equal "fancy_categories"
69
- end
70
-
71
- it "#classify should tranform table names to class names" do
72
- "egg_and_hams".classify.must_equal "EggAndHam"
73
- "post".classify.must_equal "Post"
74
- end
75
-
76
- it "#foreign_key should create a foreign key name from a class name" do
77
- "Message".foreign_key.must_equal "message_id"
78
- "Message".foreign_key(false).must_equal "messageid"
79
- "Admin::Post".foreign_key.must_equal "post_id"
80
- end
81
- end
82
-
83
- describe String::Inflections do
84
- before do
85
- @plurals, @singulars, @uncountables = String.inflections.plurals.dup, String.inflections.singulars.dup, String.inflections.uncountables.dup
86
- end
87
- after do
88
- String.inflections.plurals.replace(@plurals)
89
- String.inflections.singulars.replace(@singulars)
90
- String.inflections.uncountables.replace(@uncountables)
91
- end
92
-
93
- it "should be possible to clear the list of singulars, plurals, and uncountables" do
94
- String.inflections.clear(:plurals)
95
- String.inflections.plurals.must_equal []
96
- String.inflections.plural('blah', 'blahs')
97
- String.inflections.clear
98
- String.inflections.plurals.must_equal []
99
- String.inflections.singulars.must_equal []
100
- String.inflections.uncountables.must_equal []
101
- end
102
-
103
- it "should be able to specify new inflection rules" do
104
- String.inflections do |i|
105
- i.plural(/xx$/i, 'xxx')
106
- i.singular(/ttt$/i, 'tt')
107
- i.irregular('yy', 'yyy')
108
- i.uncountable(%w'zz')
109
- end
110
- 'roxx'.pluralize.must_equal 'roxxx'
111
- 'rottt'.singularize.must_equal 'rott'
112
- 'yy'.pluralize.must_equal 'yyy'
113
- 'yyy'.singularize.must_equal 'yy'
114
- 'zz'.pluralize.must_equal 'zz'
115
- 'zz'.singularize.must_equal 'zz'
116
- end
117
-
118
- it "should be yielded and returned by String.inflections" do
119
- String.inflections{|i| i.must_equal String::Inflections}.must_equal String::Inflections
120
- end
121
- end
122
-
123
- describe 'Default inflections' do
124
- it "should support the default inflection rules" do
125
- {
126
- :test=>:tests,
127
- :ax=>:axes,
128
- :testis=>:testes,
129
- :octopus=>:octopuses,
130
- :virus=>:viruses,
131
- :alias=>:aliases,
132
- :status=>:statuses,
133
- :bus=>:buses,
134
- :buffalo=>:buffaloes,
135
- :tomato=>:tomatoes,
136
- :datum=>:data,
137
- :bacterium=>:bacteria,
138
- :analysis=>:analyses,
139
- :basis=>:bases,
140
- :diagnosis=>:diagnoses,
141
- :parenthesis=>:parentheses,
142
- :prognosis=>:prognoses,
143
- :synopsis=>:synopses,
144
- :thesis=>:theses,
145
- :wife=>:wives,
146
- :giraffe=>:giraffes,
147
- :self=>:selves,
148
- :dwarf=>:dwarves,
149
- :hive=>:hives,
150
- :fly=>:flies,
151
- :buy=>:buys,
152
- :soliloquy=>:soliloquies,
153
- :day=>:days,
154
- :attorney=>:attorneys,
155
- :boy=>:boys,
156
- :hoax=>:hoaxes,
157
- :lunch=>:lunches,
158
- :princess=>:princesses,
159
- :matrix=>:matrices,
160
- :vertex=>:vertices,
161
- :index=>:indices,
162
- :mouse=>:mice,
163
- :louse=>:lice,
164
- :quiz=>:quizzes,
165
- :motive=>:motives,
166
- :movie=>:movies,
167
- :series=>:series,
168
- :crisis=>:crises,
169
- :person=>:people,
170
- :man=>:men,
171
- :woman=>:women,
172
- :child=>:children,
173
- :sex=>:sexes,
174
- :move=>:moves
175
- }.each do |k, v|
176
- k.to_s.pluralize.must_equal v.to_s
177
- v.to_s.singularize.must_equal k.to_s
178
- end
179
- [:equipment, :information, :rice, :money, :species, :series, :fish, :sheep, :news].each do |a|
180
- a.to_s.pluralize.must_equal a.to_s.singularize
181
- end
182
- end
183
- end
@@ -1,54 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe "Sequel::Plugins::InputTransformer" do
4
- before do
5
- @c = Class.new(Sequel::Model)
6
- @c.columns :name, :b
7
- @c.plugin(:input_transformer, :reverser){|v| v.is_a?(String) ? v.reverse : v}
8
- @o = @c.new
9
- end
10
-
11
- it "should apply transformation to input" do
12
- @o.name = ' name '
13
- @o.name.must_equal ' eman '
14
- @o.name = [1, 2, 3]
15
- @o.name.must_equal [1, 2, 3]
16
- end
17
-
18
- it "should not apply any transformers by default" do
19
- c = Class.new(Sequel::Model)
20
- c.columns :name, :b
21
- c.plugin :input_transformer
22
- c.new(:name => ' name ').name.must_equal ' name '
23
- end
24
-
25
- it "should allow skipping of columns using .skip_input_transformer" do
26
- @c.skip_input_transformer :reverser, :name
27
- v = ' name '
28
- @o.name = v
29
- @o.name.must_be_same_as(v)
30
- end
31
-
32
- it "should work correctly in subclasses" do
33
- o = Class.new(@c).new
34
- o.name = ' name '
35
- o.name.must_equal ' eman '
36
- end
37
-
38
- it "should raise an error if adding input filter without name" do
39
- proc{@c.add_input_transformer(nil){}}.must_raise(Sequel::Error)
40
- proc{@c.plugin(:input_transformer){}}.must_raise(Sequel::Error)
41
- end
42
-
43
- it "should raise an error if adding input filter without block" do
44
- proc{@c.add_input_transformer(:foo)}.must_raise(Sequel::Error)
45
- proc{@c.plugin(:input_transformer, :foo)}.must_raise(Sequel::Error)
46
- end
47
-
48
- it "should apply multiple input transformers in reverse order of their call" do
49
- @c.add_input_transformer(:add_bar){|v| v << 'bar'}
50
- @c.add_input_transformer(:add_foo){|v| v << 'foo'}
51
- @o.name = ' name '
52
- @o.name.must_equal 'raboof eman '
53
- end
54
- end
@@ -1,46 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe "Sequel::Plugins::InsertReturningSelect" do
4
- before do
5
- @db = Sequel.mock(:fetch=>{:id=>1, :x=>2}, :autoid=>1)
6
- @db.extend_datasets do
7
- def supports_returning?(_) true end
8
- def insert_select(*v) with_sql_first("#{insert_sql(*v)} RETURNING #{opts[:returning].map{|x| literal(x)}.join(', ')}") end
9
- end
10
- @Album = Class.new(Sequel::Model(@db[:albums].select(:id, :x)))
11
- @Album.columns :id, :x
12
- @db.sqls
13
- end
14
-
15
- it "should add a returning clause when inserting using selected columns" do
16
- @Album.plugin :insert_returning_select
17
- @Album.create(:x=>2).must_equal @Album.load(:id=>1, :x=>2)
18
- @db.sqls.must_equal ['INSERT INTO albums (x) VALUES (2) RETURNING id, x']
19
- end
20
-
21
- it "should not add a returning clause if selection does not consist of just columns" do
22
- @Album.dataset = @Album.dataset.select_append(Sequel.as(1, :b))
23
- @Album.plugin :insert_returning_select
24
- @db.sqls.clear
25
- @Album.create(:x=>2).must_equal @Album.load(:id=>1, :x=>2)
26
- @db.sqls.must_equal ['INSERT INTO albums (x) VALUES (2)', 'SELECT id, x, 1 AS b FROM albums WHERE (id = 1) LIMIT 1']
27
- end
28
-
29
- it "should not add a returning clause if database doesn't support it" do
30
- @db.extend_datasets{def supports_returning?(_) false end}
31
- @Album.plugin :insert_returning_select
32
- @Album.create(:x=>2).must_equal @Album.load(:id=>1, :x=>2)
33
- @db.sqls.must_equal ['INSERT INTO albums (x) VALUES (2)', 'SELECT id, x FROM albums WHERE (id = 1) LIMIT 1']
34
- end
35
-
36
- it "should work correctly with subclasses" do
37
- c = Class.new(Sequel::Model)
38
- c.plugin :insert_returning_select
39
- b = Class.new(c)
40
- b.columns :id, :x
41
- b.dataset = @db[:albums].select(:id, :x)
42
- @db.sqls.clear
43
- b.create(:x=>2).must_equal b.load(:id=>1, :x=>2)
44
- @db.sqls.must_equal ['INSERT INTO albums (x) VALUES (2) RETURNING id, x']
45
- end
46
- end
@@ -1,79 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe "instance_filters plugin" do
4
- before do
5
- @c = Class.new(Sequel::Model(:people))
6
- @c.dataset.quote_identifiers = false
7
- @c.columns :id, :name, :num
8
- @c.plugin :instance_filters
9
- @p = @c.load(:id=>1, :name=>'John', :num=>1)
10
- DB.sqls
11
- end
12
-
13
- it "should raise an error when updating a stale record" do
14
- @p.update(:name=>'Bob')
15
- DB.sqls.must_equal ["UPDATE people SET name = 'Bob' WHERE (id = 1)"]
16
- @p.instance_filter(:name=>'Jim')
17
- @p.this.numrows = 0
18
- proc{@p.update(:name=>'Joe')}.must_raise(Sequel::Plugins::InstanceFilters::Error)
19
- DB.sqls.must_equal ["UPDATE people SET name = 'Joe' WHERE ((id = 1) AND (name = 'Jim'))"]
20
- end
21
-
22
- it "should raise an error when destroying a stale record" do
23
- @p.destroy
24
- DB.sqls.must_equal ["DELETE FROM people WHERE id = 1"]
25
- @p.instance_filter(:name=>'Jim')
26
- @p.this.numrows = 0
27
- proc{@p.destroy}.must_raise(Sequel::Plugins::InstanceFilters::Error)
28
- DB.sqls.must_equal ["DELETE FROM people WHERE ((id = 1) AND (name = 'Jim'))"]
29
- end
30
-
31
- it "should work when using the prepared_statements plugin" do
32
- @c.plugin :prepared_statements
33
-
34
- @p.update(:name=>'Bob')
35
- DB.sqls.must_equal ["UPDATE people SET name = 'Bob' WHERE (id = 1)"]
36
- @p.instance_filter(:name=>'Jim')
37
- @p.this.numrows = 0
38
- proc{@p.update(:name=>'Joe')}.must_raise(Sequel::Plugins::InstanceFilters::Error)
39
- DB.sqls.must_equal ["UPDATE people SET name = 'Joe' WHERE ((id = 1) AND (name = 'Jim'))"]
40
-
41
- @p = @c.load(:id=>1, :name=>'John', :num=>1)
42
- @p.this.numrows = 1
43
- @p.destroy
44
- DB.sqls.must_equal ["DELETE FROM people WHERE (id = 1)"]
45
- @p.instance_filter(:name=>'Jim')
46
- @p.this.numrows = 0
47
- proc{@p.destroy}.must_raise(Sequel::Plugins::InstanceFilters::Error)
48
- DB.sqls.must_equal ["DELETE FROM people WHERE ((id = 1) AND (name = 'Jim'))"]
49
-
50
- @c.create.must_be_kind_of(@c)
51
- end
52
-
53
- it "should apply all instance filters" do
54
- @p.instance_filter(:name=>'Jim')
55
- @p.instance_filter{num > 2}
56
- @p.update(:name=>'Bob')
57
- DB.sqls.must_equal ["UPDATE people SET name = 'Bob' WHERE ((id = 1) AND (name = 'Jim') AND (num > 2))"]
58
- end
59
-
60
- it "should drop instance filters after updating" do
61
- @p.instance_filter(:name=>'Joe')
62
- @p.update(:name=>'Joe')
63
- DB.sqls.must_equal ["UPDATE people SET name = 'Joe' WHERE ((id = 1) AND (name = 'Joe'))"]
64
- @p.update(:name=>'Bob')
65
- DB.sqls.must_equal ["UPDATE people SET name = 'Bob' WHERE (id = 1)"]
66
- end
67
-
68
- it "shouldn't allow instance filters on frozen objects" do
69
- @p.instance_filter(:name=>'Joe')
70
- @p.freeze
71
- proc{@p.instance_filter(:name=>'Jim')}.must_raise
72
- end
73
-
74
- it "should have dup duplicate internal structures" do
75
- @p.instance_filter(:name=>'Joe')
76
- @p.dup.send(:instance_filters).must_equal @p.send(:instance_filters)
77
- @p.dup.send(:instance_filters).wont_be_same_as(@p.send(:instance_filters))
78
- end
79
- end
@@ -1,276 +0,0 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- describe "InstanceHooks plugin" do
4
- def r(x)
5
- @r << x
6
- x
7
- end
8
-
9
- before do
10
- @c = Class.new(Sequel::Model(:items))
11
- @c.plugin :instance_hooks
12
- @c.raise_on_save_failure = false
13
- @o = @c.new
14
- @x = @c.load({:id=>1})
15
- @r = []
16
- end
17
-
18
- it "should support before_create_hook and after_create_hook" do
19
- @o.after_create_hook{r 1}
20
- @o.before_create_hook{r 2}
21
- @o.after_create_hook{r 3}
22
- @o.before_create_hook{r 4}
23
- @o.save.wont_equal nil
24
- @r.must_equal [4, 2, 1, 3]
25
- end
26
-
27
- it "should cancel the save if before_create_hook block returns false" do
28
- @o.after_create_hook{r 1}
29
- @o.before_create_hook{r false}
30
- @o.before_create_hook{r 4}
31
- @o.save.must_equal nil
32
- @r.must_equal [4, false]
33
- @r.clear
34
- @o.save.must_equal nil
35
- @r.must_equal [4, false]
36
- end
37
-
38
- it "should support before_update_hook and after_update_hook" do
39
- @x.after_update_hook{r 1}
40
- @x.before_update_hook{r 2}
41
- @x.after_update_hook{r 3}
42
- @x.before_update_hook{r 4}
43
- @x.save.wont_equal nil
44
- @r.must_equal [4, 2, 1, 3]
45
- @x.save.wont_equal nil
46
- @r.must_equal [4, 2, 1, 3]
47
- end
48
-
49
- it "should cancel the save if before_update_hook block returns false" do
50
- @x.after_update_hook{r 1}
51
- @x.before_update_hook{r false}
52
- @x.before_update_hook{r 4}
53
- @x.save.must_equal nil
54
- @r.must_equal [4, false]
55
- @r.clear
56
- @x.save.must_equal nil
57
- @r.must_equal [4, false]
58
- end
59
-
60
- it "should support before_save_hook and after_save_hook" do
61
- @o.after_save_hook{r 1}
62
- @o.before_save_hook{r 2}
63
- @o.after_save_hook{r 3}
64
- @o.before_save_hook{r 4}
65
- @o.save.wont_equal nil
66
- @r.must_equal [4, 2, 1, 3]
67
- @r.clear
68
-
69
- @x.after_save_hook{r 1}
70
- @x.before_save_hook{r 2}
71
- @x.after_save_hook{r 3}
72
- @x.before_save_hook{r 4}
73
- @x.save.wont_equal nil
74
- @r.must_equal [4, 2, 1, 3]
75
- @x.save.wont_equal nil
76
- @r.must_equal [4, 2, 1, 3]
77
- end
78
-
79
- it "should cancel the save if before_save_hook block returns false" do
80
- @x.after_save_hook{r 1}
81
- @x.before_save_hook{r false}
82
- @x.before_save_hook{r 4}
83
- @x.save.must_equal nil
84
- @r.must_equal [4, false]
85
- @r.clear
86
-
87
- @x.after_save_hook{r 1}
88
- @x.before_save_hook{r false}
89
- @x.before_save_hook{r 4}
90
- @x.save.must_equal nil
91
- @r.must_equal [4, false]
92
- @r.clear
93
- @x.save.must_equal nil
94
- @r.must_equal [4, false]
95
- end
96
-
97
- it "should support before_destroy_hook and after_destroy_hook" do
98
- @x.after_destroy_hook{r 1}
99
- @x.before_destroy_hook{r 2}
100
- @x.after_destroy_hook{r 3}
101
- @x.before_destroy_hook{r 4}
102
- @x.destroy.wont_equal nil
103
- @r.must_equal [4, 2, 1, 3]
104
- end
105
-
106
- it "should cancel the destroy if before_destroy_hook block returns false" do
107
- @x.after_destroy_hook{r 1}
108
- @x.before_destroy_hook{r false}
109
- @x.before_destroy_hook{r 4}
110
- @x.destroy.must_equal nil
111
- @r.must_equal [4, false]
112
- end
113
-
114
- it "should support before_validation_hook and after_validation_hook" do
115
- @o.after_validation_hook{r 1}
116
- @o.before_validation_hook{r 2}
117
- @o.after_validation_hook{r 3}
118
- @o.before_validation_hook{r 4}
119
- @o.valid?.must_equal true
120
- @r.must_equal [4, 2, 1, 3]
121
- end
122
-
123
- it "should cancel the save if before_validation_hook block returns false" do
124
- @o.after_validation_hook{r 1}
125
- @o.before_validation_hook{r false}
126
- @o.before_validation_hook{r 4}
127
- @o.valid?.must_equal false
128
- @r.must_equal [4, false]
129
- @r.clear
130
- @o.valid?.must_equal false
131
- @r.must_equal [4, false]
132
- end
133
-
134
- it "should clear only related hooks on successful create" do
135
- @o.after_destroy_hook{r 1}
136
- @o.before_destroy_hook{r 2}
137
- @o.after_update_hook{r 3}
138
- @o.before_update_hook{r 4}
139
- @o.before_save_hook{r 5}
140
- @o.after_save_hook{r 6}
141
- @o.before_create_hook{r 7}
142
- @o.after_create_hook{r 8}
143
- @o.save.wont_equal nil
144
- @r.must_equal [5, 7, 8, 6]
145
- @o.instance_variable_set(:@new, false)
146
- @o.save.wont_equal nil
147
- @r.must_equal [5, 7, 8, 6, 4, 3]
148
- @o.save.wont_equal nil
149
- @r.must_equal [5, 7, 8, 6, 4, 3]
150
- @o.destroy
151
- @r.must_equal [5, 7, 8, 6, 4, 3, 2, 1]
152
- end
153
-
154
- it "should clear only related hooks on successful update" do
155
- @x.after_destroy_hook{r 1}
156
- @x.before_destroy_hook{r 2}
157
- @x.before_update_hook{r 3}
158
- @x.after_update_hook{r 4}
159
- @x.before_save_hook{r 5}
160
- @x.after_save_hook{r 6}
161
- @x.save.wont_equal nil
162
- @r.must_equal [5, 3, 4, 6]
163
- @x.save.wont_equal nil
164
- @r.must_equal [5, 3, 4, 6]
165
- @x.destroy
166
- @r.must_equal [5, 3, 4, 6, 2, 1]
167
- end
168
-
169
- it "should clear only related hooks on successful destroy" do
170
- @x.after_destroy_hook{r 1}
171
- @x.before_destroy_hook{r 2}
172
- @x.before_update_hook{r 3}
173
- @x.before_save_hook{r 4}
174
- @x.destroy
175
- @r.must_equal [2, 1]
176
- @x.save.wont_equal nil
177
- @r.must_equal [2, 1, 4, 3]
178
- end
179
-
180
- it "should not clear validations hooks on successful save" do
181
- @x.after_validation_hook{@x.errors.add(:id, 'a') if @x.id == 1; r 1}
182
- @x.before_validation_hook{r 2}
183
- @x.save.must_equal nil
184
- @r.must_equal [2, 1]
185
- @x.save.must_equal nil
186
- @r.must_equal [2, 1, 2, 1]
187
- @x.id = 2
188
- @x.save.must_equal @x
189
- @r.must_equal [2, 1, 2, 1, 2, 1]
190
- @x.save.must_equal @x
191
- @r.must_equal [2, 1, 2, 1, 2, 1]
192
- end
193
-
194
- it "should not allow addition of instance hooks to frozen instances" do
195
- @x.after_destroy_hook{r 1}
196
- @x.before_destroy_hook{r 2}
197
- @x.before_update_hook{r 3}
198
- @x.before_save_hook{r 4}
199
- @x.freeze
200
- proc{@x.after_destroy_hook{r 1}}.must_raise(Sequel::Error)
201
- proc{@x.before_destroy_hook{r 2}}.must_raise(Sequel::Error)
202
- proc{@x.before_update_hook{r 3}}.must_raise(Sequel::Error)
203
- proc{@x.before_save_hook{r 4}}.must_raise(Sequel::Error)
204
- end
205
- end
206
-
207
- describe "InstanceHooks plugin with transactions" do
208
- before do
209
- @db = Sequel.mock(:numrows=>1)
210
- @c = Class.new(Sequel::Model(@db[:items])) do
211
- attr_accessor :rb
212
- def after_save
213
- db.execute('as')
214
- raise Sequel::Rollback if rb
215
- end
216
- def after_destroy
217
- db.execute('ad')
218
- raise Sequel::Rollback if rb
219
- end
220
- end
221
- @c.use_transactions = true
222
- @c.plugin :instance_hooks
223
- @o = @c.load({:id=>1})
224
- @or = @c.load({:id=>1})
225
- @or.rb = true
226
- @r = []
227
- @db.sqls
228
- end
229
-
230
- it "should support after_commit_hook" do
231
- @o.after_commit_hook{@db.execute('ac1')}
232
- @o.after_commit_hook{@db.execute('ac2')}
233
- @o.save.wont_equal nil
234
- @db.sqls.must_equal ['BEGIN', 'as', 'COMMIT', 'ac1', 'ac2']
235
- end
236
-
237
- it "should support after_rollback_hook" do
238
- @or.after_rollback_hook{@db.execute('ar1')}
239
- @or.after_rollback_hook{@db.execute('ar2')}
240
- @or.save.must_equal nil
241
- @db.sqls.must_equal ['BEGIN', 'as', 'ROLLBACK', 'ar1', 'ar2']
242
- end
243
-
244
- it "should support after_commit_hook" do
245
- @o.after_destroy_commit_hook{@db.execute('adc1')}
246
- @o.after_destroy_commit_hook{@db.execute('adc2')}
247
- @o.destroy.wont_equal nil
248
- @db.sqls.must_equal ['BEGIN', "DELETE FROM items WHERE (id = 1)", 'ad', 'COMMIT', 'adc1', 'adc2']
249
- end
250
-
251
- it "should support after_rollback_hook" do
252
- @or.after_destroy_rollback_hook{@db.execute('adr1')}
253
- @or.after_destroy_rollback_hook{@db.execute('adr2')}
254
- @or.destroy.must_equal nil
255
- @db.sqls.must_equal ['BEGIN', "DELETE FROM items WHERE (id = 1)", 'ad', 'ROLLBACK', 'adr1', 'adr2']
256
- end
257
-
258
- it "should have *_hook methods return self "do
259
- @o.before_destroy_hook{r 1}.must_be_same_as(@o)
260
- @o.before_validation_hook{r 1}.must_be_same_as(@o)
261
- @o.before_save_hook{r 1}.must_be_same_as(@o)
262
- @o.before_update_hook{r 1}.must_be_same_as(@o)
263
- @o.before_create_hook{r 1}.must_be_same_as(@o)
264
-
265
- @o.after_destroy_hook{r 1}.must_be_same_as(@o)
266
- @o.after_validation_hook{r 1}.must_be_same_as(@o)
267
- @o.after_save_hook{r 1}.must_be_same_as(@o)
268
- @o.after_update_hook{r 1}.must_be_same_as(@o)
269
- @o.after_create_hook{r 1}.must_be_same_as(@o)
270
- @o.after_commit_hook{r 1}.must_be_same_as(@o)
271
- @o.after_rollback_hook{r 1}.must_be_same_as(@o)
272
- @o.after_destroy_commit_hook{r 1}.must_be_same_as(@o)
273
- @o.after_destroy_rollback_hook{r 1}.must_be_same_as(@o)
274
- end
275
-
276
- end