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,24 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "split_array_nil extension" do
4
- before do
5
- @ds = Sequel.mock[:table].extension(:split_array_nil)
6
- end
7
-
8
- it "should split IN with nil in array into separate OR IS NULL clause" do
9
- @ds.filter(:a=>[1, nil]).sql.must_equal "SELECT * FROM table WHERE ((a IN (1)) OR (a IS NULL))"
10
- end
11
-
12
- it "should split NOT IN with nil in array into separate AND IS NOT NULL clause" do
13
- @ds.exclude(:a=>[1, nil]).sql.must_equal "SELECT * FROM table WHERE ((a NOT IN (1)) AND (a IS NOT NULL))"
14
- end
15
-
16
- it "should not affect other IN/NOT in clauses" do
17
- @ds.filter(:a=>[1, 2]).sql.must_equal "SELECT * FROM table WHERE (a IN (1, 2))"
18
- @ds.exclude(:a=>[1, 2]).sql.must_equal "SELECT * FROM table WHERE (a NOT IN (1, 2))"
19
- end
20
-
21
- it "should not affect other types of filters clauses" do
22
- @ds.filter(:a=>1).sql.must_equal "SELECT * FROM table WHERE (a = 1)"
23
- end
24
- end
@@ -1,57 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "Sequel::Plugins::SplitValues" do
4
- before do
5
- @c = Class.new(Sequel::Model(:a))
6
- @c.columns :id, :x
7
- @c.plugin :split_values
8
- end
9
-
10
- it "stores non-columns in a separate hash" do
11
- @c.dataset = @c.dataset.with_fetch(:id=>1, :x=>2, :y=>3)
12
- o = @c.first
13
- @c.db.reset
14
-
15
- o.must_equal @c.load(:id=>1, :x=>2)
16
- o[:id].must_equal 1
17
- o[:x].must_equal 2
18
- o[:y].must_equal 3
19
- {@c.load(:id=>1, :x=>2)=>4}[o].must_equal 4
20
- o.values.must_equal(:id=>1, :x=>2)
21
-
22
- o.save
23
- @c.db.sqls.must_equal ["UPDATE a SET x = 2 WHERE (id = 1)"]
24
- end
25
-
26
- it "handles false values" do
27
- @c.dataset = @c.dataset.with_fetch(:id=>1, :x=>false, :y=>3)
28
- o = @c.first
29
- @c.db.reset
30
-
31
- o.must_equal @c.load(:id=>1, :x=>false)
32
- o[:id].must_equal 1
33
- o[:x].must_equal false
34
- o[:y].must_equal 3
35
- {@c.load(:id=>1, :x=>false)=>4}[o].must_equal 4
36
- o.values.must_equal(:id=>1, :x=>false)
37
-
38
- o.save
39
- @c.db.sqls.must_equal ["UPDATE a SET x = 'f' WHERE (id = 1)"]
40
- end
41
-
42
- it "handles nil values" do
43
- @c.dataset = @c.dataset.with_fetch(:id=>1, :x=>nil, :y=>3)
44
- o = @c.first
45
- @c.db.reset
46
-
47
- o.must_equal @c.load(:id=>1, :x=>nil)
48
- o[:id].must_equal 1
49
- o[:x].must_be_nil
50
- o[:y].must_equal 3
51
- {@c.load(:id=>1, :x=>nil)=>4}[o].must_equal 4
52
- o.values.must_equal(:id=>1, :x=>nil)
53
-
54
- o.save
55
- @c.db.sqls.must_equal ["UPDATE a SET x = NULL WHERE (id = 1)"]
56
- end
57
- end
@@ -1,33 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "sql_comments extension" do
4
- before do
5
- @ds = Sequel.mock[:t].extension(:sql_comments)
6
- end
7
-
8
- it "should not add a comment if one is not set for the dataset" do
9
- @ds.select_sql.must_equal 'SELECT * FROM t'
10
- @ds.insert_sql(:a=>1).must_equal 'INSERT INTO t (a) VALUES (1)'
11
- @ds.delete_sql.must_equal 'DELETE FROM t'
12
- @ds.update_sql(:a=>1).must_equal 'UPDATE t SET a = 1'
13
- end
14
-
15
- it "should add a comment if one is set for the dataset" do
16
- ds = @ds.comment("Some\nComment\r\n Here")
17
- ds.select_sql.must_equal "SELECT * FROM t -- Some Comment Here\n"
18
- ds.insert_sql(:a=>1).must_equal "INSERT INTO t (a) VALUES (1) -- Some Comment Here\n"
19
- ds.delete_sql.must_equal "DELETE FROM t -- Some Comment Here\n"
20
- ds.update_sql(:a=>1).must_equal "UPDATE t SET a = 1 -- Some Comment Here\n"
21
- end
22
-
23
- it "should handle comments used in nested datasets" do
24
- ds = @ds.comment("Some\nComment\r\n Here")
25
- ds.where(:id=>ds).select_sql.must_equal "SELECT * FROM t WHERE (id IN (SELECT * FROM t -- Some Comment Here\n)) -- Some Comment Here\n"
26
- end
27
-
28
- it "should handle frozen SQL strings" do
29
- @ds = Sequel.mock[:t].with_extend{def select_sql; super.freeze; end}.extension(:sql_comments)
30
- ds = @ds.comment("Some\nComment\r\n Here")
31
- ds.select_sql.must_equal "SELECT * FROM t -- Some Comment Here\n"
32
- end
33
- end
@@ -1,59 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- Sequel.extension :sql_expr
4
-
5
- describe "Sequel sql_expr extension" do
6
- before do
7
- @ds = Sequel.mock.dataset
8
- end
9
-
10
- it "Object#sql_expr should wrap the object in a GenericComplexExpression" do
11
- o = Object.new
12
- def o.sql_literal(ds) 'foo' end
13
- s = o.sql_expr
14
- @ds.literal(s).must_equal "foo"
15
- @ds.literal(s+1).must_equal "(foo + 1)"
16
- @ds.literal(s & true).must_equal "(foo AND 't')"
17
- @ds.literal(s < 1).must_equal "(foo < 1)"
18
- @ds.literal(s.sql_subscript(1)).must_equal "(foo)[1]"
19
- @ds.literal(s.like('a')).must_equal "(foo LIKE 'a' ESCAPE '\\')"
20
- @ds.literal(s.as(:a)).must_equal "foo AS a"
21
- @ds.literal(s.cast(Integer)).must_equal "CAST(foo AS integer)"
22
- @ds.literal(s.desc).must_equal "foo DESC"
23
- @ds.literal(s.sql_string + '1').must_equal "(foo || '1')"
24
- end
25
-
26
- it "Numeric#sql_expr should wrap the object in a NumericExpression" do
27
- [1, 2.0, 2^70, BigDecimal('1.0')].each do |o|
28
- @ds.literal(o.sql_expr).must_equal @ds.literal(o)
29
- @ds.literal(o.sql_expr + 1).must_equal "(#{@ds.literal(o)} + 1)"
30
- end
31
- end
32
-
33
- it "String#sql_expr should wrap the object in a StringExpression" do
34
- @ds.literal("".sql_expr).must_equal "''"
35
- @ds.literal("".sql_expr + :a).must_equal "('' || a)"
36
- end
37
-
38
- it "NilClass, TrueClass, and FalseClass#sql_expr should wrap the object in a BooleanExpression" do
39
- [nil, true, false].each do |o|
40
- @ds.literal(o.sql_expr).must_equal @ds.literal(o)
41
- @ds.literal(o.sql_expr & :a).must_equal "(#{@ds.literal(o)} AND a)"
42
- end
43
- end
44
-
45
- it "Proc#sql_expr should should treat the object as a virtual row block" do
46
- @ds.literal(proc{a}.sql_expr).must_equal "a"
47
- @ds.literal(proc{a(b)}.sql_expr).must_equal "a(b)"
48
- end
49
-
50
- it "Proc#sql_expr should should wrap the object in a GenericComplexExpression if the object is not already an expression" do
51
- @ds.literal(proc{1}.sql_expr).must_equal "1"
52
- @ds.literal(proc{1}.sql_expr + 2).must_equal "(1 + 2)"
53
- end
54
-
55
- it "Proc#sql_expr should should convert a hash or array of two element arrays to a BooleanExpression" do
56
- @ds.literal(proc{{a=>b}}.sql_expr).must_equal "(a = b)"
57
- @ds.literal(proc{[[a, b]]}.sql_expr & :a).must_equal "((a = b) AND a)"
58
- end
59
- end
@@ -1,35 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "static_cache_cache plugin" do
4
- before do
5
- @db = Sequel.mock
6
- @db.fetch = [{:id=>1, :name=>'A'}, {:id=>2, :name=>'B'}]
7
- @c = Class.new(Sequel::Model(@db[:t]))
8
- def @c.name; 'Foo' end
9
- @c.columns :id, :name
10
- @file = "spec/files/static_cache_cache-spec-#{$$}.cache"
11
- end
12
- after do
13
- File.delete(@file) if File.file?(@file)
14
- end
15
-
16
- it "should allow dumping and loading static cache rows from a cache file" do
17
- @c.plugin :static_cache_cache, @file
18
- @db.sqls
19
- @c.plugin :static_cache
20
- @db.sqls.must_equal ['SELECT * FROM t']
21
- @c.all.must_equal [@c.load(:id=>1, :name=>'A'), @c.load(:id=>2, :name=>'B')]
22
-
23
- @c.dump_static_cache_cache
24
-
25
- @db.fetch = []
26
- c = Class.new(Sequel::Model(@db[:t]))
27
- def c.name; 'Foo' end
28
- c.columns :id, :name
29
- @c.plugin :static_cache_cache, @file
30
- @db.sqls
31
- @c.plugin :static_cache
32
- @db.sqls.must_be_empty
33
- @c.all.must_equal [@c.load(:id=>1, :name=>'A'), @c.load(:id=>2, :name=>'B')]
34
- end
35
- end
@@ -1,471 +0,0 @@
1
- require_relative "spec_helper"
2
-
3
- describe "Sequel::Plugins::StaticCache" do
4
- before do
5
- @db = Sequel.mock
6
- @db.fetch = [{:id=>1}, {:id=>2}]
7
- @db.numrows = 1
8
- @c = Class.new(Sequel::Model(@db[:t]))
9
- @c.columns :id, :name
10
- end
11
-
12
- it "should not attempt to validate objects" do
13
- @c.send(:define_method, :validate){errors.add(:name, 'bad')}
14
- @c.plugin(:static_cache)
15
- @c.map{|o| o.valid?}.must_equal [true, true]
16
- end
17
-
18
- static_cache_specs = shared_description do
19
- it "should use a ruby hash as a cache of all model instances" do
20
- @c.cache.must_equal(1=>@c.load(:id=>1), 2=>@c.load(:id=>2))
21
- @c.cache[1].must_be_same_as(@c1)
22
- @c.cache[2].must_be_same_as(@c2)
23
- end
24
-
25
- it "should make .[] method with primary key use the cache" do
26
- @c[1].must_equal @c1
27
- @c[2].must_equal @c2
28
- @c[3].must_be_nil
29
- @c[[1, 2]].must_be_nil
30
- @c[nil].must_be_nil
31
- @c[].must_be_nil
32
- @db.sqls.must_equal []
33
- end
34
-
35
- it "should have .[] with a hash not use the cache" do
36
- @db.fetch = {:id=>2}
37
- @c[:id=>2].must_equal @c2
38
- @db.sqls.must_equal ['SELECT * FROM t WHERE (id = 2) LIMIT 1']
39
- end
40
-
41
- it "should support cache_get_pk" do
42
- @c.cache_get_pk(1).must_equal @c1
43
- @c.cache_get_pk(2).must_equal @c2
44
- @c.cache_get_pk(3).must_be_nil
45
- @db.sqls.must_equal []
46
- end
47
-
48
- it "should have first just returns instances without sending a query" do
49
- @c.first.must_equal @c1
50
- @c.first(2).must_equal [@c1, @c2]
51
- @c.first(0).must_equal []
52
- @db.sqls.must_equal []
53
- end
54
-
55
- it "should have first just returns instances with sending a query" do
56
- @db.fetch = lambda do |s|
57
- case s
58
- when /id = '?(\d+)'?/
59
- id = $1.to_i
60
- id <= 2 ? { id: id } : nil
61
- when /id >= '?(\d+)'?/
62
- id = $1.to_i
63
- id <= 2 ? (id..2).map { |i| { id: i } } : []
64
- end
65
- end
66
-
67
- @c.first(id: 2).must_equal @c2
68
- @c.first(id: '2').must_equal @c2
69
- @c.first(id: 3).must_be_nil
70
- @c.first { id >= 2 }.must_equal @c2
71
- @c.first(2) { id >= 1 }.must_equal [@c1, @c2]
72
- @c.first(Sequel.lit('id = ?', 2)).must_equal @c2
73
- @db.sqls.must_equal [
74
- "SELECT * FROM t WHERE (id = 2) LIMIT 1",
75
- "SELECT * FROM t WHERE (id = '2') LIMIT 1",
76
- "SELECT * FROM t WHERE (id = 3) LIMIT 1",
77
- "SELECT * FROM t WHERE (id >= 2) LIMIT 1",
78
- "SELECT * FROM t WHERE (id >= 1) LIMIT 2",
79
- "SELECT * FROM t WHERE (id = 2) LIMIT 1"
80
- ]
81
- end
82
-
83
- it "should have each just iterate over the hash's values without sending a query" do
84
- a = []
85
- @c.each{|o| a << o}
86
- a = a.sort_by{|o| o.id}
87
- a.first.must_equal @c1
88
- a.last.must_equal @c2
89
- @db.sqls.must_equal []
90
- end
91
-
92
- it "should have map just iterate over the hash's values without sending a query if no argument is given" do
93
- @c.map{|v| v.id}.sort.must_equal [1, 2]
94
- @db.sqls.must_equal []
95
- end
96
-
97
- it "should have count with no argument or block not issue a query" do
98
- @c.count.must_equal 2
99
- @db.sqls.must_equal []
100
- end
101
-
102
- it "should have count with argument or block not issue a query" do
103
- @db.fetch = [[{:count=>1}], [{:count=>2}]]
104
- @c.count(:a).must_equal 1
105
- @c.count{b}.must_equal 2
106
- @db.sqls.must_equal ["SELECT count(a) AS count FROM t LIMIT 1", "SELECT count(b) AS count FROM t LIMIT 1"]
107
- end
108
-
109
- it "should have map not send a query if given an argument" do
110
- @c.map(:id).sort.must_equal [1, 2]
111
- @db.sqls.must_equal []
112
- @c.map([:id,:id]).sort.must_equal [[1,1], [2,2]]
113
- @db.sqls.must_equal []
114
- end
115
-
116
- it "should have map without a block or argument not raise an exception or issue a query" do
117
- @c.map.to_a.must_equal @c.all
118
- @db.sqls.must_equal []
119
- end
120
-
121
- it "should have map without a block not return a frozen object" do
122
- @c.map.frozen?.must_equal false
123
- end
124
-
125
- it "should have map without a block return an Enumerator" do
126
- @c.map.class.must_equal Enumerator
127
- end
128
-
129
- it "should have map with a block and argument raise" do
130
- proc{@c.map(:id){}}.must_raise(Sequel::Error)
131
- end
132
-
133
- it "should have other enumerable methods work without sending a query" do
134
- a = @c.sort_by{|o| o.id}
135
- a.first.must_equal @c1
136
- a.last.must_equal @c2
137
- @db.sqls.must_equal []
138
- end
139
-
140
- it "should have all return all objects" do
141
- a = @c.all.sort_by{|o| o.id}
142
- a.first.must_equal @c1
143
- a.last.must_equal @c2
144
- @db.sqls.must_equal []
145
- end
146
-
147
- it "should have all not return a frozen object" do
148
- @c.all.frozen?.must_equal false
149
- end
150
-
151
- it "should have all return things in dataset order" do
152
- @c.all.must_equal [@c1, @c2]
153
- end
154
-
155
- it "should have all receiving block" do
156
- a = []
157
- b = @c.all { |o| a << o }
158
- a.must_equal [@c1, @c2]
159
- a.must_equal b
160
- @db.sqls.must_equal []
161
- end
162
-
163
- it "should have as_hash/to_hash without arguments run without a query" do
164
- a = @c.to_hash
165
- a.must_equal(1=>@c1, 2=>@c2)
166
- a[1].must_equal @c1
167
- a[2].must_equal @c2
168
-
169
- a = @c.as_hash
170
- a.must_equal(1=>@c1, 2=>@c2)
171
- a[1].must_equal @c1
172
- a[2].must_equal @c2
173
- @db.sqls.must_equal []
174
- end
175
-
176
- it "should have as_hash handle :hash option" do
177
- h = {}
178
- a = @c.as_hash(nil, nil, :hash=>h)
179
- a.must_be_same_as h
180
- a.must_equal(1=>@c1, 2=>@c2)
181
- a[1].must_equal @c1
182
- a[2].must_equal @c2
183
-
184
- h = {}
185
- a = @c.as_hash(:id, nil, :hash=>h)
186
- a.must_be_same_as h
187
- a.must_equal(1=>@c1, 2=>@c2)
188
- a[1].must_equal @c1
189
- a[2].must_equal @c2
190
-
191
- @db.sqls.must_equal []
192
- end
193
-
194
- it "should have as_hash with arguments return results without a query" do
195
- a = @c.as_hash(:id)
196
- a.must_equal(1=>@c1, 2=>@c2)
197
- a[1].must_equal @c1
198
- a[2].must_equal @c2
199
-
200
- a = @c.as_hash([:id])
201
- a.must_equal([1]=>@c1, [2]=>@c2)
202
- a[[1]].must_equal @c1
203
- a[[2]].must_equal @c2
204
-
205
- @c.as_hash(:id, :id).must_equal(1=>1, 2=>2)
206
- @c.as_hash([:id], :id).must_equal([1]=>1, [2]=>2)
207
- @c.as_hash(:id, [:id]).must_equal(1=>[1], 2=>[2])
208
- @c.as_hash([:id], [:id]).must_equal([1]=>[1], [2]=>[2])
209
-
210
- @db.sqls.must_equal []
211
- end
212
-
213
- it "should have as_hash not return a frozen object" do
214
- @c.as_hash.frozen?.must_equal false
215
- end
216
-
217
- it "should have to_hash_groups without arguments return the cached objects without a query" do
218
- a = @c.to_hash_groups(:id)
219
- a.must_equal(1=>[@c1], 2=>[@c2])
220
- a[1].first.must_equal @c1
221
- a[2].first.must_equal @c2
222
-
223
- a = @c.to_hash_groups([:id])
224
- a.must_equal([1]=>[@c1], [2]=>[@c2])
225
- a[[1]].first.must_equal @c1
226
- a[[2]].first.must_equal @c2
227
-
228
- @c.to_hash_groups(:id, :id).must_equal(1=>[1], 2=>[2])
229
- @c.to_hash_groups([:id], :id).must_equal([1]=>[1], [2]=>[2])
230
- @c.to_hash_groups(:id, [:id]).must_equal(1=>[[1]], 2=>[[2]])
231
- @c.to_hash_groups([:id], [:id]).must_equal([1]=>[[1]], [2]=>[[2]])
232
-
233
- @db.sqls.must_equal []
234
- end
235
-
236
- it "should have to_hash_groups handle :hash option" do
237
- h = {}
238
- a = @c.to_hash_groups(:id, nil, :hash=>h)
239
- a.must_be_same_as h
240
- a.must_equal(1=>[@c1], 2=>[@c2])
241
- a[1].first.must_equal @c1
242
- a[2].first.must_equal @c2
243
- end
244
-
245
- it "should have as_hash_groups without arguments return the cached objects without a query" do
246
- a = @c.to_hash_groups(:id)
247
- a.must_equal(1=>[@c1], 2=>[@c2])
248
- a[1].first.must_equal @c1
249
- a[2].first.must_equal @c2
250
-
251
- a = @c.to_hash_groups([:id])
252
- a.must_equal([1]=>[@c1], [2]=>[@c2])
253
- a[[1]].first.must_equal @c1
254
- a[[2]].first.must_equal @c2
255
-
256
- @c.to_hash_groups(:id, :id).must_equal(1=>[1], 2=>[2])
257
- @c.to_hash_groups([:id], :id).must_equal([1]=>[1], [2]=>[2])
258
- @c.to_hash_groups(:id, [:id]).must_equal(1=>[[1]], 2=>[[2]])
259
- @c.to_hash_groups([:id], [:id]).must_equal([1]=>[[1]], [2]=>[[2]])
260
-
261
- @db.sqls.must_equal []
262
- end
263
-
264
- it "subclasses should work correctly" do
265
- c = Class.new(@c)
266
- c.all.must_equal [c.load(:id=>1), c.load(:id=>2)]
267
- c.as_hash.must_equal(1=>c.load(:id=>1), 2=>c.load(:id=>2))
268
- @db.sqls.must_equal ['SELECT * FROM t']
269
- end
270
-
271
- it "set_dataset should work correctly" do
272
- ds = @c.dataset.from(:t2).columns(:id).with_fetch(:id=>3)
273
- @c.dataset = ds
274
- @c.all.must_equal [@c.load(:id=>3)]
275
- @c.as_hash.must_equal(3=>@c.load(:id=>3))
276
- @c.as_hash[3].must_equal @c.all.first
277
- @db.sqls.must_equal ['SELECT * FROM t2']
278
- end
279
-
280
- it "should have load_cache" do
281
- a = @c.all.sort_by{|o| o.id}
282
- a.first.must_equal @c1
283
- a.last.must_equal @c2
284
- @db.sqls.must_equal []
285
-
286
- @c.load_cache
287
-
288
- a = @c.all.sort_by{|o| o.id}
289
- a.first.must_equal @c1
290
- a.last.must_equal @c2
291
- @db.sqls.must_equal ['SELECT * FROM t']
292
- end
293
- end
294
-
295
- describe "without options" do
296
- before do
297
- @c.plugin :static_cache
298
- @c1 = @c.cache[1]
299
- @c2 = @c.cache[2]
300
- @db.sqls
301
- end
302
-
303
- include static_cache_specs
304
-
305
- it "should work correctly with composite keys" do
306
- @db.fetch = [{:id=>1, :id2=>1}, {:id=>2, :id2=>1}]
307
- @c = Class.new(Sequel::Model(@db[:t]))
308
- @c.columns :id, :id2
309
- @c.set_primary_key([:id, :id2])
310
- @c.plugin :static_cache
311
- @db.sqls
312
- @c1 = @c.cache[[1, 2]]
313
- @c2 = @c.cache[[2, 1]]
314
- @c[[1, 2]].must_be_same_as(@c1)
315
- @c[[2, 1]].must_be_same_as(@c2)
316
- @db.sqls.must_equal []
317
- end
318
-
319
- it "all of the static cache values (model instances) should be frozen" do
320
- @c.all.all?{|o| o.frozen?}.must_equal true
321
- end
322
-
323
- it "should make .[] method with primary key return cached instances" do
324
- @c[1].must_be_same_as(@c1)
325
- @c[2].must_be_same_as(@c2)
326
- end
327
-
328
- it "should have cache_get_pk return cached instances" do
329
- @c.cache_get_pk(1).must_be_same_as(@c1)
330
- @c.cache_get_pk(2).must_be_same_as(@c2)
331
- end
332
-
333
- it "should have each yield cached objects" do
334
- a = []
335
- @c.each{|o| a << o}
336
- a = a.sort_by{|o| o.id}
337
- a.first.must_be_same_as(@c1)
338
- a.last.must_be_same_as(@c2)
339
- end
340
-
341
- it "should have other enumerable methods work yield cached objects" do
342
- a = @c.sort_by{|o| o.id}
343
- a.first.must_be_same_as(@c1)
344
- a.last.must_be_same_as(@c2)
345
- end
346
-
347
- it "should have all return cached instances" do
348
- a = @c.all.sort_by{|o| o.id}
349
- a.first.must_be_same_as(@c1)
350
- a.last.must_be_same_as(@c2)
351
- end
352
-
353
- it "should have as_hash without arguments use cached instances" do
354
- a = @c.as_hash
355
- a[1].must_be_same_as(@c1)
356
- a[2].must_be_same_as(@c2)
357
- end
358
-
359
- it "should have as_hash with arguments return cached instances" do
360
- a = @c.as_hash(:id)
361
- a[1].must_be_same_as(@c1)
362
- a[2].must_be_same_as(@c2)
363
-
364
- a = @c.as_hash([:id])
365
- a[[1]].must_be_same_as(@c1)
366
- a[[2]].must_be_same_as(@c2)
367
- end
368
-
369
- it "should have to_hash_groups without single argument return the cached instances" do
370
- a = @c.to_hash_groups(:id)
371
- a[1].first.must_be_same_as(@c1)
372
- a[2].first.must_be_same_as(@c2)
373
-
374
- a = @c.to_hash_groups([:id])
375
- a[[1]].first.must_be_same_as(@c1)
376
- a[[2]].first.must_be_same_as(@c2)
377
- end
378
-
379
- it "should not allow the saving of new objects" do
380
- proc{@c.create}.must_raise(Sequel::HookFailed)
381
- end
382
-
383
- it "should not allow the saving of existing objects" do
384
- @db.fetch = {:id=>1}
385
- proc{@c.first(:id=>1).save}.must_raise(Sequel::HookFailed)
386
- end
387
-
388
- it "should not allow the destroying of existing objects" do
389
- @db.fetch = {:id=>1}
390
- proc{@c.first(:id=>1).destroy}.must_raise(Sequel::HookFailed)
391
- end
392
- end
393
-
394
- describe "with :frozen=>false option" do
395
- before do
396
- @c.plugin :static_cache, :frozen=>false
397
- @c1 = @c.cache[1]
398
- @c2 = @c.cache[2]
399
- @db.sqls
400
- end
401
-
402
- include static_cache_specs
403
-
404
- it "record retrieved by primary key should not be frozen" do
405
- @c[1].frozen?.must_equal false
406
- @c.cache_get_pk(1).frozen?.must_equal false
407
- end
408
-
409
- it "none of values returned in #all should be frozen" do
410
- @c.all.all?{|o| !o.frozen?}.must_equal true
411
- end
412
-
413
- it "none of values yielded by each should be frozen" do
414
- a = []
415
- @c.each{|o| a << o}
416
- a.all?{|o| !o.frozen?}.must_equal true
417
- end
418
-
419
- it "none of values yielded by Enumerable method should be frozen" do
420
- @c.sort_by{|o| o.id}.all?{|o| !o.frozen?}.must_equal true
421
- end
422
-
423
- it "none of values returned by map without an argument or block should be frozen" do
424
- @c.map{|o| o}.all?{|o| !o.frozen?}.must_equal true
425
- @c.map.all?{|o| !o.frozen?}.must_equal true
426
- end
427
-
428
- it "none of values in the hash returned by as_hash without an argument should be frozen" do
429
- @c.as_hash.values.all?{|o| !o.frozen?}.must_equal true
430
- end
431
-
432
- it "none of values in the hash returned by as_hash with a single argument should be frozen" do
433
- @c.as_hash(:id).values.all?{|o| !o.frozen?}.must_equal true
434
- end
435
-
436
- it "none of values in the hash returned by as_hash with a single array argument should be frozen" do
437
- @c.as_hash([:id, :id]).values.all?{|o| !o.frozen?}.must_equal true
438
- end
439
-
440
- it "none of values in the hash returned by to_hash_groups with a single argument should be frozen" do
441
- @c.to_hash_groups(:id).values.flatten.all?{|o| !o.frozen?}.must_equal true
442
- end
443
-
444
- it "none of values in the hash returned by to_hash_groups with a single array argument should be frozen" do
445
- @c.to_hash_groups([:id, :id]).values.flatten.all?{|o| !o.frozen?}.must_equal true
446
- end
447
-
448
- it "should not automatically update the cache when creating new model objects" do
449
- o = @c.new
450
- o.id = 3
451
- @db.autoid = 3
452
- @db.fetch = [[{:id=>1}, {:id=>2}, {:id=>3}], [{:id=>3}]]
453
- o.save
454
- @c[3].must_be_nil
455
- end
456
-
457
- it "should not automatically update the cache when updating model objects" do
458
- o = @c[2]
459
- @db.fetch = [[{:id=>1}, {:id=>2, :name=>'a'}]]
460
- o.update(:name=>'a')
461
- @c[2].values.must_equal(:id=>2)
462
- end
463
-
464
- it "should not automatically update the cache when updating model objects" do
465
- o = @c[2]
466
- @db.fetch = [[{:id=>1}]]
467
- o.destroy
468
- @c[2].must_equal @c2
469
- end
470
- end
471
- end