sequel 4.49.0 → 5.0.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 (477) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +70 -0
  3. data/README.rdoc +195 -136
  4. data/Rakefile +26 -42
  5. data/bin/sequel +3 -5
  6. data/doc/advanced_associations.rdoc +86 -163
  7. data/doc/association_basics.rdoc +197 -274
  8. data/doc/bin_sequel.rdoc +5 -3
  9. data/doc/cheat_sheet.rdoc +66 -43
  10. data/doc/code_order.rdoc +1 -8
  11. data/doc/core_extensions.rdoc +81 -56
  12. data/doc/dataset_basics.rdoc +8 -17
  13. data/doc/dataset_filtering.rdoc +81 -86
  14. data/doc/extensions.rdoc +3 -10
  15. data/doc/mass_assignment.rdoc +73 -30
  16. data/doc/migration.rdoc +19 -36
  17. data/doc/model_dataset_method_design.rdoc +14 -17
  18. data/doc/model_hooks.rdoc +15 -25
  19. data/doc/model_plugins.rdoc +10 -10
  20. data/doc/mssql_stored_procedures.rdoc +3 -3
  21. data/doc/object_model.rdoc +52 -70
  22. data/doc/opening_databases.rdoc +39 -32
  23. data/doc/postgresql.rdoc +48 -38
  24. data/doc/prepared_statements.rdoc +27 -22
  25. data/doc/querying.rdoc +173 -150
  26. data/doc/reflection.rdoc +5 -6
  27. data/doc/release_notes/5.0.0.txt +159 -0
  28. data/doc/schema_modification.rdoc +63 -60
  29. data/doc/security.rdoc +97 -88
  30. data/doc/sharding.rdoc +43 -30
  31. data/doc/sql.rdoc +53 -65
  32. data/doc/testing.rdoc +3 -5
  33. data/doc/thread_safety.rdoc +2 -4
  34. data/doc/transactions.rdoc +18 -17
  35. data/doc/validations.rdoc +48 -45
  36. data/doc/virtual_rows.rdoc +87 -115
  37. data/lib/sequel.rb +1 -1
  38. data/lib/sequel/adapters/ado.rb +9 -25
  39. data/lib/sequel/adapters/ado/access.rb +7 -13
  40. data/lib/sequel/adapters/ado/mssql.rb +2 -9
  41. data/lib/sequel/adapters/amalgalite.rb +3 -18
  42. data/lib/sequel/adapters/ibmdb.rb +9 -45
  43. data/lib/sequel/adapters/jdbc.rb +13 -73
  44. data/lib/sequel/adapters/jdbc/db2.rb +8 -37
  45. data/lib/sequel/adapters/jdbc/derby.rb +4 -50
  46. data/lib/sequel/adapters/jdbc/h2.rb +4 -25
  47. data/lib/sequel/adapters/jdbc/hsqldb.rb +1 -26
  48. data/lib/sequel/adapters/jdbc/jtds.rb +2 -9
  49. data/lib/sequel/adapters/jdbc/mssql.rb +1 -11
  50. data/lib/sequel/adapters/jdbc/mysql.rb +1 -15
  51. data/lib/sequel/adapters/jdbc/oracle.rb +4 -26
  52. data/lib/sequel/adapters/jdbc/postgresql.rb +2 -31
  53. data/lib/sequel/adapters/jdbc/sqlanywhere.rb +4 -17
  54. data/lib/sequel/adapters/jdbc/sqlite.rb +1 -7
  55. data/lib/sequel/adapters/jdbc/sqlserver.rb +1 -13
  56. data/lib/sequel/adapters/jdbc/transactions.rb +1 -14
  57. data/lib/sequel/adapters/mock.rb +4 -30
  58. data/lib/sequel/adapters/mysql.rb +7 -44
  59. data/lib/sequel/adapters/mysql2.rb +5 -23
  60. data/lib/sequel/adapters/odbc.rb +0 -19
  61. data/lib/sequel/adapters/odbc/db2.rb +1 -1
  62. data/lib/sequel/adapters/odbc/mssql.rb +4 -12
  63. data/lib/sequel/adapters/odbc/oracle.rb +1 -1
  64. data/lib/sequel/adapters/oracle.rb +7 -13
  65. data/lib/sequel/adapters/postgres.rb +13 -57
  66. data/lib/sequel/adapters/postgresql.rb +1 -1
  67. data/lib/sequel/adapters/shared/access.rb +11 -51
  68. data/lib/sequel/adapters/shared/db2.rb +3 -61
  69. data/lib/sequel/adapters/shared/mssql.rb +21 -157
  70. data/lib/sequel/adapters/shared/mysql.rb +23 -224
  71. data/lib/sequel/adapters/shared/oracle.rb +13 -41
  72. data/lib/sequel/adapters/shared/postgres.rb +44 -259
  73. data/lib/sequel/adapters/shared/sqlanywhere.rb +4 -96
  74. data/lib/sequel/adapters/shared/sqlite.rb +12 -101
  75. data/lib/sequel/adapters/sqlanywhere.rb +4 -23
  76. data/lib/sequel/adapters/sqlite.rb +2 -19
  77. data/lib/sequel/adapters/tinytds.rb +5 -15
  78. data/lib/sequel/adapters/utils/emulate_offset_with_row_number.rb +1 -1
  79. data/lib/sequel/adapters/utils/mysql_mysql2.rb +2 -4
  80. data/lib/sequel/adapters/utils/mysql_prepared_statements.rb +3 -6
  81. data/lib/sequel/adapters/utils/replace.rb +0 -5
  82. data/lib/sequel/adapters/utils/stored_procedures.rb +0 -2
  83. data/lib/sequel/adapters/utils/unmodified_identifiers.rb +2 -0
  84. data/lib/sequel/ast_transformer.rb +3 -94
  85. data/lib/sequel/connection_pool.rb +26 -28
  86. data/lib/sequel/connection_pool/sharded_single.rb +1 -4
  87. data/lib/sequel/connection_pool/sharded_threaded.rb +97 -95
  88. data/lib/sequel/connection_pool/single.rb +0 -2
  89. data/lib/sequel/connection_pool/threaded.rb +94 -110
  90. data/lib/sequel/core.rb +42 -101
  91. data/lib/sequel/database.rb +12 -2
  92. data/lib/sequel/database/connecting.rb +23 -60
  93. data/lib/sequel/database/dataset.rb +6 -9
  94. data/lib/sequel/database/dataset_defaults.rb +4 -48
  95. data/lib/sequel/database/features.rb +5 -4
  96. data/lib/sequel/database/logging.rb +2 -9
  97. data/lib/sequel/database/misc.rb +23 -55
  98. data/lib/sequel/database/query.rb +8 -13
  99. data/lib/sequel/database/schema_generator.rb +89 -64
  100. data/lib/sequel/database/schema_methods.rb +61 -79
  101. data/lib/sequel/database/transactions.rb +4 -24
  102. data/lib/sequel/dataset.rb +18 -10
  103. data/lib/sequel/dataset/actions.rb +53 -107
  104. data/lib/sequel/dataset/dataset_module.rb +3 -15
  105. data/lib/sequel/dataset/features.rb +30 -30
  106. data/lib/sequel/dataset/graph.rb +40 -49
  107. data/lib/sequel/dataset/misc.rb +12 -37
  108. data/lib/sequel/dataset/placeholder_literalizer.rb +4 -4
  109. data/lib/sequel/dataset/prepared_statements.rb +23 -51
  110. data/lib/sequel/dataset/query.rb +71 -155
  111. data/lib/sequel/dataset/sql.rb +30 -225
  112. data/lib/sequel/deprecated.rb +18 -27
  113. data/lib/sequel/exceptions.rb +1 -17
  114. data/lib/sequel/extensions/_model_pg_row.rb +0 -7
  115. data/lib/sequel/extensions/_pretty_table.rb +1 -3
  116. data/lib/sequel/extensions/arbitrary_servers.rb +10 -10
  117. data/lib/sequel/extensions/connection_expiration.rb +1 -1
  118. data/lib/sequel/extensions/connection_validator.rb +1 -1
  119. data/lib/sequel/extensions/constraint_validations.rb +11 -11
  120. data/lib/sequel/extensions/core_extensions.rb +39 -49
  121. data/lib/sequel/extensions/core_refinements.rb +39 -45
  122. data/lib/sequel/extensions/current_datetime_timestamp.rb +0 -4
  123. data/lib/sequel/extensions/date_arithmetic.rb +7 -7
  124. data/lib/sequel/extensions/duplicate_columns_handler.rb +12 -9
  125. data/lib/sequel/extensions/empty_array_consider_nulls.rb +2 -2
  126. data/lib/sequel/extensions/eval_inspect.rb +4 -11
  127. data/lib/sequel/extensions/freeze_datasets.rb +1 -69
  128. data/lib/sequel/extensions/from_block.rb +1 -35
  129. data/lib/sequel/extensions/graph_each.rb +2 -2
  130. data/lib/sequel/extensions/identifier_mangling.rb +9 -19
  131. data/lib/sequel/extensions/implicit_subquery.rb +2 -2
  132. data/lib/sequel/extensions/inflector.rb +4 -4
  133. data/lib/sequel/extensions/migration.rb +23 -40
  134. data/lib/sequel/extensions/no_auto_literal_strings.rb +2 -84
  135. data/lib/sequel/extensions/null_dataset.rb +2 -8
  136. data/lib/sequel/extensions/pagination.rb +1 -17
  137. data/lib/sequel/extensions/pg_array.rb +20 -189
  138. data/lib/sequel/extensions/pg_hstore.rb +11 -50
  139. data/lib/sequel/extensions/pg_hstore_ops.rb +2 -2
  140. data/lib/sequel/extensions/pg_inet.rb +2 -15
  141. data/lib/sequel/extensions/pg_interval.rb +1 -20
  142. data/lib/sequel/extensions/pg_json.rb +7 -27
  143. data/lib/sequel/extensions/pg_loose_count.rb +1 -1
  144. data/lib/sequel/extensions/pg_range.rb +6 -121
  145. data/lib/sequel/extensions/pg_range_ops.rb +1 -3
  146. data/lib/sequel/extensions/pg_row.rb +5 -77
  147. data/lib/sequel/extensions/pg_row_ops.rb +2 -13
  148. data/lib/sequel/extensions/query.rb +3 -4
  149. data/lib/sequel/extensions/round_timestamps.rb +0 -6
  150. data/lib/sequel/extensions/schema_dumper.rb +13 -13
  151. data/lib/sequel/extensions/select_remove.rb +3 -3
  152. data/lib/sequel/extensions/split_array_nil.rb +2 -2
  153. data/lib/sequel/extensions/sql_comments.rb +2 -2
  154. data/lib/sequel/extensions/string_agg.rb +11 -8
  155. data/lib/sequel/extensions/symbol_aref.rb +6 -20
  156. data/lib/sequel/model.rb +27 -62
  157. data/lib/sequel/model/associations.rb +128 -131
  158. data/lib/sequel/model/base.rb +171 -711
  159. data/lib/sequel/model/default_inflections.rb +1 -1
  160. data/lib/sequel/model/errors.rb +0 -3
  161. data/lib/sequel/model/exceptions.rb +2 -6
  162. data/lib/sequel/model/inflections.rb +1 -26
  163. data/lib/sequel/model/plugins.rb +1 -0
  164. data/lib/sequel/plugins/active_model.rb +2 -5
  165. data/lib/sequel/plugins/association_dependencies.rb +15 -15
  166. data/lib/sequel/plugins/association_pks.rb +14 -28
  167. data/lib/sequel/plugins/association_proxies.rb +6 -7
  168. data/lib/sequel/plugins/auto_validations.rb +4 -4
  169. data/lib/sequel/plugins/before_after_save.rb +0 -43
  170. data/lib/sequel/plugins/blacklist_security.rb +9 -8
  171. data/lib/sequel/plugins/boolean_readers.rb +3 -3
  172. data/lib/sequel/plugins/boolean_subsets.rb +2 -2
  173. data/lib/sequel/plugins/caching.rb +5 -5
  174. data/lib/sequel/plugins/class_table_inheritance.rb +71 -102
  175. data/lib/sequel/plugins/column_conflicts.rb +2 -2
  176. data/lib/sequel/plugins/column_select.rb +2 -2
  177. data/lib/sequel/plugins/composition.rb +15 -24
  178. data/lib/sequel/plugins/constraint_validations.rb +4 -3
  179. data/lib/sequel/plugins/csv_serializer.rb +13 -20
  180. data/lib/sequel/plugins/dataset_associations.rb +2 -2
  181. data/lib/sequel/plugins/def_dataset_method.rb +5 -5
  182. data/lib/sequel/plugins/defaults_setter.rb +1 -1
  183. data/lib/sequel/plugins/delay_add_association.rb +1 -1
  184. data/lib/sequel/plugins/finder.rb +16 -10
  185. data/lib/sequel/plugins/force_encoding.rb +1 -7
  186. data/lib/sequel/plugins/hook_class_methods.rb +4 -106
  187. data/lib/sequel/plugins/input_transformer.rb +10 -11
  188. data/lib/sequel/plugins/insert_returning_select.rb +1 -9
  189. data/lib/sequel/plugins/instance_filters.rb +5 -5
  190. data/lib/sequel/plugins/instance_hooks.rb +7 -52
  191. data/lib/sequel/plugins/inverted_subsets.rb +3 -1
  192. data/lib/sequel/plugins/json_serializer.rb +19 -19
  193. data/lib/sequel/plugins/lazy_attributes.rb +1 -10
  194. data/lib/sequel/plugins/list.rb +6 -6
  195. data/lib/sequel/plugins/many_through_many.rb +11 -8
  196. data/lib/sequel/plugins/mssql_optimistic_locking.rb +3 -3
  197. data/lib/sequel/plugins/nested_attributes.rb +18 -31
  198. data/lib/sequel/plugins/optimistic_locking.rb +3 -3
  199. data/lib/sequel/plugins/pg_array_associations.rb +8 -2
  200. data/lib/sequel/plugins/pg_row.rb +2 -11
  201. data/lib/sequel/plugins/prepared_statements.rb +13 -66
  202. data/lib/sequel/plugins/prepared_statements_safe.rb +1 -1
  203. data/lib/sequel/plugins/rcte_tree.rb +7 -7
  204. data/lib/sequel/plugins/serialization.rb +15 -33
  205. data/lib/sequel/plugins/serialization_modification_detection.rb +1 -1
  206. data/lib/sequel/plugins/sharding.rb +2 -8
  207. data/lib/sequel/plugins/single_table_inheritance.rb +10 -13
  208. data/lib/sequel/plugins/skip_create_refresh.rb +3 -3
  209. data/lib/sequel/plugins/static_cache.rb +8 -9
  210. data/lib/sequel/plugins/string_stripper.rb +3 -3
  211. data/lib/sequel/plugins/subclasses.rb +1 -1
  212. data/lib/sequel/plugins/subset_conditions.rb +2 -2
  213. data/lib/sequel/plugins/table_select.rb +2 -2
  214. data/lib/sequel/plugins/tactical_eager_loading.rb +4 -4
  215. data/lib/sequel/plugins/timestamps.rb +6 -7
  216. data/lib/sequel/plugins/touch.rb +4 -8
  217. data/lib/sequel/plugins/tree.rb +3 -3
  218. data/lib/sequel/plugins/typecast_on_load.rb +2 -2
  219. data/lib/sequel/plugins/unlimited_update.rb +1 -7
  220. data/lib/sequel/plugins/update_or_create.rb +3 -3
  221. data/lib/sequel/plugins/update_refresh.rb +3 -3
  222. data/lib/sequel/plugins/uuid.rb +7 -11
  223. data/lib/sequel/plugins/validation_class_methods.rb +10 -9
  224. data/lib/sequel/plugins/validation_contexts.rb +4 -4
  225. data/lib/sequel/plugins/validation_helpers.rb +26 -25
  226. data/lib/sequel/plugins/whitelist_security.rb +13 -9
  227. data/lib/sequel/plugins/xml_serializer.rb +24 -25
  228. data/lib/sequel/sql.rb +145 -276
  229. data/lib/sequel/timezones.rb +8 -22
  230. data/lib/sequel/version.rb +2 -2
  231. data/spec/adapter_spec.rb +1 -1
  232. data/spec/adapters/db2_spec.rb +2 -103
  233. data/spec/adapters/mssql_spec.rb +89 -68
  234. data/spec/adapters/mysql_spec.rb +101 -480
  235. data/spec/adapters/oracle_spec.rb +1 -9
  236. data/spec/adapters/postgres_spec.rb +312 -565
  237. data/spec/adapters/spec_helper.rb +12 -31
  238. data/spec/adapters/sqlanywhere_spec.rb +2 -77
  239. data/spec/adapters/sqlite_spec.rb +8 -146
  240. data/spec/bin_spec.rb +11 -16
  241. data/spec/core/connection_pool_spec.rb +173 -74
  242. data/spec/core/database_spec.rb +64 -244
  243. data/spec/core/dataset_spec.rb +81 -415
  244. data/spec/core/deprecated_spec.rb +3 -3
  245. data/spec/core/expression_filters_spec.rb +37 -144
  246. data/spec/core/mock_adapter_spec.rb +176 -4
  247. data/spec/core/object_graph_spec.rb +11 -60
  248. data/spec/core/placeholder_literalizer_spec.rb +1 -14
  249. data/spec/core/schema_generator_spec.rb +51 -40
  250. data/spec/core/schema_spec.rb +74 -77
  251. data/spec/core/spec_helper.rb +6 -24
  252. data/spec/core/version_spec.rb +1 -1
  253. data/spec/core_extensions_spec.rb +7 -83
  254. data/spec/core_model_spec.rb +2 -2
  255. data/spec/deprecation_helper.rb +2 -14
  256. data/spec/extensions/accessed_columns_spec.rb +1 -1
  257. data/spec/extensions/active_model_spec.rb +3 -3
  258. data/spec/extensions/after_initialize_spec.rb +1 -1
  259. data/spec/extensions/arbitrary_servers_spec.rb +2 -2
  260. data/spec/extensions/association_dependencies_spec.rb +1 -1
  261. data/spec/extensions/association_pks_spec.rb +4 -59
  262. data/spec/extensions/association_proxies_spec.rb +1 -1
  263. data/spec/extensions/auto_literal_strings_spec.rb +1 -12
  264. data/spec/extensions/auto_validations_spec.rb +1 -1
  265. data/spec/extensions/blacklist_security_spec.rb +1 -1
  266. data/spec/extensions/blank_spec.rb +1 -1
  267. data/spec/extensions/boolean_readers_spec.rb +1 -1
  268. data/spec/extensions/boolean_subsets_spec.rb +1 -1
  269. data/spec/extensions/caching_spec.rb +1 -1
  270. data/spec/extensions/class_table_inheritance_spec.rb +35 -1086
  271. data/spec/extensions/column_conflicts_spec.rb +1 -1
  272. data/spec/extensions/column_select_spec.rb +4 -4
  273. data/spec/extensions/columns_introspection_spec.rb +1 -1
  274. data/spec/extensions/columns_updated_spec.rb +1 -1
  275. data/spec/extensions/composition_spec.rb +1 -7
  276. data/spec/extensions/connection_expiration_spec.rb +3 -3
  277. data/spec/extensions/connection_validator_spec.rb +3 -3
  278. data/spec/extensions/constraint_validations_plugin_spec.rb +1 -1
  279. data/spec/extensions/constraint_validations_spec.rb +1 -1
  280. data/spec/extensions/core_refinements_spec.rb +1 -3
  281. data/spec/extensions/csv_serializer_spec.rb +4 -9
  282. data/spec/extensions/current_datetime_timestamp_spec.rb +1 -1
  283. data/spec/extensions/dataset_associations_spec.rb +2 -1
  284. data/spec/extensions/dataset_source_alias_spec.rb +1 -1
  285. data/spec/extensions/date_arithmetic_spec.rb +3 -3
  286. data/spec/extensions/def_dataset_method_spec.rb +1 -1
  287. data/spec/extensions/defaults_setter_spec.rb +2 -2
  288. data/spec/extensions/delay_add_association_spec.rb +8 -9
  289. data/spec/extensions/dirty_spec.rb +1 -1
  290. data/spec/extensions/duplicate_columns_handler_spec.rb +1 -1
  291. data/spec/extensions/eager_each_spec.rb +2 -2
  292. data/spec/extensions/empty_array_consider_nulls_spec.rb +1 -1
  293. data/spec/extensions/error_splitter_spec.rb +1 -1
  294. data/spec/extensions/error_sql_spec.rb +1 -1
  295. data/spec/extensions/eval_inspect_spec.rb +1 -1
  296. data/spec/extensions/finder_spec.rb +1 -1
  297. data/spec/extensions/force_encoding_spec.rb +2 -5
  298. data/spec/extensions/freeze_datasets_spec.rb +1 -1
  299. data/spec/extensions/graph_each_spec.rb +5 -5
  300. data/spec/extensions/hook_class_methods_spec.rb +1 -194
  301. data/spec/extensions/identifier_mangling_spec.rb +17 -170
  302. data/spec/extensions/implicit_subquery_spec.rb +1 -5
  303. data/spec/extensions/inflector_spec.rb +1 -1
  304. data/spec/extensions/input_transformer_spec.rb +7 -2
  305. data/spec/extensions/insert_returning_select_spec.rb +1 -1
  306. data/spec/extensions/instance_filters_spec.rb +1 -1
  307. data/spec/extensions/instance_hooks_spec.rb +1 -95
  308. data/spec/extensions/inverted_subsets_spec.rb +1 -1
  309. data/spec/extensions/json_serializer_spec.rb +1 -1
  310. data/spec/extensions/lazy_attributes_spec.rb +1 -7
  311. data/spec/extensions/list_spec.rb +1 -1
  312. data/spec/extensions/looser_typecasting_spec.rb +1 -1
  313. data/spec/extensions/many_through_many_spec.rb +1 -1
  314. data/spec/extensions/migration_spec.rb +2 -2
  315. data/spec/extensions/modification_detection_spec.rb +1 -1
  316. data/spec/extensions/mssql_optimistic_locking_spec.rb +1 -1
  317. data/spec/extensions/named_timezones_spec.rb +3 -3
  318. data/spec/extensions/nested_attributes_spec.rb +1 -29
  319. data/spec/extensions/null_dataset_spec.rb +1 -11
  320. data/spec/extensions/optimistic_locking_spec.rb +1 -1
  321. data/spec/extensions/pagination_spec.rb +1 -1
  322. data/spec/extensions/pg_array_associations_spec.rb +4 -1
  323. data/spec/extensions/pg_array_ops_spec.rb +1 -1
  324. data/spec/extensions/pg_array_spec.rb +3 -48
  325. data/spec/extensions/pg_enum_spec.rb +1 -1
  326. data/spec/extensions/pg_hstore_ops_spec.rb +1 -1
  327. data/spec/extensions/pg_hstore_spec.rb +23 -32
  328. data/spec/extensions/pg_inet_ops_spec.rb +1 -1
  329. data/spec/extensions/pg_inet_spec.rb +1 -14
  330. data/spec/extensions/pg_interval_spec.rb +3 -13
  331. data/spec/extensions/pg_json_ops_spec.rb +1 -1
  332. data/spec/extensions/pg_json_spec.rb +1 -13
  333. data/spec/extensions/pg_loose_count_spec.rb +1 -1
  334. data/spec/extensions/pg_range_ops_spec.rb +1 -1
  335. data/spec/extensions/pg_range_spec.rb +3 -88
  336. data/spec/extensions/pg_row_ops_spec.rb +1 -1
  337. data/spec/extensions/pg_row_plugin_spec.rb +1 -1
  338. data/spec/extensions/pg_row_spec.rb +1 -44
  339. data/spec/extensions/pg_static_cache_updater_spec.rb +1 -1
  340. data/spec/extensions/prepared_statements_safe_spec.rb +1 -1
  341. data/spec/extensions/prepared_statements_spec.rb +13 -48
  342. data/spec/extensions/pretty_table_spec.rb +1 -1
  343. data/spec/extensions/query_spec.rb +1 -12
  344. data/spec/extensions/rcte_tree_spec.rb +1 -1
  345. data/spec/extensions/round_timestamps_spec.rb +1 -5
  346. data/spec/extensions/s_spec.rb +1 -1
  347. data/spec/extensions/schema_caching_spec.rb +1 -1
  348. data/spec/extensions/schema_dumper_spec.rb +1 -1
  349. data/spec/extensions/select_remove_spec.rb +1 -1
  350. data/spec/extensions/sequel_4_dataset_methods_spec.rb +1 -1
  351. data/spec/extensions/serialization_modification_detection_spec.rb +1 -1
  352. data/spec/extensions/serialization_spec.rb +2 -14
  353. data/spec/extensions/server_block_spec.rb +1 -1
  354. data/spec/extensions/server_logging_spec.rb +2 -2
  355. data/spec/extensions/sharding_spec.rb +1 -1
  356. data/spec/extensions/shared_caching_spec.rb +1 -28
  357. data/spec/extensions/single_table_inheritance_spec.rb +2 -5
  358. data/spec/extensions/singular_table_names_spec.rb +1 -1
  359. data/spec/extensions/skip_create_refresh_spec.rb +1 -1
  360. data/spec/extensions/spec_helper.rb +5 -27
  361. data/spec/extensions/split_array_nil_spec.rb +1 -1
  362. data/spec/extensions/split_values_spec.rb +1 -1
  363. data/spec/extensions/sql_comments_spec.rb +1 -1
  364. data/spec/extensions/sql_expr_spec.rb +1 -1
  365. data/spec/extensions/static_cache_spec.rb +1 -1
  366. data/spec/extensions/string_agg_spec.rb +2 -2
  367. data/spec/extensions/string_date_time_spec.rb +1 -1
  368. data/spec/extensions/string_stripper_spec.rb +1 -1
  369. data/spec/extensions/subclasses_spec.rb +1 -1
  370. data/spec/extensions/subset_conditions_spec.rb +1 -1
  371. data/spec/extensions/symbol_aref_refinement_spec.rb +1 -1
  372. data/spec/extensions/symbol_as_refinement_spec.rb +1 -1
  373. data/spec/extensions/table_select_spec.rb +4 -4
  374. data/spec/extensions/tactical_eager_loading_spec.rb +1 -6
  375. data/spec/extensions/thread_local_timezones_spec.rb +1 -1
  376. data/spec/extensions/timestamps_spec.rb +3 -3
  377. data/spec/extensions/to_dot_spec.rb +1 -1
  378. data/spec/extensions/touch_spec.rb +1 -1
  379. data/spec/extensions/tree_spec.rb +1 -1
  380. data/spec/extensions/typecast_on_load_spec.rb +1 -1
  381. data/spec/extensions/unlimited_update_spec.rb +1 -1
  382. data/spec/extensions/update_or_create_spec.rb +1 -1
  383. data/spec/extensions/update_primary_key_spec.rb +4 -3
  384. data/spec/extensions/update_refresh_spec.rb +1 -1
  385. data/spec/extensions/uuid_spec.rb +10 -12
  386. data/spec/extensions/validate_associated_spec.rb +1 -1
  387. data/spec/extensions/validation_class_methods_spec.rb +3 -3
  388. data/spec/extensions/validation_contexts_spec.rb +1 -1
  389. data/spec/extensions/validation_helpers_spec.rb +10 -44
  390. data/spec/extensions/whitelist_security_spec.rb +5 -5
  391. data/spec/extensions/xml_serializer_spec.rb +3 -3
  392. data/spec/guards_helper.rb +2 -1
  393. data/spec/integration/associations_test.rb +1 -23
  394. data/spec/integration/database_test.rb +7 -7
  395. data/spec/integration/dataset_test.rb +5 -47
  396. data/spec/integration/eager_loader_test.rb +1 -1
  397. data/spec/integration/migrator_test.rb +1 -1
  398. data/spec/integration/model_test.rb +4 -82
  399. data/spec/integration/plugin_test.rb +6 -22
  400. data/spec/integration/prepared_statement_test.rb +8 -88
  401. data/spec/integration/schema_test.rb +6 -6
  402. data/spec/integration/spec_helper.rb +13 -21
  403. data/spec/integration/timezone_test.rb +5 -5
  404. data/spec/integration/transaction_test.rb +3 -55
  405. data/spec/integration/type_test.rb +9 -9
  406. data/spec/model/association_reflection_spec.rb +24 -9
  407. data/spec/model/associations_spec.rb +124 -303
  408. data/spec/model/base_spec.rb +18 -137
  409. data/spec/model/class_dataset_methods_spec.rb +2 -20
  410. data/spec/model/dataset_methods_spec.rb +1 -20
  411. data/spec/model/eager_loading_spec.rb +17 -11
  412. data/spec/model/hooks_spec.rb +5 -300
  413. data/spec/model/inflector_spec.rb +1 -1
  414. data/spec/model/model_spec.rb +15 -320
  415. data/spec/model/plugins_spec.rb +2 -16
  416. data/spec/model/record_spec.rb +29 -121
  417. data/spec/model/spec_helper.rb +5 -15
  418. data/spec/model/validations_spec.rb +1 -1
  419. data/spec/sequel_warning.rb +1 -12
  420. metadata +8 -64
  421. data/doc/active_record.rdoc +0 -927
  422. data/lib/sequel/adapters/cubrid.rb +0 -160
  423. data/lib/sequel/adapters/do.rb +0 -166
  424. data/lib/sequel/adapters/do/mysql.rb +0 -69
  425. data/lib/sequel/adapters/do/postgres.rb +0 -46
  426. data/lib/sequel/adapters/do/sqlite3.rb +0 -41
  427. data/lib/sequel/adapters/jdbc/as400.rb +0 -92
  428. data/lib/sequel/adapters/jdbc/cubrid.rb +0 -65
  429. data/lib/sequel/adapters/jdbc/firebirdsql.rb +0 -37
  430. data/lib/sequel/adapters/jdbc/informix-sqli.rb +0 -34
  431. data/lib/sequel/adapters/jdbc/jdbcprogress.rb +0 -34
  432. data/lib/sequel/adapters/odbc/progress.rb +0 -12
  433. data/lib/sequel/adapters/shared/cubrid.rb +0 -245
  434. data/lib/sequel/adapters/shared/firebird.rb +0 -261
  435. data/lib/sequel/adapters/shared/informix.rb +0 -63
  436. data/lib/sequel/adapters/shared/progress.rb +0 -40
  437. data/lib/sequel/adapters/swift.rb +0 -169
  438. data/lib/sequel/adapters/swift/mysql.rb +0 -50
  439. data/lib/sequel/adapters/swift/postgres.rb +0 -49
  440. data/lib/sequel/adapters/swift/sqlite.rb +0 -48
  441. data/lib/sequel/adapters/utils/pg_types.rb +0 -4
  442. data/lib/sequel/dataset/mutation.rb +0 -98
  443. data/lib/sequel/extensions/_deprecated_identifier_mangling.rb +0 -117
  444. data/lib/sequel/extensions/empty_array_ignore_nulls.rb +0 -8
  445. data/lib/sequel/extensions/filter_having.rb +0 -65
  446. data/lib/sequel/extensions/hash_aliases.rb +0 -51
  447. data/lib/sequel/extensions/meta_def.rb +0 -37
  448. data/lib/sequel/extensions/query_literals.rb +0 -86
  449. data/lib/sequel/extensions/ruby18_symbol_extensions.rb +0 -26
  450. data/lib/sequel/extensions/sequel_3_dataset_methods.rb +0 -133
  451. data/lib/sequel/extensions/set_overrides.rb +0 -82
  452. data/lib/sequel/no_core_ext.rb +0 -4
  453. data/lib/sequel/plugins/association_autoreloading.rb +0 -11
  454. data/lib/sequel/plugins/identifier_columns.rb +0 -49
  455. data/lib/sequel/plugins/many_to_one_pk_lookup.rb +0 -11
  456. data/lib/sequel/plugins/pg_typecast_on_load.rb +0 -90
  457. data/lib/sequel/plugins/prepared_statements_associations.rb +0 -137
  458. data/lib/sequel/plugins/prepared_statements_with_pk.rb +0 -71
  459. data/lib/sequel/plugins/schema.rb +0 -84
  460. data/lib/sequel/plugins/scissors.rb +0 -37
  461. data/spec/core/dataset_mutation_spec.rb +0 -253
  462. data/spec/extensions/_deprecated_identifier_mangling_spec.rb +0 -314
  463. data/spec/extensions/before_after_save_spec.rb +0 -40
  464. data/spec/extensions/filter_having_spec.rb +0 -42
  465. data/spec/extensions/from_block_spec.rb +0 -21
  466. data/spec/extensions/hash_aliases_spec.rb +0 -26
  467. data/spec/extensions/identifier_columns_spec.rb +0 -19
  468. data/spec/extensions/meta_def_spec.rb +0 -35
  469. data/spec/extensions/no_auto_literal_strings_spec.rb +0 -69
  470. data/spec/extensions/pg_typecast_on_load_spec.rb +0 -70
  471. data/spec/extensions/prepared_statements_associations_spec.rb +0 -212
  472. data/spec/extensions/prepared_statements_with_pk_spec.rb +0 -40
  473. data/spec/extensions/query_literals_spec.rb +0 -185
  474. data/spec/extensions/schema_spec.rb +0 -123
  475. data/spec/extensions/scissors_spec.rb +0 -27
  476. data/spec/extensions/sequel_3_dataset_methods_spec.rb +0 -118
  477. data/spec/extensions/set_overrides_spec.rb +0 -75
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "column_conflicts plugin" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::ColumnSelect" do
4
4
  def set_cols(*cols)
