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 Sequel::Inflections 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::Model()" do
4
4
  before do
@@ -109,14 +109,6 @@ describe "Sequel::Model()" do
109
109
  Object.send(:remove_const, :Album) if defined?(::Album)
110
110
  end
111
111
 
112
- deprecated "Sequel.cache_anonymous_models should return value for Sequel::Model" do
113
- Sequel.cache_anonymous_models.must_equal true
114
- Sequel::Model.cache_anonymous_models = false
115
- Sequel.cache_anonymous_models.must_equal false
116
- Sequel.cache_anonymous_models = true
117
- Sequel.cache_anonymous_models.must_equal true
118
- end
119
-
120
112
  it "should work without raising an exception with a symbol" do
121
113
  class ::Album < Sequel::Model(:table); end
122
114
  class ::Album < Sequel::Model(:table); end
@@ -185,12 +177,7 @@ end
185
177
  describe "Sequel::Model.freeze" do
186
178
  it "should freeze the model class and not allow any changes" do
187
179
  model = Class.new(Sequel::Model(:items))
188
- deprecated do
189
- model.set_allowed_columns [:id]
190
- model.finder(:name=>:f_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}
191
- end
192
180
  model.freeze
193
- model.f_by_name(1)
194
181
 
195
182
  model.frozen?.must_equal true
196
183
  model.dataset.frozen?.must_equal true
@@ -201,11 +188,7 @@ describe "Sequel::Model.freeze" do
201
188
  model.send(:overridable_methods_module).frozen?.must_equal true
202
189
  model.default_set_fields_options.frozen?.must_equal true
203
190
 
204
- proc{model.dataset_module{}}.must_raise RuntimeError, TypeError
205
- deprecated do
206
- model.allowed_columns.frozen?.must_equal true
207
- proc{model.finder(:name=>:first_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}}.must_raise RuntimeError, TypeError
208
- end
191
+ proc{model.dataset_module{}}.must_raise RuntimeError
209
192
  end
210
193
 
211
194
  it "should freeze a model class without a dataset without breaking" do
@@ -219,10 +202,7 @@ describe "Sequel::Model.freeze" do
219
202
  model.send(:overridable_methods_module).frozen?.must_equal true
220
203
  model.default_set_fields_options.frozen?.must_equal true
221
204
 
222
- proc{model.dataset_module{}}.must_raise RuntimeError, TypeError
223
- deprecated do
224
- proc{model.finder(:name=>:first_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}}.must_raise RuntimeError, TypeError
225
- end
205
+ proc{model.dataset_module{}}.must_raise RuntimeError
226
206
  end
227
207
 
228
208
  it "should allow subclasses of frozen model classes to work correctly" do
@@ -233,14 +213,8 @@ describe "Sequel::Model.freeze" do
233
213
 
234
214
  model.dataset_module{}
235
215
  model.plugin Module.new
236
- deprecated do
237
- model.finder(:name=>:first_by_name){|pl, ds| ds.where(:name=>pl.arg).limit(1)}
238
- end
239
- model.first_by_name('a').values.must_equal(:id=>1, :x=>1)
240
- model.dataset.frozen?.must_equal false
241
216
 
242
217
  model.frozen?.must_equal false
243
- model.dataset.frozen?.must_equal false
244
218
  model.db_schema.frozen?.must_equal false
245
219
  model.db_schema[:id].frozen?.must_equal false
246
220
  model.setter_methods.frozen?.must_equal false
@@ -279,15 +253,10 @@ describe Sequel::Model do
279
253
  DB.reset
280
254
  end
281
255
 
282
- deprecated "should allow dup/clone" do
283
- @model.dup.must_be :<, @model.superclass
284
- @model.clone.must_be :<, @model.superclass
285
- end
286
-
287
256
  it "should not allow dup/clone" do
288
- proc{@model.dup}.must_raise Sequel::Error
289
- proc{@model.clone}.must_raise Sequel::Error
290
- end if false # SEQUEL5
257
+ proc{@model.dup}.must_raise NoMethodError
258
+ proc{@model.clone}.must_raise NoMethodError
259
+ end
291
260
 
292
261
  it "has table_name return name of table" do
293
262
  @model.table_name.must_equal :items
@@ -328,6 +297,13 @@ describe Sequel::Model do
328
297
  proc{@model.set_dataset(Object.new)}.must_raise(Sequel::Error)
