sequel 5.29.0 → 5.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (323) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +8 -1922
  3. data/doc/release_notes/5.30.0.txt +20 -0
  4. data/lib/sequel/adapters/shared/sqlite.rb +7 -1
  5. data/lib/sequel/database/transactions.rb +5 -9
  6. data/lib/sequel/version.rb +1 -1
  7. metadata +4 -368
  8. data/Rakefile +0 -151
  9. data/doc/release_notes/4.0.0.txt +0 -262
  10. data/doc/release_notes/4.1.0.txt +0 -85
  11. data/doc/release_notes/4.10.0.txt +0 -226
  12. data/doc/release_notes/4.11.0.txt +0 -147
  13. data/doc/release_notes/4.12.0.txt +0 -105
  14. data/doc/release_notes/4.13.0.txt +0 -169
  15. data/doc/release_notes/4.14.0.txt +0 -68
  16. data/doc/release_notes/4.15.0.txt +0 -56
  17. data/doc/release_notes/4.16.0.txt +0 -36
  18. data/doc/release_notes/4.17.0.txt +0 -38
  19. data/doc/release_notes/4.18.0.txt +0 -36
  20. data/doc/release_notes/4.19.0.txt +0 -45
  21. data/doc/release_notes/4.2.0.txt +0 -129
  22. data/doc/release_notes/4.20.0.txt +0 -79
  23. data/doc/release_notes/4.21.0.txt +0 -94
  24. data/doc/release_notes/4.22.0.txt +0 -72
  25. data/doc/release_notes/4.23.0.txt +0 -65
  26. data/doc/release_notes/4.24.0.txt +0 -99
  27. data/doc/release_notes/4.25.0.txt +0 -181
  28. data/doc/release_notes/4.26.0.txt +0 -44
  29. data/doc/release_notes/4.27.0.txt +0 -78
  30. data/doc/release_notes/4.28.0.txt +0 -57
  31. data/doc/release_notes/4.29.0.txt +0 -41
  32. data/doc/release_notes/4.3.0.txt +0 -40
  33. data/doc/release_notes/4.30.0.txt +0 -37
  34. data/doc/release_notes/4.31.0.txt +0 -57
  35. data/doc/release_notes/4.32.0.txt +0 -132
  36. data/doc/release_notes/4.33.0.txt +0 -88
  37. data/doc/release_notes/4.34.0.txt +0 -86
  38. data/doc/release_notes/4.35.0.txt +0 -130
  39. data/doc/release_notes/4.36.0.txt +0 -116
  40. data/doc/release_notes/4.37.0.txt +0 -50
  41. data/doc/release_notes/4.38.0.txt +0 -67
  42. data/doc/release_notes/4.39.0.txt +0 -127
  43. data/doc/release_notes/4.4.0.txt +0 -92
  44. data/doc/release_notes/4.40.0.txt +0 -179
  45. data/doc/release_notes/4.41.0.txt +0 -77
  46. data/doc/release_notes/4.42.0.txt +0 -221
  47. data/doc/release_notes/4.43.0.txt +0 -87
  48. data/doc/release_notes/4.44.0.txt +0 -125
  49. data/doc/release_notes/4.45.0.txt +0 -370
  50. data/doc/release_notes/4.46.0.txt +0 -404
  51. data/doc/release_notes/4.47.0.txt +0 -56
  52. data/doc/release_notes/4.48.0.txt +0 -293
  53. data/doc/release_notes/4.49.0.txt +0 -222
  54. data/doc/release_notes/4.5.0.txt +0 -34
  55. data/doc/release_notes/4.6.0.txt +0 -30
  56. data/doc/release_notes/4.7.0.txt +0 -103
  57. data/doc/release_notes/4.8.0.txt +0 -175
  58. data/doc/release_notes/4.9.0.txt +0 -190
  59. data/spec/adapter_spec.rb +0 -4
  60. data/spec/adapters/db2_spec.rb +0 -170
  61. data/spec/adapters/mssql_spec.rb +0 -828
  62. data/spec/adapters/mysql_spec.rb +0 -1060
  63. data/spec/adapters/oracle_spec.rb +0 -371
  64. data/spec/adapters/postgres_spec.rb +0 -4476
  65. data/spec/adapters/spec_helper.rb +0 -44
  66. data/spec/adapters/sqlanywhere_spec.rb +0 -97
  67. data/spec/adapters/sqlite_spec.rb +0 -652
  68. data/spec/bin_spec.rb +0 -278
  69. data/spec/core/connection_pool_spec.rb +0 -1250
  70. data/spec/core/database_spec.rb +0 -2915
  71. data/spec/core/dataset_spec.rb +0 -5544
  72. data/spec/core/deprecated_spec.rb +0 -70
  73. data/spec/core/expression_filters_spec.rb +0 -1498
  74. data/spec/core/mock_adapter_spec.rb +0 -722
  75. data/spec/core/object_graph_spec.rb +0 -336
  76. data/spec/core/placeholder_literalizer_spec.rb +0 -166
  77. data/spec/core/schema_generator_spec.rb +0 -214
  78. data/spec/core/schema_spec.rb +0 -1844
  79. data/spec/core/spec_helper.rb +0 -24
  80. data/spec/core/version_spec.rb +0 -14
  81. data/spec/core_extensions_spec.rb +0 -763
  82. data/spec/core_model_spec.rb +0 -2
  83. data/spec/core_spec.rb +0 -1
  84. data/spec/deprecation_helper.rb +0 -30
  85. data/spec/extensions/accessed_columns_spec.rb +0 -51
  86. data/spec/extensions/active_model_spec.rb +0 -99
  87. data/spec/extensions/after_initialize_spec.rb +0 -28
  88. data/spec/extensions/any_not_empty_spec.rb +0 -23
  89. data/spec/extensions/arbitrary_servers_spec.rb +0 -109
  90. data/spec/extensions/association_dependencies_spec.rb +0 -125
  91. data/spec/extensions/association_multi_add_remove_spec.rb +0 -1041
  92. data/spec/extensions/association_pks_spec.rb +0 -423
  93. data/spec/extensions/association_proxies_spec.rb +0 -100
  94. data/spec/extensions/auto_literal_strings_spec.rb +0 -205
  95. data/spec/extensions/auto_validations_spec.rb +0 -229
  96. data/spec/extensions/blacklist_security_spec.rb +0 -95
  97. data/spec/extensions/blank_spec.rb +0 -69
  98. data/spec/extensions/boolean_readers_spec.rb +0 -93
  99. data/spec/extensions/boolean_subsets_spec.rb +0 -47
  100. data/spec/extensions/caching_spec.rb +0 -273
  101. data/spec/extensions/caller_logging_spec.rb +0 -52
  102. data/spec/extensions/class_table_inheritance_spec.rb +0 -750
  103. data/spec/extensions/column_conflicts_spec.rb +0 -75
  104. data/spec/extensions/column_select_spec.rb +0 -129
  105. data/spec/extensions/columns_introspection_spec.rb +0 -90
  106. data/spec/extensions/columns_updated_spec.rb +0 -35
  107. data/spec/extensions/composition_spec.rb +0 -248
  108. data/spec/extensions/connection_expiration_spec.rb +0 -151
  109. data/spec/extensions/connection_validator_spec.rb +0 -144
  110. data/spec/extensions/constant_sql_override_spec.rb +0 -24
  111. data/spec/extensions/constraint_validations_plugin_spec.rb +0 -300
  112. data/spec/extensions/constraint_validations_spec.rb +0 -439
  113. data/spec/extensions/core_refinements_spec.rb +0 -528
  114. data/spec/extensions/csv_serializer_spec.rb +0 -183
  115. data/spec/extensions/current_datetime_timestamp_spec.rb +0 -27
  116. data/spec/extensions/dataset_associations_spec.rb +0 -365
  117. data/spec/extensions/dataset_source_alias_spec.rb +0 -51
  118. data/spec/extensions/date_arithmetic_spec.rb +0 -181
  119. data/spec/extensions/datetime_parse_to_time_spec.rb +0 -169
  120. data/spec/extensions/def_dataset_method_spec.rb +0 -100
  121. data/spec/extensions/defaults_setter_spec.rb +0 -150
  122. data/spec/extensions/delay_add_association_spec.rb +0 -73
  123. data/spec/extensions/dirty_spec.rb +0 -222
  124. data/spec/extensions/duplicate_columns_handler_spec.rb +0 -104
  125. data/spec/extensions/eager_each_spec.rb +0 -62
  126. data/spec/extensions/eager_graph_eager_spec.rb +0 -100
  127. data/spec/extensions/empty_array_consider_nulls_spec.rb +0 -24
  128. data/spec/extensions/empty_failure_backtraces_spec.rb +0 -60
  129. data/spec/extensions/error_splitter_spec.rb +0 -18
  130. data/spec/extensions/error_sql_spec.rb +0 -20
  131. data/spec/extensions/escaped_like_spec.rb +0 -40
  132. data/spec/extensions/eval_inspect_spec.rb +0 -81
  133. data/spec/extensions/exclude_or_null_spec.rb +0 -15
  134. data/spec/extensions/finder_spec.rb +0 -260
  135. data/spec/extensions/force_encoding_spec.rb +0 -126
  136. data/spec/extensions/freeze_datasets_spec.rb +0 -31
  137. data/spec/extensions/graph_each_spec.rb +0 -113
  138. data/spec/extensions/hook_class_methods_spec.rb +0 -402
  139. data/spec/extensions/identifier_mangling_spec.rb +0 -201
  140. data/spec/extensions/implicit_subquery_spec.rb +0 -58
  141. data/spec/extensions/index_caching_spec.rb +0 -66
  142. data/spec/extensions/inflector_spec.rb +0 -183
  143. data/spec/extensions/input_transformer_spec.rb +0 -69
  144. data/spec/extensions/insert_conflict_spec.rb +0 -103
  145. data/spec/extensions/insert_returning_select_spec.rb +0 -72
  146. data/spec/extensions/instance_filters_spec.rb +0 -79
  147. data/spec/extensions/instance_hooks_spec.rb +0 -246
  148. data/spec/extensions/integer64_spec.rb +0 -22
  149. data/spec/extensions/inverted_subsets_spec.rb +0 -33
  150. data/spec/extensions/json_serializer_spec.rb +0 -346
  151. data/spec/extensions/lazy_attributes_spec.rb +0 -183
  152. data/spec/extensions/list_spec.rb +0 -291
  153. data/spec/extensions/looser_typecasting_spec.rb +0 -43
  154. data/spec/extensions/many_through_many_spec.rb +0 -2177
  155. data/spec/extensions/migration_spec.rb +0 -864
  156. data/spec/extensions/modification_detection_spec.rb +0 -93
  157. data/spec/extensions/mssql_optimistic_locking_spec.rb +0 -92
  158. data/spec/extensions/named_timezones_spec.rb +0 -218
  159. data/spec/extensions/nested_attributes_spec.rb +0 -815
  160. data/spec/extensions/null_dataset_spec.rb +0 -85
  161. data/spec/extensions/optimistic_locking_spec.rb +0 -127
  162. data/spec/extensions/pagination_spec.rb +0 -116
  163. data/spec/extensions/pg_array_associations_spec.rb +0 -802
  164. data/spec/extensions/pg_array_ops_spec.rb +0 -144
  165. data/spec/extensions/pg_array_spec.rb +0 -398
  166. data/spec/extensions/pg_auto_constraint_validations_spec.rb +0 -209
  167. data/spec/extensions/pg_enum_spec.rb +0 -118
  168. data/spec/extensions/pg_extended_date_support_spec.rb +0 -126
  169. data/spec/extensions/pg_hstore_ops_spec.rb +0 -238
  170. data/spec/extensions/pg_hstore_spec.rb +0 -219
  171. data/spec/extensions/pg_inet_ops_spec.rb +0 -102
  172. data/spec/extensions/pg_inet_spec.rb +0 -72
  173. data/spec/extensions/pg_interval_spec.rb +0 -103
  174. data/spec/extensions/pg_json_ops_spec.rb +0 -356
  175. data/spec/extensions/pg_json_spec.rb +0 -451
  176. data/spec/extensions/pg_loose_count_spec.rb +0 -23
  177. data/spec/extensions/pg_range_ops_spec.rb +0 -60
  178. data/spec/extensions/pg_range_spec.rb +0 -600
  179. data/spec/extensions/pg_row_ops_spec.rb +0 -61
  180. data/spec/extensions/pg_row_plugin_spec.rb +0 -60
  181. data/spec/extensions/pg_row_spec.rb +0 -363
  182. data/spec/extensions/pg_static_cache_updater_spec.rb +0 -93
  183. data/spec/extensions/pg_timestamptz_spec.rb +0 -17
  184. data/spec/extensions/prepared_statements_safe_spec.rb +0 -66
  185. data/spec/extensions/prepared_statements_spec.rb +0 -177
  186. data/spec/extensions/pretty_table_spec.rb +0 -123
  187. data/spec/extensions/query_spec.rb +0 -94
  188. data/spec/extensions/rcte_tree_spec.rb +0 -387
  189. data/spec/extensions/round_timestamps_spec.rb +0 -39
  190. data/spec/extensions/s_spec.rb +0 -60
  191. data/spec/extensions/schema_caching_spec.rb +0 -64
  192. data/spec/extensions/schema_dumper_spec.rb +0 -870
  193. data/spec/extensions/select_remove_spec.rb +0 -38
  194. data/spec/extensions/sequel_4_dataset_methods_spec.rb +0 -121
  195. data/spec/extensions/serialization_modification_detection_spec.rb +0 -98
  196. data/spec/extensions/serialization_spec.rb +0 -365
  197. data/spec/extensions/server_block_spec.rb +0 -135
  198. data/spec/extensions/server_logging_spec.rb +0 -45
  199. data/spec/extensions/sharding_spec.rb +0 -197
  200. data/spec/extensions/shared_caching_spec.rb +0 -151
  201. data/spec/extensions/single_table_inheritance_spec.rb +0 -347
  202. data/spec/extensions/singular_table_names_spec.rb +0 -22
  203. data/spec/extensions/skip_create_refresh_spec.rb +0 -18
  204. data/spec/extensions/spec_helper.rb +0 -70
  205. data/spec/extensions/split_array_nil_spec.rb +0 -24
  206. data/spec/extensions/split_values_spec.rb +0 -57
  207. data/spec/extensions/sql_comments_spec.rb +0 -33
  208. data/spec/extensions/sql_expr_spec.rb +0 -59
  209. data/spec/extensions/static_cache_cache_spec.rb +0 -35
  210. data/spec/extensions/static_cache_spec.rb +0 -471
  211. data/spec/extensions/string_agg_spec.rb +0 -90
  212. data/spec/extensions/string_date_time_spec.rb +0 -95
  213. data/spec/extensions/string_stripper_spec.rb +0 -68
  214. data/spec/extensions/subclasses_spec.rb +0 -79
  215. data/spec/extensions/subset_conditions_spec.rb +0 -38
  216. data/spec/extensions/symbol_aref_refinement_spec.rb +0 -28
  217. data/spec/extensions/symbol_as_refinement_spec.rb +0 -21
  218. data/spec/extensions/synchronize_sql_spec.rb +0 -124
  219. data/spec/extensions/table_select_spec.rb +0 -83
  220. data/spec/extensions/tactical_eager_loading_spec.rb +0 -402
  221. data/spec/extensions/thread_local_timezones_spec.rb +0 -67
  222. data/spec/extensions/throw_failures_spec.rb +0 -74
  223. data/spec/extensions/timestamps_spec.rb +0 -209
  224. data/spec/extensions/to_dot_spec.rb +0 -153
  225. data/spec/extensions/touch_spec.rb +0 -226
  226. data/spec/extensions/tree_spec.rb +0 -334
  227. data/spec/extensions/typecast_on_load_spec.rb +0 -86
  228. data/spec/extensions/unlimited_update_spec.rb +0 -21
  229. data/spec/extensions/update_or_create_spec.rb +0 -83
  230. data/spec/extensions/update_primary_key_spec.rb +0 -105
  231. data/spec/extensions/update_refresh_spec.rb +0 -59
  232. data/spec/extensions/uuid_spec.rb +0 -101
  233. data/spec/extensions/validate_associated_spec.rb +0 -52
  234. data/spec/extensions/validation_class_methods_spec.rb +0 -1040
  235. data/spec/extensions/validation_contexts_spec.rb +0 -31
  236. data/spec/extensions/validation_helpers_spec.rb +0 -525
  237. data/spec/extensions/whitelist_security_spec.rb +0 -157
  238. data/spec/extensions/xml_serializer_spec.rb +0 -213
  239. data/spec/files/bad_down_migration/001_create_alt_basic.rb +0 -4
  240. data/spec/files/bad_down_migration/002_create_alt_advanced.rb +0 -4
  241. data/spec/files/bad_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  242. data/spec/files/bad_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  243. data/spec/files/bad_timestamped_migrations/1273253853_3_create_users.rb +0 -3
  244. data/spec/files/bad_up_migration/001_create_alt_basic.rb +0 -4
  245. data/spec/files/bad_up_migration/002_create_alt_advanced.rb +0 -3
  246. data/spec/files/convert_to_timestamp_migrations/001_create_sessions.rb +0 -9
  247. data/spec/files/convert_to_timestamp_migrations/002_create_nodes.rb +0 -9
  248. data/spec/files/convert_to_timestamp_migrations/003_3_create_users.rb +0 -4
  249. data/spec/files/convert_to_timestamp_migrations/1273253850_create_artists.rb +0 -9
  250. data/spec/files/convert_to_timestamp_migrations/1273253852_create_albums.rb +0 -9
  251. data/spec/files/double_migration/001_create_sessions.rb +0 -9
  252. data/spec/files/double_migration/002_create_nodes.rb +0 -19
  253. data/spec/files/double_migration/003_3_create_users.rb +0 -4
  254. data/spec/files/duplicate_integer_migrations/001_create_alt_advanced.rb +0 -4
  255. data/spec/files/duplicate_integer_migrations/001_create_alt_basic.rb +0 -4
  256. data/spec/files/duplicate_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  257. data/spec/files/duplicate_timestamped_migrations/1273253853_create_nodes.rb +0 -9
  258. data/spec/files/duplicate_timestamped_migrations/1273253853_create_users.rb +0 -4
  259. data/spec/files/empty_migration/001_create_sessions.rb +0 -9
  260. data/spec/files/empty_migration/002_create_nodes.rb +0 -0
  261. data/spec/files/empty_migration/003_3_create_users.rb +0 -4
  262. data/spec/files/integer_migrations/001_create_sessions.rb +0 -9
  263. data/spec/files/integer_migrations/002_create_nodes.rb +0 -9
  264. data/spec/files/integer_migrations/003_3_create_users.rb +0 -4
  265. data/spec/files/interleaved_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  266. data/spec/files/interleaved_timestamped_migrations/1273253850_create_artists.rb +0 -9
  267. data/spec/files/interleaved_timestamped_migrations/1273253851_create_nodes.rb +0 -9
  268. data/spec/files/interleaved_timestamped_migrations/1273253852_create_albums.rb +0 -9
  269. data/spec/files/interleaved_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  270. data/spec/files/missing_integer_migrations/001_create_alt_basic.rb +0 -4
  271. data/spec/files/missing_integer_migrations/003_create_alt_advanced.rb +0 -4
  272. data/spec/files/missing_timestamped_migrations/1273253849_create_sessions.rb +0 -9
  273. data/spec/files/missing_timestamped_migrations/1273253853_3_create_users.rb +0 -4
  274. data/spec/files/reversible_migrations/001_reversible.rb +0 -5
  275. data/spec/files/reversible_migrations/002_reversible.rb +0 -5
  276. data/spec/files/reversible_migrations/003_reversible.rb +0 -5
  277. data/spec/files/reversible_migrations/004_reversible.rb +0 -5
  278. data/spec/files/reversible_migrations/005_reversible.rb +0 -10
  279. data/spec/files/reversible_migrations/006_reversible.rb +0 -10
  280. data/spec/files/reversible_migrations/007_reversible.rb +0 -10
  281. data/spec/files/timestamped_migrations/1273253849_create_sessions.rb +0 -9
  282. data/spec/files/timestamped_migrations/1273253851_create_nodes.rb +0 -9
  283. data/spec/files/timestamped_migrations/1273253853_3_create_users.rb +0 -4
  284. data/spec/files/transaction_specified_migrations/001_create_alt_basic.rb +0 -4
  285. data/spec/files/transaction_specified_migrations/002_create_basic.rb +0 -4
  286. data/spec/files/transaction_unspecified_migrations/001_create_alt_basic.rb +0 -3
  287. data/spec/files/transaction_unspecified_migrations/002_create_basic.rb +0 -3
  288. data/spec/files/uppercase_timestamped_migrations/1273253849_CREATE_SESSIONS.RB +0 -9
  289. data/spec/files/uppercase_timestamped_migrations/1273253851_CREATE_NODES.RB +0 -9
  290. data/spec/files/uppercase_timestamped_migrations/1273253853_3_CREATE_USERS.RB +0 -4
  291. data/spec/guards_helper.rb +0 -59
  292. data/spec/integration/associations_test.rb +0 -2597
  293. data/spec/integration/database_test.rb +0 -113
  294. data/spec/integration/dataset_test.rb +0 -2037
  295. data/spec/integration/eager_loader_test.rb +0 -687
  296. data/spec/integration/migrator_test.rb +0 -262
  297. data/spec/integration/model_test.rb +0 -203
  298. data/spec/integration/plugin_test.rb +0 -2423
  299. data/spec/integration/prepared_statement_test.rb +0 -405
  300. data/spec/integration/schema_test.rb +0 -903
  301. data/spec/integration/spec_helper.rb +0 -71
  302. data/spec/integration/timezone_test.rb +0 -86
  303. data/spec/integration/transaction_test.rb +0 -603
  304. data/spec/integration/type_test.rb +0 -127
  305. data/spec/model/association_reflection_spec.rb +0 -803
  306. data/spec/model/associations_spec.rb +0 -4738
  307. data/spec/model/base_spec.rb +0 -875
  308. data/spec/model/class_dataset_methods_spec.rb +0 -146
  309. data/spec/model/dataset_methods_spec.rb +0 -198
  310. data/spec/model/eager_loading_spec.rb +0 -2377
  311. data/spec/model/hooks_spec.rb +0 -370
  312. data/spec/model/inflector_spec.rb +0 -26
  313. data/spec/model/model_spec.rb +0 -956
  314. data/spec/model/plugins_spec.rb +0 -429
  315. data/spec/model/record_spec.rb +0 -2118
  316. data/spec/model/spec_helper.rb +0 -46
  317. data/spec/model/validations_spec.rb +0 -220
  318. data/spec/model_no_assoc_spec.rb +0 -1
  319. data/spec/model_spec.rb +0 -1
  320. data/spec/plugin_spec.rb +0 -1
  321. data/spec/sequel_coverage.rb +0 -15
  322. data/spec/sequel_warning.rb +0 -5
  323. data/spec/spec_config.rb +0 -12