@@ -63,13 +63,13 @@ describe "Sequel::Plugins::ColumnSelect" do
63
63
  @Album.dataset.sql.must_equal 'SELECT name, artist FROM albums'
64
64
  end
65
65
 
66
- deprecated "should not add a explicit column selection on existing dataset with multiple tables" do
66
+ it "should work with implicit subqueries used for joined datasets" do
67
67
  @Album.dataset = @Album.db.from(:a1, :a2)
68
68
  @Album.plugin :column_select
69
- @Album.dataset.sql.must_equal 'SELECT * FROM a1, a2'
69
+ @Album.dataset.sql.must_equal "SELECT a1.id, a1.a, a1.b, a1.c FROM (SELECT * FROM a1, a2) AS a1"
70
70
 
71
71
  @Album.dataset = @Album.db.from(:a1).cross_join(:a2)
72
- @Album.dataset.sql.must_equal 'SELECT * FROM a1 CROSS JOIN a2'
72
+ @Album.dataset.sql.must_equal "SELECT a1.id, a1.a, a1.b, a1.c FROM (SELECT * FROM a1 CROSS JOIN a2) AS a1"
73
73
  end
74
74
 
75
75
  it "should add a explicit column selection on existing dataset with a subquery" do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
1
+ require_relative "spec_helper"
2
2
 