329
298
  end
330
299
 
300
+ it "set_dataset should use a subquery for joined datasets" do
301
+ @model.set_dataset(DB.from(:foo, :bar))
302
+ @model.dataset.sql.must_equal 'SELECT * FROM (SELECT * FROM foo, bar) AS foo'
303
+ @model.set_dataset(DB[:foo].cross_join(:bar))
304
+ @model.dataset.sql.must_equal 'SELECT * FROM (SELECT * FROM foo CROSS JOIN bar) AS foo'
305
+ end
306
+
331
307
  it "set_dataset should add the destroy method to the dataset that destroys each object" do
332
308
  ds = DB[:foo]
333
309
  ds.wont_respond_to(:destroy)
@@ -490,11 +466,10 @@ describe Sequel::Model, ".require_valid_table = true" do
490
466
  c.columns.must_equal [:id]
491
467
  end
492
468
 
493
- deprecated "should assume nil value is the same as false" do
469
+ it "should assume nil value is the same as false" do
494
470
  c = Class.new(Sequel::Model)
495
471
  c.require_valid_table = nil
496
- ds = @db.dataset
497
- def ds.columns; raise Sequel::Error; end
472
+ ds = @db.dataset.with_extend{def columns; raise Sequel::Error; end}
498
473
  c.set_dataset(ds)
499
474
  end
500
475
  end
@@ -575,36 +550,6 @@ describe Sequel::Model, "new" do
575
550
  end
576
551
  end
577
552
 
578
- describe Sequel::Model, ".subset" do
579
- before do
580
- @c = Class.new(Sequel::Model(:items))
581
- DB.reset
582
- end
583
-
584
- deprecated "should create a filter on the underlying dataset" do
585
- proc {@c.new_only}.must_raise(NoMethodError)
586
-
587
- @c.subset(:new_only){age < 'new'}
588
-
589
- @c.new_only.sql.must_equal "SELECT * FROM items WHERE (age < 'new')"
590
- @c.dataset.new_only.sql.must_equal "SELECT * FROM items WHERE (age < 'new')"
591
-
592
- @c.subset(:pricey){price > 100}
593
-
594
- @c.pricey.sql.must_equal "SELECT * FROM items WHERE (price > 100)"
595
- @c.dataset.pricey.sql.must_equal "SELECT * FROM items WHERE (price > 100)"
596
-
597
- @c.pricey.new_only.sql.must_equal "SELECT * FROM items WHERE ((price > 100) AND (age < 'new'))"
598
- @c.new_only.pricey.sql.must_equal "SELECT * FROM items WHERE ((age < 'new') AND (price > 100))"
599
- end
600
-
601
- deprecated "should not override existing model methods" do
602
- def @c.active() true end
603
- @c.subset(:active, :active)
604
- @c.active.must_equal true
605
- end
606
- end
607
-
608
553
  describe Sequel::Model, ".find" do
609
554
  before do
610
555
  @c = Class.new(Sequel::Model(:items))
@@ -629,242 +574,6 @@ describe Sequel::Model, ".find" do
629
574
  end
630
575
  end
631
576
 