@@ -1,157 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe Sequel::Model, "#(set|update)_(all|only)" do
4
- before do
5
- @c = Class.new(Sequel::Model(:items)) do
6
- set_primary_key :id
7
- columns :x, :y, :z, :id
8
- end
9
- @c.plugin :whitelist_security
10
- @c.set_allowed_columns :x
11
- @c.strict_param_setting = false
12
- @o1 = @c.new
13
- DB.reset
14
- end
15
-
16
- it "should raise errors if not all hash fields can be set and strict_param_setting is true" do
17
- @c.strict_param_setting = true
18
-
19
- proc{@c.new.set_all(:x => 1, :y => 2, :z=>3, :use_transactions => false)}.must_raise(Sequel::MassAssignmentRestriction)
20
- (o = @c.new).set_all(:x => 1, :y => 2, :z=>3)
21
- o.values.must_equal(:x => 1, :y => 2, :z=>3)
22
-
23
- proc{@c.new.set_only({:x => 1, :y => 2, :z=>3, :id=>4}, :x, :y)}.must_raise(Sequel::MassAssignmentRestriction)
24
- proc{@c.new.set_only({:x => 1, :y => 2, :z=>3}, :x, :y)}.must_raise(Sequel::MassAssignmentRestriction)
25
- (o = @c.new).set_only({:x => 1, :y => 2}, :x, :y)
26
- o.values.must_equal(:x => 1, :y => 2)
27
- end
28
-
29
- it "#set_all should set all attributes including the primary key" do
30
- @o1.set_all(:x => 1, :y => 2, :z=>3, :id=>4)
31
- @o1.values.must_equal(:id =>4, :x => 1, :y => 2, :z=>3)
32
- end
33
-
34
- it "#set_all should set not set restricted fields" do
35
- @o1.use_transactions.must_equal false
36
- @o1.set_all(:x => 1, :use_transactions => true)
37
- @o1.use_transactions.must_equal false
38
- @o1.values.must_equal(:x => 1)
39
- end
40
-
41
- it "#set_only should only set given attributes" do
42
- @o1.set_only({:x => 1, :y => 2, :z=>3, :id=>4}, [:x, :y])
43
- @o1.values.must_equal(:x => 1, :y => 2)
44
- @o1.set_only({:x => 4, :y => 5, :z=>6, :id=>7}, :x, :y)
45
- @o1.values.must_equal(:x => 4, :y => 5)
46
- @o1.set_only({:x => 9, :y => 8, :z=>6, :id=>7}, :x, :y, :id)
47
- @o1.values.must_equal(:x => 9, :y => 8, :id=>7)
48
- end
49
-
50
- it "#update_all should update all attributes" do
51
- @c.new.update_all(:x => 1)
52
- DB.sqls.must_equal ["INSERT INTO items (x) VALUES (1)", "SELECT * FROM items WHERE id = 10"]
53
- @c.new.update_all(:y => 1)
54
- DB.sqls.must_equal ["INSERT INTO items (y) VALUES (1)", "SELECT * FROM items WHERE id = 10"]
55
- @c.new.update_all(:z => 1)
56
- DB.sqls.must_equal ["INSERT INTO items (z) VALUES (1)", "SELECT * FROM items WHERE id = 10"]
57
- end
58
-
59
- it "#update_only should only update given attributes" do
60
- @o1.update_only({:x => 1, :y => 2, :z=>3, :id=>4}, [:x])
61
- DB.sqls.must_equal ["INSERT INTO items (x) VALUES (1)", "SELECT * FROM items WHERE id = 10"]
62
- @c.new.update_only({:x => 1, :y => 2, :z=>3, :id=>4}, :x)
63
- DB.sqls.must_equal ["INSERT INTO items (x) VALUES (1)", "SELECT * FROM items WHERE id = 10"]
64
- end
65
- end
66
-
67
- describe Sequel::Model, "#(set|update)_(all|only) without set_allowed_columns" do
68
- before do
69
- @c = Class.new(Sequel::Model(:items)) do
70
- set_primary_key :id
71
- columns :x, :y, :z, :id
72
- end
73
- @c.plugin :whitelist_security
74
- @c.strict_param_setting = false
75
- @o1 = @c.new
76
- DB.reset
77
- end
78
- end
79
-
80
- describe Sequel::Model, ".strict_param_setting" do
81
- before do
82
- @c = Class.new(Sequel::Model(:blahblah)) do
83
- columns :x, :y, :z, :id
84
- end
85
- @c.plugin :whitelist_security
86
- @c.set_allowed_columns :x, :y
87
- end
88
-
89
- it "should raise an error if a missing/restricted column/method is accessed" do
90
- proc{@c.new(:z=>1)}.must_raise(Sequel::MassAssignmentRestriction)
91
- proc{@c.create(:z=>1)}.must_raise(Sequel::MassAssignmentRestriction)
92
- c = @c.new
93
- proc{c.set(:z=>1)}.must_raise(Sequel::MassAssignmentRestriction)
94
- proc{c.update(:z=>1)}.must_raise(Sequel::MassAssignmentRestriction)
95
- proc{c.set_all(:use_after_commit_rollback => false)}.must_raise(Sequel::MassAssignmentRestriction)
96
- proc{c.set_only({:x=>1}, :y)}.must_raise(Sequel::MassAssignmentRestriction)
97
- proc{c.update_all(:use_after_commit_rollback=>false)}.must_raise(Sequel::MassAssignmentRestriction)
98
- proc{c.update_only({:x=>1}, :y)}.must_raise(Sequel::MassAssignmentRestriction)
99
- end
100
- end
101
-
102
- describe Sequel::Model, ".allowed_columns " do
103
- before do
104
- @c = Class.new(Sequel::Model(:blahblah)) do
105
- columns :x, :y, :z
106
- end
107
- @c.plugin :whitelist_security
108
- @c.strict_param_setting = false
109
- @c.instance_variable_set(:@columns, [:x, :y, :z])
110
- DB.reset
111
- end
112
-
113
- it "should set the allowed columns correctly" do
114
- @c.allowed_columns.must_be_nil
115
- @c.set_allowed_columns :x
116
- @c.allowed_columns.must_equal [:x]
117
- @c.set_allowed_columns :x, :y
118
- @c.allowed_columns.must_equal [:x, :y]
119
- end
120
-
121
- it "should not change behavior if allowed_columns are not set" do
122
- i = @c.new(:x => 1, :y => 2, :z => 3)
123
- i.values.must_equal(:x => 1, :y => 2, :z => 3)
124
- i.set(:x => 4, :y => 5, :z => 6)
125
- i.values.must_equal(:x => 4, :y => 5, :z => 6)
126
-
127
- @c.dataset = @c.dataset.with_fetch(:x => 7)
128
- i = @c.new
129
- i.update(:x => 7)
130
- i.values.must_equal(:x => 7)
131
- DB.sqls.must_equal ["INSERT INTO blahblah (x) VALUES (7)", "SELECT * FROM blahblah WHERE id = 10"]
132
- end
133
-
134
- it "should only set allowed columns by default" do
135
- @c.set_allowed_columns :x, :y
136
- i = @c.new(:x => 1, :y => 2, :z => 3)
137
- i.values.must_equal(:x => 1, :y => 2)
138
- i.set(:x => 4, :y => 5, :z => 6)
139
- i.values.must_equal(:x => 4, :y => 5)
140
-
141
- @c.dataset = @c.dataset.with_fetch(:x => 7)
142
- i = @c.new
143
- i.update(:x => 7, :z => 9)
144
- i.values.must_equal(:x => 7)
145
- DB.sqls.must_equal ["INSERT INTO blahblah (x) VALUES (7)", "SELECT * FROM blahblah WHERE id = 10"]
146
- end
147
- end
148
-
149
- describe "Sequel::Model.freeze" do
150
- it "should freeze the model class and not allow any changes" do
151
- model = Class.new(Sequel::Model(:items))
152
- model.plugin :whitelist_security
153
- model.set_allowed_columns [:id]
154
- model.freeze
155
- model.allowed_columns.frozen?.must_equal true
156
- end
157
- end
@@ -1,213 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- begin
4
- require 'nokogiri'
5
- rescue LoadError
6
- warn "Skipping test of xml_serializer plugin: can't load nokogiri"
7
- else
8
- describe "Sequel::Plugins::XmlSerializer" do
9
- before do
10
- class ::Artist < Sequel::Model
11
- unrestrict_primary_key
12
- plugin :xml_serializer
13
- columns :id, :name
14
- @db_schema = {:id=>{:type=>:integer}, :name=>{:type=>:string}}
15
- one_to_many :albums
16
- end
17
- class ::Album < Sequel::Model
18
- unrestrict_primary_key
19
- attr_accessor :blah
20
- plugin :xml_serializer
21
- columns :id, :name, :artist_id
22
- @db_schema2 = @db_schema = {:id=>{:type=>:integer}, :name=>{:type=>:string}, :artist_id=>{:type=>:integer}}
23
- def self.set_dataset(*)
24
- super
25
- @db_schema = @db_schema2
26
- end
27
- many_to_one :artist
28
- end
29
- @artist = Artist.load(:id=>2, :name=>'YJM')
30
- @artist.associations[:albums] = []
31
- @album = Album.load(:id=>1, :name=>'RF')
32
- @album.artist = @artist
33
- @album.blah = 'Blah'
34
- end
35
- after do
36
- Object.send(:remove_const, :Artist)
37
- Object.send(:remove_const, :Album)
38
- end
39
-
40
- it "should round trip successfully" do
41
- Artist.from_xml(@artist.to_xml).must_equal @artist
42
- Album.from_xml(@album.to_xml).must_equal @album
43
- end
44
-
45
- it "should round trip successfully for namespaced models" do
46
- module XmlSerializerTest
47
- class Artist < Sequel::Model
48
- unrestrict_primary_key
49
- plugin :xml_serializer
50
- columns :id, :name
51
- @db_schema = {:id=>{:type=>:integer}, :name=>{:type=>:string}}
52
- end
53
- end
54
- artist = XmlSerializerTest::Artist.load(:id=>2, :name=>'YJM')
55
- XmlSerializerTest::Artist.from_xml(artist.to_xml).must_equal artist
56
- end
57
-
58
- it "should round trip successfully with empty strings" do
59
- artist = Artist.load(:id=>2, :name=>'')
60
- Artist.from_xml(artist.to_xml).must_equal artist
61
- end
62
-
63
- it "should round trip successfully with nil values" do
64
- artist = Artist.load(:id=>2, :name=>nil)
65
- Artist.from_xml(artist.to_xml).must_equal artist
66
- end
67
-
68
- it "should handle the :only option" do
69
- Artist.from_xml(@artist.to_xml(:only=>:name)).must_equal Artist.load(:name=>@artist.name)
70
- Album.from_xml(@album.to_xml(:only=>[:id, :name])).must_equal Album.load(:id=>@album.id, :name=>@album.name)
71
- end
72
-
73
- it "should handle the :except option" do
74
- Artist.from_xml(@artist.to_xml(:except=>:id)).must_equal Artist.load(:name=>@artist.name)
75
- Album.from_xml(@album.to_xml(:except=>[:id, :artist_id])).must_equal Album.load(:name=>@album.name)
76
- end
77
-
78
- it "should handle the :include option for associations" do
79
- Artist.from_xml(@artist.to_xml(:include=>:albums), :associations=>:albums).albums.must_equal [@album]
80
- Album.from_xml(@album.to_xml(:include=>:artist), :associations=>:artist).artist.must_equal @artist
81
- end
82
-
83
- it "should handle the :include option for arbitrary attributes" do
84
- Album.from_xml(@album.to_xml(:include=>:blah)).blah.must_equal @album.blah
85
- end
86
-
87
- it "should handle multiple inclusions using an array for the :include option" do
88
- a = Album.from_xml(@album.to_xml(:include=>[:blah, :artist]), :associations=>:artist)
89
- a.blah.must_equal @album.blah
90
- a.artist.must_equal @artist
91
- end
92
-
93
- it "should handle cascading using a hash for the :include option" do
94
- Artist.from_xml(@artist.to_xml(:include=>{:albums=>{:include=>:artist}}), :associations=>{:albums=>{:associations=>:artist}}).albums.map{|a| a.artist}.must_equal [@artist]
95
- Album.from_xml(@album.to_xml(:include=>{:artist=>{:include=>:albums}}), :associations=>{:artist=>{:associations=>:albums}}).artist.albums.must_equal [@album]
96
-
97
- Artist.from_xml(@artist.to_xml(:include=>{:albums=>{:only=>:name}}), :associations=>{:albums=>{:fields=>%w'name'}}).albums.must_equal [Album.load(:name=>@album.name)]
98
- Album.from_xml(@album.to_xml(:include=>{:artist=>{:except=>:name}}), :associations=>:artist).artist.must_equal Artist.load(:id=>@artist.id)
99
-
100
- Artist.from_xml(@artist.to_xml(:include=>{:albums=>{:include=>{:artist=>{:include=>:albums}}}}), :associations=>{:albums=>{:associations=>{:artist=>{:associations=>:albums}}}}).albums.map{|a| a.artist.albums}.must_equal [[@album]]
101
- Album.from_xml(@album.to_xml(:include=>{:artist=>{:include=>{:albums=>{:only=>:name}}}}), :associations=>{:artist=>{:associations=>{:albums=>{:fields=>%w'name'}}}}).artist.albums.must_equal [Album.load(:name=>@album.name)]
102
- end
103
-
104
- it "should handle the :include option cascading with an empty hash" do
105
- Album.from_xml(@album.to_xml(:include=>{:artist=>{}}), :associations=>:artist).artist.must_equal @artist
106
- Album.from_xml(@album.to_xml(:include=>{:blah=>{}})).blah.must_equal @album.blah
107
- end
108
-
109
- it "should support #from_xml to set column values" do
110
- @artist.from_xml('<album><name>AS</name></album>')
111
- @artist.name.must_equal 'AS'
112
- @artist.id.must_equal 2
113
- end
114
-
115
- it "should support a :name_proc option when serializing and deserializing" do
116
- Album.from_xml(@album.to_xml(:name_proc=>proc{|s| s.reverse}), :name_proc=>proc{|s| s.reverse}).must_equal @album
117
- end
118
-
119
- it "should support a :camelize option when serializing and :underscore option when deserializing" do
120
- Album.from_xml(@album.to_xml(:camelize=>true), :underscore=>true).must_equal @album
121
- end
122
-
123
- it "should support a :camelize option when serializing and :underscore option when deserializing" do
124
- Album.from_xml(@album.to_xml(:dasherize=>true), :underscore=>true).must_equal @album
125
- end
126
-
127
- it "should support an :encoding option when serializing" do
128
- @artist.to_xml(:encoding=>'UTF-8').gsub(/\n */m, '').must_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>"
129
- end
130
-
131
- it "should support a :builder_opts option when serializing" do
132
- @artist.to_xml(:builder_opts=>{:encoding=>'UTF-8'}).gsub(/\n */m, '').must_equal "<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>"
133
- end
134
-
135
- it "should support an :types option when serializing" do
136
- @artist.to_xml(:types=>true).gsub(/\n */m, '').must_equal "<?xml version=\"1.0\"?><artist><id type=\"integer\">2</id><name type=\"string\">YJM</name></artist>"
137
- end
138
-
139
- it "should support an :root_name option when serializing" do
140
- @artist.to_xml(:root_name=>'ar').gsub(/\n */m, '').must_equal "<?xml version=\"1.0\"?><ar><id>2</id><name>YJM</name></ar>"
141
- end
142
-
143
- it "should support an :array_root_name option when serializing arrays" do
144
- artist = @artist
145
- Artist.dataset = Artist.dataset.with_extend{define_method(:all){[artist]}}
146
- Artist.to_xml(:array_root_name=>'ars', :root_name=>'ar').gsub(/\n */m, '').must_equal "<?xml version=\"1.0\"?><ars><ar><id>2</id><name>YJM</name></ar></ars>"
147
- end
148
-
149
- it "should raise an exception for xml tags that aren't associations, columns, or setter methods" do
150
- Album.send(:undef_method, :blah=)
151
- proc{Album.from_xml(@album.to_xml(:include=>:blah))}.must_raise(Sequel::MassAssignmentRestriction)
152
- end
153
-
154
- it "should support a to_xml class and dataset method" do
155
- album = @album
156
- Album.dataset = Album.dataset.with_extend{define_method(:all){[album]}}
157
- Album.array_from_xml(Album.to_xml).must_equal [@album]
158
- Album.array_from_xml(Album.to_xml(:include=>:artist), :associations=>:artist).map{|x| x.artist}.must_equal [@artist]
159
- Album.array_from_xml(Album.dataset.to_xml(:only=>:name)).must_equal [Album.load(:name=>@album.name)]
160
- end
161
-
162
- it "should have to_xml dataset method respect an :array option" do
163
- a = Album.load(:id=>1, :name=>'RF', :artist_id=>3)
164
- Album.array_from_xml(Album.to_xml(:array=>[a])).must_equal [a]
165
-
166
- a.associations[:artist] = artist = Artist.load(:id=>3, :name=>'YJM')
167
- Album.array_from_xml(Album.to_xml(:array=>[a], :include=>:artist), :associations=>:artist).first.artist.must_equal artist
168
-
169
- artist.associations[:albums] = [a]
170
- x = Artist.array_from_xml(Artist.to_xml(:array=>[artist], :include=>:albums), :associations=>[:albums])
171
- x.must_equal [artist]
172
- x.first.albums.must_equal [a]
173
- end
174
-
175
- it "should work correctly for eager graphed datasets" do
176
- ds = Album.dataset.eager_graph(:artist).with_fetch(:id=>1, :name=>'RF', :artist_id=>2, :artist_id_0=>2, :artist_name=>'YJM')
177
- albums = Album.array_from_xml(ds.to_xml(:only=>:name, :include=>{:artist=>{:only=>:name}}), :associations=>:artist)
178
- albums.must_equal [Album.load(:name=>@album.name)]
179
- albums.first.artist.must_equal Artist.load(:name=>@artist.name)
180
- end
181
-
182
- it "should raise an error if the dataset does not have a row_proc" do
183
- proc{Album.dataset.naked.to_xml}.must_raise(Sequel::Error)
184
- end
185
-
186
- it "should raise an error if using parsing empty xml" do
187
- proc{Artist.from_xml("<?xml version=\"1.0\"?>\n")}.must_raise(Sequel::Error)
188
- proc{Artist.array_from_xml("<?xml version=\"1.0\"?>\n")}.must_raise(Sequel::Error)
189
- end
190
-
191
- it "should raise an error if attempting to set a restricted column and :all_columns is not used" do
192
- Artist.restrict_primary_key
193
- proc{Artist.from_xml(@artist.to_xml)}.must_raise(Sequel::MassAssignmentRestriction)
194
- end
195
-
196
- it "should raise an error if an unsupported association is passed in the :associations option" do
197
- Artist.association_reflections.delete(:albums)
198
- proc{Artist.from_xml(@artist.to_xml(:include=>:albums), :associations=>:albums)}.must_raise(Sequel::Error)
199
- end
200
-
201
- it "should raise an error if using from_xml and XML represents an array" do
202
- proc{Artist.from_xml(Artist.to_xml(:array=>[@artist]))}.must_raise(Sequel::MassAssignmentRestriction)
203
- end
204
-
205
- it "should raise an error if using array_from_xml and XML does not represent an array" do
206
- proc{Artist.array_from_xml(@artist.to_xml)}.must_raise(Sequel::Error)
207
- end
208
-
209
- it "should raise an error if using an unsupported :associations option" do
210
- proc{Artist.from_xml(@artist.to_xml, :associations=>'')}.must_raise(Sequel::Error)
211
- end
212
- end
213
- end
@@ -1,4 +0,0 @@
1
- Sequel.migration do
2
- up{create_table(:sm11111){Integer :smc1}}
3
- down{get(:asdfsadfsa)}
4
- end
@@ -1,4 +0,0 @@
1
- Sequel.migration do
2
- up{create_table(:sm22222){Integer :smc2}}
3
- down{drop_table(:sm22222)}
4
- end
@@ -1,9 +0,0 @@
1
- class CreateSessions < Sequel::Migration
2
- def up
3
- create_table(:sm1111){Integer :smc1}
4
- end
5
-
6
- def down
7
- get(:asdfsadfas)
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- Class.new(Sequel::Migration) do
2
- def up
3
- create_table(:sm2222){Integer :smc2}
4
- end
5
-
6
- def down
7
- drop_table(:sm2222)
8
- end
9
- end
@@ -1,3 +0,0 @@
1
- Sequel.migration do
2
- up{get(:asdfsadfas)}
3
- end
@@ -1,4 +0,0 @@
1
- Sequel.migration do
2
- up{create_table(:sm11111){Integer :smc1}}
3
- down{drop_table(:sm11111)}
4
- end
@@ -1,3 +0,0 @@
1
- Sequel.migration do
2
- up{get(:asdfassfd)}
3
- end
@@ -1,9 +0,0 @@
1
- class CreateSessions < Sequel::Migration
2
- def up
3
- create_table(:sm1111){Integer :smc1}
4
- end
5
-
6
- def down
7
- drop_table(:sm1111)
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- Class.new(Sequel::Migration) do
2
- def up
3
- create_table(:sm2222){Integer :smc2}
4
- end
5
-
6
- def down
7
- drop_table(:sm2222)
8
- end
9
- end
@@ -1,4 +0,0 @@
1
- Sequel.migration do
2
- up{create_table(:sm3333){Integer :smc3}}
3
- down{drop_table(:sm3333)}
4
- end
@@ -1,9 +0,0 @@
1
- class CreateArtists < Sequel::Migration
2
- def up
3
- create_table(:sm1122){Integer :smc12}
4
- end
5
-
6
- def down
7
- drop_table(:sm1122)
8
- end
9
- end