3
3
  Sequel.extension :columns_introspection
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::ColumnsUpdated" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Composition plugin" do
4
4
  before do
@@ -9,12 +9,6 @@ describe "Composition plugin" do
9
9
  DB.reset
10
10
  end
11
11
 
12
- deprecated "should allow access to composition_module" do
13
- @c.composition_module.must_be_kind_of Module
14
- @c.composition_module = v = Module.new
15
- @c.composition_module.must_equal v
16
- end
17
-
18
12
  it ".composition should add compositions" do
19
13
  @o.wont_respond_to(:date)
20
14
  @c.composition :date, :mapping=>[:year, :month, :day]
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  connection_expiration_specs = shared_description do
4
4
  describe "connection expiration" do
@@ -109,13 +109,13 @@ end
109
109
 
110
110
  describe "Sequel::ConnectionExpiration with threaded pool" do
111
111
  before do
112
- @db = Sequel.mock
112
+ @db = Sequel.mock(:test=>false)
113
113
  end
114
114
  include connection_expiration_specs
115
115
  end
116
116
  describe "Sequel::ConnectionExpiration with sharded threaded pool" do
117
117
  before do
118
- @db = Sequel.mock(:servers=>{})
118
+ @db = Sequel.mock(:test=>false, :servers=>{})
119
119
  end