632
- describe Sequel::Model, ".first_where" do
633
- deprecated "should take a condition and do a lookup" do
634
- db = Sequel.mock(:fetch=>[])
635
- c = Class.new(Sequel::Model(db[:items]))
636
- db.sqls
637
- c.first_where(:a)
638
- db.sqls.must_equal ['SELECT * FROM items WHERE a LIMIT 1']
639
- proc{c.first_where(1)}.must_raise Sequel::Error
640
- end
641
- end
642
-
643
- describe Sequel::Model, ".finder" do
644
- before do
645
- @h = {:id=>1}
646
- @db = Sequel.mock(:fetch=>@h)
647
- @c = Class.new(Sequel::Model(@db[:items]))
648
- @c.instance_eval do
649
- def foo(a, b)
650
- where(:bar=>a).order(b)
651
- end
652
- end
653
- @o = @c.load(@h)
654
- @db.sqls
655
- end
656
-
657
- deprecated "should create a method that calls the method given and returns the first instance" do
658
- @c.finder :foo
659
- @c.first_foo(1, 2).must_equal @o
660
- @c.first_foo(3, 4).must_equal @o
661
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 LIMIT 1"]
662
- end
663
-
664
- deprecated "should work correctly when subclassing" do
665
- @c.finder(:foo)
666
- @sc = Class.new(@c)
667
- @sc.set_dataset :foos
668
- @db.sqls
669
- @sc.first_foo(1, 2).must_equal @sc.load(@h)
670
- @sc.first_foo(3, 4).must_equal @sc.load(@h)
671
- @db.sqls.must_equal ["SELECT * FROM foos WHERE (bar = 1) ORDER BY 2 LIMIT 1", "SELECT * FROM foos WHERE (bar = 3) ORDER BY 4 LIMIT 1"]
672
- end
673
-
674
- deprecated "should work correctly when dataset is modified" do
675
- @c.finder(:foo)
676
- @c.first_foo(1, 2).must_equal @o
677
- @c.set_dataset :foos
678
- @c.first_foo(3, 4).must_equal @o
679
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1", "SELECT * FROM foos LIMIT 1", "SELECT * FROM foos WHERE (bar = 3) ORDER BY 4 LIMIT 1"]
680
- end
681
-
682
- deprecated "should create a method based on the given block if no method symbol provided" do
683
- @c.finder(:name=>:first_foo){|pl, ds| ds.where(pl.arg).limit(1)}
684
- @c.first_foo(:id=>1).must_equal @o
685
- @db.sqls.must_equal ["SELECT * FROM items WHERE (id = 1) LIMIT 1"]
686
- end
687
-
688
- deprecated "should raise an error if both a block and method symbol given" do
689
- proc{@c.finder(:foo, :name=>:first_foo){|pl, ds| ds.where(pl.arg)}}.must_raise(Sequel::Error)
690
- end
691
-
692
- deprecated "should raise an error if two option hashes are provided" do
693
- proc{@c.finder({:name2=>:foo}, :name=>:first_foo){|pl, ds| ds.where(pl.arg)}}.must_raise(Sequel::Error)
694
- end
695
-
696
- deprecated "should support :type option" do
697
- @c.finder :foo, :type=>:all
698
- @c.finder :foo, :type=>:each
699
- @c.finder :foo, :type=>:get
700
-
701
- a = []
702
- @c.all_foo(1, 2){|r| a << r}.must_equal [@o]
703
- a.must_equal [@o]
704
-
705
- a = []
706
- @c.each_foo(3, 4){|r| a << r}
707
- a.must_equal [@o]
708
-
709
- @c.get_foo(5, 6).must_equal 1
710
-
711
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4", "SELECT * FROM items WHERE (bar = 5) ORDER BY 6 LIMIT 1"]
712
- end
713
-
714
- deprecated "should support :name option" do
715
- @c.finder :foo, :name=>:find_foo
716
- @c.find_foo(1, 2).must_equal @o
717
- @c.find_foo(3, 4).must_equal @o
718
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 LIMIT 1"]
719
- end
720
-
721
- deprecated "should support :arity option" do
722
- def @c.foobar(*b)
723
- ds = dataset
724
- b.each_with_index do |a, i|
725
- ds = ds.where(i=>a)
726
- end
727
- ds
728
- end
729
- @c.finder :foobar, :arity=>1, :name=>:find_foobar_1
730
- @c.finder :foobar, :arity=>2, :name=>:find_foobar_2
731
- @c.find_foobar_1(:a)
732
- @c.find_foobar_2(:a, :b)
733
- @db.sqls.must_equal ["SELECT * FROM items WHERE (0 = a) LIMIT 1", "SELECT * FROM items WHERE ((0 = a) AND (1 = b)) LIMIT 1"]
734
- end
735
-
736
- deprecated "should support :mod option" do
737
- m = Module.new
738
- @c.finder :foo, :mod=>m
739
- proc{@c.first_foo}.must_raise NoMethodError
740
- @c.extend m
741
- @c.first_foo(1, 2).must_equal @o
742
- @c.first_foo(3, 4).must_equal @o
743
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 LIMIT 1"]
744
- end
745
-
746
- deprecated "should raise error when calling with the wrong arity" do
747
- @c.finder :foo
748
- proc{@c.first_foo(1)}.must_raise Sequel::Error
749
- proc{@c.first_foo(1,2,3)}.must_raise Sequel::Error
750
- end
751
- end
752
-
753
- describe Sequel::Model, ".prepared_finder" do
754
- before do
755
- @h = {:id=>1}
756
- @db = Sequel.mock(:fetch=>@h)
757
- @db.extend_datasets do
758
- def select_sql
759
- sql = super
760
- sql << ' -- prepared' if is_a?(Sequel::Dataset::PreparedStatementMethods)
761
- sql
762
- end
763
- end
764
- @c = Class.new(Sequel::Model(@db[:items]))
765
- @c.instance_eval do
766
- def foo(a, b)
767
- where(:bar=>a).order(b)
768
- end
769
- end
770
- @o = @c.load(@h)
771
- @db.sqls
772
- end
773
-
774
- deprecated "should create a method that calls the method given and returns the first instance" do
775
- @c.prepared_finder :foo
776
- @c.first_foo(1, 2).must_equal @o
777
- @c.first_foo(3, 4).must_equal @o
778
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1 -- prepared", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 LIMIT 1 -- prepared"]
779
- end
780
-
781
- deprecated "should work correctly when subclassing" do
782
- @c.prepared_finder(:foo)
783
- @sc = Class.new(@c)
784
- @sc.set_dataset :foos
785
- @db.sqls
786
- @sc.first_foo(1, 2).must_equal @sc.load(@h)
787
- @sc.first_foo(3, 4).must_equal @sc.load(@h)
788
- @db.sqls.must_equal ["SELECT * FROM foos WHERE (bar = 1) ORDER BY 2 LIMIT 1 -- prepared", "SELECT * FROM foos WHERE (bar = 3) ORDER BY 4 LIMIT 1 -- prepared"]
789
- end
790
-
791
- deprecated "should work correctly when dataset is modified" do
792
- @c.prepared_finder(:foo)
793
- @c.first_foo(1, 2).must_equal @o
794
- @c.set_dataset :foos
795
- @c.first_foo(3, 4).must_equal @o
796
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1 -- prepared", "SELECT * FROM foos LIMIT 1", "SELECT * FROM foos WHERE (bar = 3) ORDER BY 4 LIMIT 1 -- prepared"]
797
- end
798
-
799
- deprecated "should create a method based on the given block if no method symbol provided" do
800
- @c.prepared_finder(:name=>:first_foo){|a1| where(:id=>a1).limit(1)}
801
- @c.first_foo(1).must_equal @o
802
- @db.sqls.must_equal ["SELECT * FROM items WHERE (id = 1) LIMIT 1 -- prepared"]
803
- end
804
-
805
- deprecated "should raise an error if both a block and method symbol given" do
806
- proc{@c.prepared_finder(:foo, :name=>:first_foo){|pl, ds| ds.where(pl.arg)}}.must_raise(Sequel::Error)
807
- end
808
-
809
- deprecated "should raise an error if two option hashes are provided" do
810
- proc{@c.prepared_finder({:name2=>:foo}, :name=>:first_foo){|pl, ds| ds.where(pl.arg)}}.must_raise(Sequel::Error)
811
- end
812
-
813
- deprecated "should support :type option" do
814
- @c.prepared_finder :foo, :type=>:all
815
- @c.prepared_finder :foo, :type=>:each
816
-
817
- a = []
818
- @c.all_foo(1, 2){|r| a << r}.must_equal [@o]
819
- a.must_equal [@o]
820
-
821
- a = []
822
- @c.each_foo(3, 4){|r| a << r}
823
- a.must_equal [@o]
824
-
825
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 -- prepared", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 -- prepared"]
826
- end
827
-
828
- deprecated "should support :name option" do
829
- @c.prepared_finder :foo, :name=>:find_foo
830
- @c.find_foo(1, 2).must_equal @o
831
- @c.find_foo(3, 4).must_equal @o
832
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1 -- prepared", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 LIMIT 1 -- prepared"]
833
- end
834
-
835
- deprecated "should support :arity option" do
836
- def @c.foobar(*b)
837
- ds = dataset
838
- b.each_with_index do |a, i|
839
- ds = ds.where(i=>a)
840
- end
841
- ds
842
- end
843
- @c.prepared_finder :foobar, :arity=>1, :name=>:find_foobar_1
844
- @c.prepared_finder :foobar, :arity=>2, :name=>:find_foobar_2
845
- @c.find_foobar_1(:a)
846
- @c.find_foobar_2(:a, :b)
847
- @db.sqls.must_equal ["SELECT * FROM items WHERE (0 = a) LIMIT 1 -- prepared", "SELECT * FROM items WHERE ((0 = a) AND (1 = b)) LIMIT 1 -- prepared"]
848
- end
849
-
850
- deprecated "should support :mod option" do
851
- m = Module.new
852
- @c.prepared_finder :foo, :mod=>m
853
- proc{@c.first_foo}.must_raise NoMethodError
854
- @c.extend m
855
- @c.first_foo(1, 2).must_equal @o
856
- @c.first_foo(3, 4).must_equal @o
857
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1 -- prepared", "SELECT * FROM items WHERE (bar = 3) ORDER BY 4 LIMIT 1 -- prepared"]
858
- end
859
-
860
- deprecated "should handle models with names" do
861
- def @c.name; 'foobar' end
862
- @c.prepared_finder :foo
863
- @c.first_foo(1, 2).must_equal @o
864
- @db.sqls.must_equal ["SELECT * FROM items WHERE (bar = 1) ORDER BY 2 LIMIT 1 -- prepared"]
865
- end
866
- end
867
-
868
577
  describe Sequel::Model, ".fetch" do