120
120
  include connection_expiration_specs
121
121
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  connection_validator_specs = shared_description do
4
4
  describe "connection validator" do
@@ -114,13 +114,13 @@ end
114
114
 
115
115
  describe "Sequel::ConnectionValidator with threaded pool" do
116
116
  before do
117
- @db = Sequel.mock
117
+ @db = Sequel.mock(:test=>false)
118
118
  end
119
119
  include connection_validator_specs
120
120
  end
121
121
  describe "Sequel::ConnectionValidator with sharded threaded pool" do
122
122
  before do
123
- @db = Sequel.mock(:servers=>{})
123
+ @db = Sequel.mock(:test=>false, :servers=>{})
124
124
  end
125
125
  include connection_validator_specs
126
126
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::ConstraintValidations" do
4
4
  def model_class(opts={})
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "constraint_validations extension" do
4
4
  def parse_insert(s)
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  if (RUBY_VERSION >= '2.0.0' && RUBY_ENGINE == 'ruby') # || (RUBY_VERSION >= '2.3.0' && RUBY_ENGINE == 'jruby')
4
4
  Sequel.extension :core_refinements, :pg_array, :pg_hstore, :pg_row, :pg_range, :pg_row_ops, :pg_range_ops, :pg_array_ops, :pg_hstore_ops, :pg_json, :pg_json_ops
@@ -525,6 +525,4 @@ describe "Postgres extensions integration" do
525
525
  @db.literal((1..2).pg_range(:int4range)).must_equal "int4range(1,2,'[]')"
526
526
  end
527
527
  end
528
- else
529
- skip_warn "core_refinements extension: only works on ruby 2.0+"
530
528
  end
@@ -1,11 +1,7 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
-
3
- begin
4
- csv_lib = RUBY_VERSION < '1.9' ? 'fastercsv' : 'csv'
5
- require csv_lib
6
- rescue LoadError => e
7
- skip_warn "csv_serializer plugin: can't load #{csv_lib} (#{e.class}: #{e})"
8
- else
1
+ require_relative "spec_helper"
2
+
3
+ require 'csv'
4
+
9
5
  describe "Sequel::Plugins::CsvSerializer" do
10
6
  before do
11
7
  artist = @Artist = Class.new(Sequel::Model(:artists))
@@ -185,4 +181,3 @@ describe "Sequel::Plugins::CsvSerializer" do
185
181
  @Album.csv_serializer_opts[:only].frozen?.must_equal true
186
182
  end
187
183
  end
188
- end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), 'spec_helper')
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "current_datetime_timestamp extension" do
4
4
  before do
@@ -1,9 +1,10 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::DatasetAssociations" do
4
4
  before do