869
578
  before do
870
579
  DB.reset
@@ -1046,12 +755,6 @@ describe Sequel::Model, ".[]" do
1046
755
  DB.sqls.must_equal ["SELECT * FROM items WHERE name = 'sharon'"]
1047
756
  end
1048
757
 
1049
- deprecated "should use a qualified primary key if the dataset is joined" do
1050
- @c.dataset = @c.dataset.cross_join(:a)
1051
- @c[1].must_equal @c.load(:name => 'sharon', :id => 1)
1052
- DB.sqls.must_equal ["SELECT * FROM items CROSS JOIN a WHERE (items.id = 1) LIMIT 1"]
1053
- end
1054
-
1055
758
  it "should handle a dataset that uses a subquery" do
1056
759
  @c.dataset = @c.dataset.cross_join(:a).from_self(:alias=>:b)
1057
760
  @c[1].must_equal @c.load(:name => 'sharon', :id => 1)
@@ -1122,14 +825,6 @@ describe "Model.db_schema" do
1122
825
  @c.db_schema.must_equal(:x=>{:type=>:integer}, :z=>{}, :y=>{:type=>:string})
1123
826
  end
1124
827
 
1125
- deprecated "should not raise error if setting dataset where getting schema and columns raises an error" do
1126
- def @db.schema(table, opts={})
1127
- raise Sequel::Error
1128
- end
1129
- @c.dataset = @dataset.join(:x, :id).from_self.columns(:id, :x)
1130
- @c.db_schema.must_equal(:x=>{}, :id=>{})
1131
- end
1132
-
1133
828
  it "should not raise error if setting dataset where getting schema and columns raises an error and require_valid_table is false" do