5
5
  @db = Sequel.mock(:host=>'postgres')
6
6
  @db.extend_datasets do
7
+ def quote_identifiers?; false end
7
8
  def supports_window_functions?; true; end
8
9
  def supports_distinct_on?; true; end
9
10
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "dataset_source_alias extension" do
4
4
  before do
@@ -1,10 +1,10 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  asd = begin
4
4
  require 'active_support/duration'
5
5
  true
6
- rescue LoadError => e
7
- skip_warn "date_arithmetic extension (partial): can't load active_support/duration (#{e.class}: #{e})"
6
+ rescue LoadError
7
+ warn "Skipping some tests of date_arithmetic extension: can't load active_support/duration"
8
8
  false
9
9
  end
10
10
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe Sequel::Model, ".def_dataset_method" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::DefaultsSetter" do
4
4
  before do
@@ -9,7 +9,7 @@ describe "Sequel::Plugins::DefaultsSetter" do
9
9
  @c.instance_variable_set(:@db_schema, {:a=>{}})
10
10
  @c.plugin :defaults_setter
11
11
  @c.columns :a
12
- @pr = proc{|x| meta_def(db, :schema){|*| [[:id, {:primary_key=>true}], [:a, {:ruby_default => x, :primary_key=>false}]]}; c.dataset = c.dataset; c}
12
+ @pr = proc{|x| db.define_singleton_method(:schema){|*| [[:id, {:primary_key=>true}], [:a, {:ruby_default => x, :primary_key=>false}]]}; c.dataset = c.dataset; c}
13
13
  end
14
14
  after do
15
15
  Sequel.datetime_class = Time
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::DelayAddAssociation" do
4
4
  before do
@@ -16,7 +16,7 @@ describe "Sequel::Plugins::DelayAddAssociation" do
16
16
  @o.add_c(@c.load(:id=>2, :name=>'b'))
17
17
  @db.sqls.must_equal []
18
18
  @o.save
19
- @db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "UPDATE cs SET c_id = 1 WHERE (id = 2)", "SELECT * FROM cs WHERE (id = 1) LIMIT 1"]
19
+ @db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "SELECT * FROM cs WHERE (id = 1) LIMIT 1", "UPDATE cs SET c_id = 1 WHERE (id = 2)"]
20
20
  end
21
21
 
22
22
  it "should immediately reflect changes in cached association" do
@@ -55,12 +55,11 @@ describe "Sequel::Plugins::DelayAddAssociation" do
55
55
  @o.add_c(:name=>'b')
56
56
  @db.sqls.must_equal []
57
57
  @o.save
58
- sqls = @db.sqls
59
- sqls.length.must_equal 4
60
- sqls[0].must_equal "INSERT INTO cs (name) VALUES ('a')"
61
- ["INSERT INTO cs (name, c_id) VALUES ('b', 1)", "INSERT INTO cs (c_id, name) VALUES (1, 'b')"].must_include sqls[1]
62
- sqls[2].must_equal "SELECT * FROM cs WHERE (id = 2) LIMIT 1"
63
- sqls[3].must_equal "SELECT * FROM cs WHERE (id = 1) LIMIT 1"
58
+ @db.sqls.must_equal [
59
+ "INSERT INTO cs (name) VALUES ('a')",
60
+ "SELECT * FROM cs WHERE (id = 1) LIMIT 1",
61
+ "INSERT INTO cs (name, c_id) VALUES ('b', 1)",
62
+ "SELECT * FROM cs WHERE (id = 2) LIMIT 1"]
64
63
  end
65
64
 
66
65
  it "should work when passing in primary keys" do
@@ -69,6 +68,6 @@ describe "Sequel::Plugins::DelayAddAssociation" do
69
68
  @o.add_c(2)
70
69
  @db.sqls.must_equal ["SELECT * FROM cs WHERE (id = 2) LIMIT 1"]
71
70
  @o.save
72
- @db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "UPDATE cs SET c_id = 1 WHERE (id = 2)", "SELECT * FROM cs WHERE (id = 1) LIMIT 1"]
71
+ @db.sqls.must_equal ["INSERT INTO cs (name) VALUES ('a')", "SELECT * FROM cs WHERE (id = 1) LIMIT 1", "UPDATE cs SET c_id = 1 WHERE (id = 2)"]
73
72
  end
74
73
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::Dirty" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  mod = shared_description do
4
4
  it "should take action depending on :on_duplicate_columns if 2 or more columns have the same name" do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::EagerEach" do
4
4
  before do
@@ -57,6 +57,6 @@ describe "Sequel::Plugins::EagerEach" do
57
57
  end
58
58
 
59
59
  it "should not attempt to eager load when getting the columns" do
60
- ds = @c.eager(:children).with_extend{def all; raise; end}.columns!.must_equal [:id, :parent_id]
60
+ @c.eager(:children).with_extend{def all; raise; end}.columns!.must_equal [:id, :parent_id]
61
61
  end
62
62
  end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "filter_having extension" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "Sequel::Plugins::ErrorSplitter" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "error_sql extension" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  Sequel.extension :eval_inspect
4
4
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe Sequel::Model, ".finder" do
4
4
  before do
@@ -1,5 +1,5 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
2
- if RUBY_VERSION >= '1.9.0'
1
+ require_relative "spec_helper"
2
+
3
3
  describe "force_encoding plugin" do
4
4
  before do
5
5
  @c = Class.new(Sequel::Model)
@@ -124,6 +124,3 @@ describe "force_encoding plugin" do
124
124
  o.x.encoding.must_equal @e1
125
125
  end
126
126
  end
127
- else
128
- skip_warn "force_encoding plugin: only works on ruby 1.9+"
129
- end
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe "freeze_datasets extension" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  describe Sequel::Dataset, " graphing" do
4
4
  before do
@@ -76,7 +76,7 @@ describe Sequel::Dataset, " graphing" do
76
76
  end
77
77
 
78
78
  it "#graph_each should only include the columns selected with #set_graph_aliases and #add_graph_aliases, if called" do
79
- @db.fetch = [nil, [{:x=>2,:y=>3}], nil, [{:x=>2}], [{:x=>2, :q=>18}]]
79
+ @db.fetch = [[{:x=>2,:y=>3}], [{:x=>2}], [{:x=>2, :q=>18}]]
80
80
 
81
81
  @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x], :y=>[:lines, :y]).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
82
82
  ds = @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :x])
@@ -86,17 +86,17 @@ describe Sequel::Dataset, " graphing" do
86
86
  end
87
87
 
88
88
  it "#graph_each should correctly map values when #set_graph_aliases is used with a third argument for each entry" do
89
- @db.fetch = [nil, {:x=>2,:y=>3}]
89
+ @db.fetch = [{:x=>2,:y=>3}]
90
90
  @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points, :z1, 2], :y=>[:lines, :z2, Sequel.function(:random)]).all.must_equal [{:points=>{:z1=>2}, :lines=>{:z2=>3}}]
91
91
  end
92
92
 
93
93
  it "#graph_each should correctly map values when #set_graph_aliases is used with a single argument for each entry" do
94
- @db.fetch = [nil, {:x=>2,:y=>3}]
94
+ @db.fetch = [{:x=>2,:y=>3}]
95
95
  @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>[:points], :y=>[:lines]).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
96
96
  end
97
97
 
98
98
  it "#graph_each should correctly map values when #set_graph_aliases is used with a symbol for each entry" do
99
- @db.fetch = [nil, {:x=>2,:y=>3}]
99
+ @db.fetch = [{:x=>2,:y=>3}]
100
100
  @ds1.graph(:lines, :x=>:id).set_graph_aliases(:x=>:points, :y=>:lines).all.must_equal [{:points=>{:x=>2}, :lines=>{:y=>3}}]
101
101
  end
102
102
 
@@ -1,4 +1,4 @@
1
- require File.join(File.dirname(File.expand_path(__FILE__)), "spec_helper")
1
+ require_relative "spec_helper"
2
2
 
3
3
  model_class = proc do |klass, &block|
4
4
  c = Class.new(klass)
@@ -140,39 +140,6 @@ describe Sequel::Model, "hook_class_methods plugin" do
140
140
  adds.must_equal ['456']
141
141
  end
142
142
 
143
- deprecated "should stop processing if a before hook returns false" do
144
- flag = true
145
- adds = []
146
-
147
- a = model_class.call Sequel::Model do
148
- before_save{adds << 'cruel'; flag}
149
- before_save{adds << 'blah'; flag}
150
- end
151
-
152
- a.new.before_save
153
- adds.must_equal ['blah', 'cruel']
154
-
155
- # chain should not break on nil
156
- adds = []
157
- flag = nil
158
- a.new.before_save
159
- adds.must_equal ['blah', 'cruel']
160
-
161
- adds = []
162
- flag = false
163
- a.new.before_save
164
- adds.must_equal ['blah']
165
-
166
- b = Class.new(a)
167
- b.class_eval do
168
- before_save{adds << 'mau'}
169
- end
170
-
171
- adds = []
172
- b.new.before_save
173
- adds.must_equal ['mau', 'blah']
174
- end
175
-
176
143
  it "should stop processing if a before hook calls cancel_action" do
177
144
  flag = true
178
145
  adds = []
@@ -226,25 +193,12 @@ describe "Model#before_create && Model#after_create" do
226
193
  DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
227
194
  end
228
195
 
229
- deprecated ".create should cancel the save and raise an error if before_create returns false and raise_on_save_failure is true" do
230
- @c.before_create{false}
231
- proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
232
- DB.sqls.must_equal []
233
- end
234
-
235
196
  it ".create should cancel the save and raise an error if before_create calls cancel_action and raise_on_save_failure is true" do
236
197
  @c.before_create{cancel_action}
237
198
  proc{@c.create(:x => 2)}.must_raise(Sequel::HookFailed)
238
199
  DB.sqls.must_equal []
239
200
  end
240
201
 
241
- deprecated ".create should cancel the save and return nil if before_create returns false and raise_on_save_failure is false" do
242
- @c.before_create{false}
243
- @c.raise_on_save_failure = false
244
- @c.create(:x => 2).must_be_nil
245
- DB.sqls.must_equal []
246
- end
247
-
248
202
  it ".create should cancel the save and return nil if before_create calls cancel_action and raise_on_save_failure is false" do
249
203
  @c.before_create{cancel_action}
250
204
  @c.raise_on_save_failure = false
@@ -269,25 +223,12 @@ describe "Model#before_update && Model#after_update" do
269
223
  DB.sqls.must_equal ['BLAH before', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'BLAH after']
270
224
  end
271
225
 
272
- deprecated "#save should cancel the save and raise an error if before_update returns false and raise_on_save_failure is true" do
273
- @c.before_update{false}
274
- proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
275
- DB.sqls.must_equal []
276
- end
277
-
278
226
  it "#save should cancel the save and raise an error if before_update calls cancel_action and raise_on_save_failure is true" do
279
227
  @c.before_update{cancel_action}
280
228
  proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
281
229
  DB.sqls.must_equal []
282
230
  end
283
231
 
284
- deprecated "#save should cancel the save and return nil if before_update returns false and raise_on_save_failure is false" do
285
- @c.before_update{false}
286
- @c.raise_on_save_failure = false
287
- @c.load(:id => 2233).save.must_be_nil
288
- DB.sqls.must_equal []
289
- end
290
-
291
232
  it "#save should cancel the save and return nil if before_update calls cancel_action and raise_on_save_failure is false" do
292
233
  @c.before_update{cancel_action}
293
234
  @c.raise_on_save_failure = false
@@ -320,25 +261,12 @@ describe "Model#before_save && Model#after_save" do
320
261
  DB.sqls.must_equal ['BLAH before', 'INSERT INTO items (x) VALUES (2)', 'BLAH after']
321
262
  end
322
263
 
323
- deprecated "#save should cancel the save and raise an error if before_save returns false and raise_on_save_failure is true" do
324
- @c.before_save{false}
325
- proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
326
- DB.sqls.must_equal []
327
- end
328
-
329
264
  it "#save should cancel the save and raise an error if before_save calls cancel_action and raise_on_save_failure is true" do