1134
829
  @c.require_valid_table = false
1135
830
  def @db.schema(table, 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 Sequel::Model, ".plugin" do
4
4
  before do
@@ -307,7 +307,7 @@ describe "Sequel::Model.plugin" do
307
307
  it "should try loading plugins from sequel/plugins/:plugin" do
308
308
  a = []
309
309
  m = Module.new
310
- (class << @c; self end).send(:define_method, :require) do |b|
310
+ @c.define_singleton_method(:require) do |b|
311
311
  a << b
312
312
  Sequel::Plugins.const_set(:SomethingOrOther, m)
313
313
  end
@@ -315,18 +315,4 @@ describe "Sequel::Model.plugin" do
315
315
  @c.plugins.must_include m
316
316
  a.must_equal ['sequel/plugins/something_or_other']
317
317
  end
318
-
319
- deprecated "should try loading plugins from sequel_plugin" do
320
- proc{@c.plugin :something_or_other}.must_raise(LoadError)
321
- a = []
322
- m = Module.new
323
- (class << @c; self end).send(:define_method, :require) do |b|
324
- a << b
325
- raise LoadError if b == 'sequel/plugins/something_or_other'
326
- Sequel::Plugins.const_set(:SomethingOrOther, m)
327
- end
328
- @c.plugin :something_or_other
329
- @c.plugins.must_include m
330
- a.must_equal ['sequel/plugins/something_or_other', 'sequel_something_or_other']
331
- end
332
318
  end