330
265
  @c.before_save{cancel_action}
331
266
  proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
332
267
  DB.sqls.must_equal []
333
268
  end
334
269
 
335
- deprecated "#save should cancel the save and return nil if before_save returns false and raise_on_save_failure is false" do
336
- @c.before_save{false}
337
- @c.raise_on_save_failure = false
338
- @c.load(:id => 2233).save.must_be_nil
339
- DB.sqls.must_equal []
340
- end
341
-
342
270
  it "#save should cancel the save and return nil if before_save calls cancel_action and raise_on_save_failure is false" do
343
271
  @c.before_save{cancel_action}
344
272
  @c.raise_on_save_failure = false
@@ -363,25 +291,12 @@ describe "Model#before_destroy && Model#after_destroy" do
363
291
  DB.sqls.must_equal ['BLAH before', "DELETE FROM items WHERE id = 2233", 'BLAH after']
364
292
  end
365
293
 
366
- deprecated "#destroy should cancel the destroy and raise an error if before_destroy returns false and raise_on_save_failure is true" do
367
- @c.before_destroy{false}
368
- proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
369
- DB.sqls.must_equal []
370
- end
371
-
372
294
  it "#destroy should cancel the destroy and raise an error if before_destroy calls cancel_action and raise_on_save_failure is true" do
373
295
  @c.before_destroy{cancel_action}
374
296
  proc{@c.load(:id => 2233).destroy}.must_raise(Sequel::HookFailed)
375
297
  DB.sqls.must_equal []
376
298
  end
377
299
 
378
- deprecated "#destroy should cancel the destroy and return nil if before_destroy returns false and raise_on_save_failure is false" do
379
- @c.before_destroy{false}
380
- @c.raise_on_save_failure = false
381
- @c.load(:id => 2233).destroy.must_be_nil
382
- DB.sqls.must_equal []
383
- end
384
-
385
300
  it "#destroy should cancel the destroy and return nil if before_destroy calls cancel_action and raise_on_save_failure is false" do
386
301
  @c.before_destroy{cancel_action}
387
302
  @c.raise_on_save_failure = false
@@ -430,25 +345,12 @@ describe "Model#before_validation && Model#after_validation" do
430
345
  DB.sqls.must_equal ['BLAH before', 'BLAH after']
431
346
  end
432
347
 
433
- deprecated "#save should cancel the save and raise an error if before_validation returns false and raise_on_save_failure is true" do
434
- @c.before_validation{false}
435
- proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
436
- DB.sqls.must_equal []
437
- end
438
-
439
348
  it "#save should cancel the save and raise an error if before_validation calls cancel_action and raise_on_save_failure is true" do
440
349
  @c.before_validation{cancel_action}
441
350
  proc{@c.load(:id => 2233).save}.must_raise(Sequel::HookFailed)
442
351
  DB.sqls.must_equal []
443
352
  end
444
353
 
445
- deprecated "#save should cancel the save and return nil if before_validation returns false and raise_on_save_failure is false" do
446
- @c.before_validation{false}
447
- @c.raise_on_save_failure = false
448
- @c.load(:id => 2233).save.must_be_nil
449
- DB.sqls.must_equal []
450
- end
451
-
452
354
  it "#save should cancel the save and return nil if before_validation calls cancel_action and raise_on_save_failure is false" do
453
355
  @c.before_validation{cancel_action}
454
356
  @c.raise_on_save_failure = false
@@ -457,52 +359,6 @@ describe "Model#before_validation && Model#after_validation" do
457
359
  end
458
360
  end
459
361
 
460
- describe "Model transaction hooks" do
461
- before do
462
- DB.reset
463
-
464
- @c = model_class.call(Sequel::Model(:items)) do
465
- columns :x
466
- after_save {DB << "AS"}
467
- after_destroy {DB << "AD"}
468
- self.use_transactions = true
469
- end
470
- end
471
-
472
- deprecated "should call after_commit or after_rollback depending on whether the transaction commits or rolls back" do
473
- @c.after_commit{DB << 'AC'}
474
- @c.after_rollback{DB << 'AR'}
475
- m = @c.load(:id => 2233, :x=>123)
476
-
477
- m.save
478
- DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS', 'COMMIT', 'AC']
479
-
480
- @c.db.transaction(:rollback=>:always){m.save}
481
- DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS', 'ROLLBACK', 'AR']
482
-
483
- @c.db.transaction do
484
- m.save
485
- DB.sqls.must_equal ['BEGIN', 'UPDATE items SET x = 123 WHERE (id = 2233)', 'AS']
486
- end
487
- end
488
-
489
- deprecated "should call after_destroy_commit or after_destroy_rollback depending on whether the transaction commits or rolls back" do
490
- @c.after_destroy_commit {DB << 'ADC'}
491
- @c.after_destroy_rollback{DB << 'ADR'}
492
-
493
- @c.load(:id => 2233).destroy
494
- DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD', 'COMMIT', 'ADC']
495
-
496
- @c.db.transaction(:rollback=>:always){@c.load(:id => 2233).destroy}
497
- DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD', 'ROLLBACK', 'ADR']
498
-
499
- @c.db.transaction do
500
- @c.load(:id => 2233).destroy
501
- DB.sqls.must_equal ['BEGIN', 'DELETE FROM items WHERE id = 2233', 'AD']
502
- end
503
- end
504
- end
505
-
506
362
  describe "Model.has_hooks?" do
507
363
  before do
508
364
  @c = model_class.call(Sequel::Model(:items))
@@ -522,52 +378,3 @@ describe "Model.has_hooks?" do
522
378
  @d.has_hooks?(:before_save).must_equal false
523
379
  end
524
380
  end
525
-
526
- describe "Model#add_hook_type" do
527
- before do
528
- deprecated do
529
- class ::Foo < Sequel::Model(:items)
530
- plugin :hook_class_methods
531
- add_hook_type :before_bar, :after_bar
532
-
533
- def bar
534
- return :b if before_bar == false
535
- return :a if after_bar == false
536
- true
537
- end
538
- end
539
- @f = Class.new(Foo)
540
- end
541
- end
542
- after do
543
- Object.send(:remove_const, :Foo)
544
- end
545
-
546
- deprecated "should have before_bar and after_bar class methods" do
547
- @f.must_respond_to(:before_bar)
548
- @f.must_respond_to(:before_bar)
549
- end
550
-
551
- deprecated "should have before_bar and after_bar instance methods" do
552
- @f.new.must_respond_to(:before_bar)
553
- @f.new.must_respond_to(:before_bar)
554
- end
555
-
556
- deprecated "it should return true for bar when before_bar and after_bar hooks are returing true" do
557
- a = 1
558
- @f.before_bar { a += 1}
559
- @f.new.bar.must_equal true
560
- a.must_equal 2
561
- @f.after_bar { a *= 2}
562
- @f.new.bar.must_equal true
563
- a.must_equal 6
564
- end
565
-
566
- deprecated "it should return nil for bar when before_bar and after_bar hooks are returing false" do
567
- @f.new.bar.must_equal true
568
- @f.after_bar { false }
569
- @f.new.bar.must_equal :a
570
- @f.before_bar { false }
571
- @f.new.bar.must_equal :b
572
- end
573
- end