ibm_db 5.6.1-arm64-darwin-24

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 (753) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +299 -0
  3. data/LICENSE +55 -0
  4. data/MANIFEST +14 -0
  5. data/ParameterizedQueries README +39 -0
  6. data/README +210 -0
  7. data/ext/Makefile +270 -0
  8. data/ext/Makefile.nt32 +181 -0
  9. data/ext/Makefile.nt32.191 +212 -0
  10. data/ext/extconf.rb +320 -0
  11. data/ext/gil_release_version.h +3 -0
  12. data/ext/ibm_db.bundle +0 -0
  13. data/ext/ibm_db.c +11865 -0
  14. data/ext/ibm_db.o +0 -0
  15. data/ext/mkmf.log +98 -0
  16. data/ext/ruby_ibm_db.h +241 -0
  17. data/ext/ruby_ibm_db_cli.c +867 -0
  18. data/ext/ruby_ibm_db_cli.h +508 -0
  19. data/ext/ruby_ibm_db_cli.o +0 -0
  20. data/ext/unicode_support_version.h +3 -0
  21. data/init.rb +42 -0
  22. data/lib/IBM_DB.rb +27 -0
  23. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +4407 -0
  24. data/lib/active_record/connection_adapters/ibm_db_pstmt.rb +1965 -0
  25. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -0
  26. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -0
  27. data/lib/ibm_db.bundle +0 -0
  28. data/test/active_record/connection_adapters/fake_adapter.rb +52 -0
  29. data/test/activejob/destroy_association_async_test.rb +305 -0
  30. data/test/activejob/destroy_async_job_not_present_test.rb +31 -0
  31. data/test/activejob/helper.rb +15 -0
  32. data/test/assets/example.log +1 -0
  33. data/test/assets/flowers.jpg +0 -0
  34. data/test/assets/schema_dump_5_1.yml +345 -0
  35. data/test/assets/test.txt +1 -0
  36. data/test/cases/adapter_prevent_writes_test.rb +334 -0
  37. data/test/cases/adapter_test.rb +565 -0
  38. data/test/cases/adapters/mysql2/active_schema_test.rb +203 -0
  39. data/test/cases/adapters/mysql2/auto_increment_test.rb +34 -0
  40. data/test/cases/adapters/mysql2/bind_parameter_test.rb +52 -0
  41. data/test/cases/adapters/mysql2/boolean_test.rb +102 -0
  42. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +65 -0
  43. data/test/cases/adapters/mysql2/charset_collation_test.rb +57 -0
  44. data/test/cases/adapters/mysql2/connection_test.rb +208 -0
  45. data/test/cases/adapters/mysql2/count_deleted_rows_with_lock_test.rb +28 -0
  46. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +49 -0
  47. data/test/cases/adapters/mysql2/enum_test.rb +47 -0
  48. data/test/cases/adapters/mysql2/explain_test.rb +23 -0
  49. data/test/cases/adapters/mysql2/json_test.rb +24 -0
  50. data/test/cases/adapters/mysql2/mysql2_adapter_prevent_writes_test.rb +208 -0
  51. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +238 -0
  52. data/test/cases/adapters/mysql2/nested_deadlock_test.rb +75 -0
  53. data/test/cases/adapters/mysql2/optimizer_hints_test.rb +69 -0
  54. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  55. data/test/cases/adapters/mysql2/schema_migrations_test.rb +64 -0
  56. data/test/cases/adapters/mysql2/schema_test.rb +128 -0
  57. data/test/cases/adapters/mysql2/set_test.rb +32 -0
  58. data/test/cases/adapters/mysql2/sp_test.rb +38 -0
  59. data/test/cases/adapters/mysql2/sql_types_test.rb +16 -0
  60. data/test/cases/adapters/mysql2/table_options_test.rb +125 -0
  61. data/test/cases/adapters/mysql2/transaction_test.rb +151 -0
  62. data/test/cases/adapters/mysql2/unsigned_type_test.rb +68 -0
  63. data/test/cases/adapters/mysql2/virtual_column_test.rb +66 -0
  64. data/test/cases/adapters/postgresql/active_schema_test.rb +113 -0
  65. data/test/cases/adapters/postgresql/array_test.rb +394 -0
  66. data/test/cases/adapters/postgresql/bit_string_test.rb +84 -0
  67. data/test/cases/adapters/postgresql/bytea_test.rb +135 -0
  68. data/test/cases/adapters/postgresql/case_insensitive_test.rb +27 -0
  69. data/test/cases/adapters/postgresql/change_schema_test.rb +40 -0
  70. data/test/cases/adapters/postgresql/cidr_test.rb +27 -0
  71. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  72. data/test/cases/adapters/postgresql/collation_test.rb +55 -0
  73. data/test/cases/adapters/postgresql/composite_test.rb +134 -0
  74. data/test/cases/adapters/postgresql/connection_test.rb +245 -0
  75. data/test/cases/adapters/postgresql/create_unlogged_tables_test.rb +74 -0
  76. data/test/cases/adapters/postgresql/datatype_test.rb +89 -0
  77. data/test/cases/adapters/postgresql/date_test.rb +42 -0
  78. data/test/cases/adapters/postgresql/domain_test.rb +49 -0
  79. data/test/cases/adapters/postgresql/enum_test.rb +93 -0
  80. data/test/cases/adapters/postgresql/explain_test.rb +22 -0
  81. data/test/cases/adapters/postgresql/extension_migration_test.rb +64 -0
  82. data/test/cases/adapters/postgresql/foreign_table_test.rb +109 -0
  83. data/test/cases/adapters/postgresql/full_text_test.rb +46 -0
  84. data/test/cases/adapters/postgresql/geometric_test.rb +372 -0
  85. data/test/cases/adapters/postgresql/hstore_test.rb +390 -0
  86. data/test/cases/adapters/postgresql/infinity_test.rb +108 -0
  87. data/test/cases/adapters/postgresql/integer_test.rb +27 -0
  88. data/test/cases/adapters/postgresql/interval_test.rb +99 -0
  89. data/test/cases/adapters/postgresql/json_test.rb +52 -0
  90. data/test/cases/adapters/postgresql/ltree_test.rb +51 -0
  91. data/test/cases/adapters/postgresql/money_test.rb +127 -0
  92. data/test/cases/adapters/postgresql/network_test.rb +102 -0
  93. data/test/cases/adapters/postgresql/numbers_test.rb +51 -0
  94. data/test/cases/adapters/postgresql/optimizer_hints_test.rb +71 -0
  95. data/test/cases/adapters/postgresql/partitions_test.rb +22 -0
  96. data/test/cases/adapters/postgresql/postgresql_adapter_prevent_writes_test.rb +205 -0
  97. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +447 -0
  98. data/test/cases/adapters/postgresql/prepared_statements_disabled_test.rb +27 -0
  99. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  100. data/test/cases/adapters/postgresql/quoting_test.rb +50 -0
  101. data/test/cases/adapters/postgresql/range_test.rb +457 -0
  102. data/test/cases/adapters/postgresql/referential_integrity_test.rb +112 -0
  103. data/test/cases/adapters/postgresql/rename_table_test.rb +35 -0
  104. data/test/cases/adapters/postgresql/schema_authorization_test.rb +110 -0
  105. data/test/cases/adapters/postgresql/schema_test.rb +713 -0
  106. data/test/cases/adapters/postgresql/serial_test.rb +156 -0
  107. data/test/cases/adapters/postgresql/statement_pool_test.rb +61 -0
  108. data/test/cases/adapters/postgresql/timestamp_test.rb +92 -0
  109. data/test/cases/adapters/postgresql/transaction_nested_test.rb +114 -0
  110. data/test/cases/adapters/postgresql/transaction_test.rb +189 -0
  111. data/test/cases/adapters/postgresql/type_lookup_test.rb +35 -0
  112. data/test/cases/adapters/postgresql/utils_test.rb +64 -0
  113. data/test/cases/adapters/postgresql/uuid_test.rb +411 -0
  114. data/test/cases/adapters/postgresql/xml_test.rb +50 -0
  115. data/test/cases/adapters/sqlite3/collation_test.rb +64 -0
  116. data/test/cases/adapters/sqlite3/copy_table_test.rb +101 -0
  117. data/test/cases/adapters/sqlite3/explain_test.rb +23 -0
  118. data/test/cases/adapters/sqlite3/json_test.rb +29 -0
  119. data/test/cases/adapters/sqlite3/quoting_test.rb +79 -0
  120. data/test/cases/adapters/sqlite3/sqlite3_adapter_prevent_writes_test.rb +186 -0
  121. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +628 -0
  122. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  123. data/test/cases/adapters/sqlite3/statement_pool_test.rb +21 -0
  124. data/test/cases/adapters/sqlite3/transaction_test.rb +123 -0
  125. data/test/cases/aggregations_test.rb +170 -0
  126. data/test/cases/annotate_test.rb +46 -0
  127. data/test/cases/ar_schema_test.rb +213 -0
  128. data/test/cases/arel/attributes/attribute_test.rb +1145 -0
  129. data/test/cases/arel/attributes/math_test.rb +83 -0
  130. data/test/cases/arel/attributes_test.rb +27 -0
  131. data/test/cases/arel/collectors/bind_test.rb +40 -0
  132. data/test/cases/arel/collectors/composite_test.rb +47 -0
  133. data/test/cases/arel/collectors/sql_string_test.rb +41 -0
  134. data/test/cases/arel/collectors/substitute_bind_collector_test.rb +48 -0
  135. data/test/cases/arel/crud_test.rb +65 -0
  136. data/test/cases/arel/delete_manager_test.rb +53 -0
  137. data/test/cases/arel/factory_methods_test.rb +46 -0
  138. data/test/cases/arel/helper.rb +45 -0
  139. data/test/cases/arel/insert_manager_test.rb +241 -0
  140. data/test/cases/arel/nodes/and_test.rb +30 -0
  141. data/test/cases/arel/nodes/as_test.rb +36 -0
  142. data/test/cases/arel/nodes/ascending_test.rb +46 -0
  143. data/test/cases/arel/nodes/bin_test.rb +35 -0
  144. data/test/cases/arel/nodes/binary_test.rb +29 -0
  145. data/test/cases/arel/nodes/bind_param_test.rb +22 -0
  146. data/test/cases/arel/nodes/case_test.rb +96 -0
  147. data/test/cases/arel/nodes/casted_test.rb +18 -0
  148. data/test/cases/arel/nodes/comment_test.rb +22 -0
  149. data/test/cases/arel/nodes/count_test.rb +35 -0
  150. data/test/cases/arel/nodes/delete_statement_test.rb +36 -0
  151. data/test/cases/arel/nodes/descending_test.rb +46 -0
  152. data/test/cases/arel/nodes/distinct_test.rb +21 -0
  153. data/test/cases/arel/nodes/equality_test.rb +62 -0
  154. data/test/cases/arel/nodes/extract_test.rb +43 -0
  155. data/test/cases/arel/nodes/false_test.rb +21 -0
  156. data/test/cases/arel/nodes/grouping_test.rb +26 -0
  157. data/test/cases/arel/nodes/infix_operation_test.rb +42 -0
  158. data/test/cases/arel/nodes/insert_statement_test.rb +44 -0
  159. data/test/cases/arel/nodes/named_function_test.rb +48 -0
  160. data/test/cases/arel/nodes/node_test.rb +22 -0
  161. data/test/cases/arel/nodes/not_test.rb +31 -0
  162. data/test/cases/arel/nodes/or_test.rb +36 -0
  163. data/test/cases/arel/nodes/over_test.rb +69 -0
  164. data/test/cases/arel/nodes/select_core_test.rb +79 -0
  165. data/test/cases/arel/nodes/select_statement_test.rb +51 -0
  166. data/test/cases/arel/nodes/sql_literal_test.rb +75 -0
  167. data/test/cases/arel/nodes/sum_test.rb +35 -0
  168. data/test/cases/arel/nodes/table_alias_test.rb +29 -0
  169. data/test/cases/arel/nodes/true_test.rb +21 -0
  170. data/test/cases/arel/nodes/unary_operation_test.rb +41 -0
  171. data/test/cases/arel/nodes/update_statement_test.rb +60 -0
  172. data/test/cases/arel/nodes/window_test.rb +81 -0
  173. data/test/cases/arel/nodes_test.rb +34 -0
  174. data/test/cases/arel/select_manager_test.rb +1238 -0
  175. data/test/cases/arel/support/fake_record.rb +135 -0
  176. data/test/cases/arel/table_test.rb +216 -0
  177. data/test/cases/arel/update_manager_test.rb +126 -0
  178. data/test/cases/arel/visitors/dispatch_contamination_test.rb +78 -0
  179. data/test/cases/arel/visitors/dot_test.rb +90 -0
  180. data/test/cases/arel/visitors/mysql_test.rb +157 -0
  181. data/test/cases/arel/visitors/postgres_test.rb +366 -0
  182. data/test/cases/arel/visitors/sqlite_test.rb +75 -0
  183. data/test/cases/arel/visitors/to_sql_test.rb +750 -0
  184. data/test/cases/associations/association_scope_test.rb +16 -0
  185. data/test/cases/associations/belongs_to_associations_test.rb +1493 -0
  186. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +43 -0
  187. data/test/cases/associations/callbacks_test.rb +208 -0
  188. data/test/cases/associations/cascaded_eager_loading_test.rb +245 -0
  189. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +156 -0
  190. data/test/cases/associations/eager_load_nested_include_test.rb +127 -0
  191. data/test/cases/associations/eager_singularization_test.rb +148 -0
  192. data/test/cases/associations/eager_test.rb +1658 -0
  193. data/test/cases/associations/extension_test.rb +93 -0
  194. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1025 -0
  195. data/test/cases/associations/has_many_associations_test.rb +3074 -0
  196. data/test/cases/associations/has_many_through_associations_test.rb +1580 -0
  197. data/test/cases/associations/has_one_associations_test.rb +872 -0
  198. data/test/cases/associations/has_one_through_associations_test.rb +429 -0
  199. data/test/cases/associations/inner_join_association_test.rb +215 -0
  200. data/test/cases/associations/inverse_associations_test.rb +941 -0
  201. data/test/cases/associations/join_model_test.rb +787 -0
  202. data/test/cases/associations/left_outer_join_association_test.rb +123 -0
  203. data/test/cases/associations/nested_through_associations_test.rb +636 -0
  204. data/test/cases/associations/required_test.rb +127 -0
  205. data/test/cases/associations_test.rb +516 -0
  206. data/test/cases/attribute_decorators_test.rb +126 -0
  207. data/test/cases/attribute_methods/read_test.rb +60 -0
  208. data/test/cases/attribute_methods_test.rb +1124 -0
  209. data/test/cases/attribute_set_test.rb +270 -0
  210. data/test/cases/attribute_test.rb +246 -0
  211. data/test/cases/attributes_test.rb +371 -0
  212. data/test/cases/autosave_association_test.rb +1953 -0
  213. data/test/cases/base_prevent_writes_test.rb +229 -0
  214. data/test/cases/base_test.rb +1770 -0
  215. data/test/cases/batches_test.rb +695 -0
  216. data/test/cases/binary_test.rb +39 -0
  217. data/test/cases/bind_parameter_test.rb +283 -0
  218. data/test/cases/boolean_test.rb +52 -0
  219. data/test/cases/cache_key_test.rb +131 -0
  220. data/test/cases/calculations_test.rb +1361 -0
  221. data/test/cases/callbacks_test.rb +503 -0
  222. data/test/cases/clone_test.rb +45 -0
  223. data/test/cases/coders/json_test.rb +17 -0
  224. data/test/cases/coders/yaml_column_test.rb +66 -0
  225. data/test/cases/collection_cache_key_test.rb +272 -0
  226. data/test/cases/column_alias_test.rb +19 -0
  227. data/test/cases/column_definition_test.rb +34 -0
  228. data/test/cases/comment_test.rb +204 -0
  229. data/test/cases/connection_adapters/adapter_leasing_test.rb +60 -0
  230. data/test/cases/connection_adapters/connection_handler_test.rb +467 -0
  231. data/test/cases/connection_adapters/connection_handlers_multi_db_test.rb +400 -0
  232. data/test/cases/connection_adapters/connection_handlers_multi_pool_config_test.rb +103 -0
  233. data/test/cases/connection_adapters/connection_handlers_sharding_db_test.rb +499 -0
  234. data/test/cases/connection_adapters/connection_specification_test.rb +12 -0
  235. data/test/cases/connection_adapters/connection_swapping_nested_test.rb +457 -0
  236. data/test/cases/connection_adapters/legacy_connection_handlers_multi_db_test.rb +486 -0
  237. data/test/cases/connection_adapters/legacy_connection_handlers_sharding_db_test.rb +586 -0
  238. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +436 -0
  239. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +81 -0
  240. data/test/cases/connection_adapters/quoting_test.rb +13 -0
  241. data/test/cases/connection_adapters/schema_cache_test.rb +294 -0
  242. data/test/cases/connection_adapters/type_lookup_test.rb +119 -0
  243. data/test/cases/connection_management_test.rb +114 -0
  244. data/test/cases/connection_pool_test.rb +754 -0
  245. data/test/cases/connection_specification/resolver_test.rb +131 -0
  246. data/test/cases/core_test.rb +136 -0
  247. data/test/cases/counter_cache_test.rb +368 -0
  248. data/test/cases/custom_locking_test.rb +19 -0
  249. data/test/cases/database_configurations/hash_config_test.rb +74 -0
  250. data/test/cases/database_configurations/resolver_test.rb +150 -0
  251. data/test/cases/database_configurations_test.rb +145 -0
  252. data/test/cases/database_selector_test.rb +296 -0
  253. data/test/cases/database_statements_test.rb +36 -0
  254. data/test/cases/date_test.rb +36 -0
  255. data/test/cases/date_time_precision_test.rb +129 -0
  256. data/test/cases/date_time_test.rb +76 -0
  257. data/test/cases/defaults_test.rb +254 -0
  258. data/test/cases/delegated_type_test.rb +57 -0
  259. data/test/cases/dirty_test.rb +959 -0
  260. data/test/cases/disconnected_test.rb +30 -0
  261. data/test/cases/dup_test.rb +184 -0
  262. data/test/cases/enum_test.rb +823 -0
  263. data/test/cases/errors_test.rb +16 -0
  264. data/test/cases/explain_subscriber_test.rb +66 -0
  265. data/test/cases/explain_test.rb +79 -0
  266. data/test/cases/filter_attributes_test.rb +153 -0
  267. data/test/cases/finder_respond_to_test.rb +60 -0
  268. data/test/cases/finder_test.rb +1676 -0
  269. data/test/cases/fixture_set/file_test.rb +152 -0
  270. data/test/cases/fixtures_test.rb +1645 -0
  271. data/test/cases/forbidden_attributes_protection_test.rb +130 -0
  272. data/test/cases/habtm_destroy_order_test.rb +61 -0
  273. data/test/cases/helper.rb +233 -0
  274. data/test/cases/hot_compatibility_test.rb +143 -0
  275. data/test/cases/i18n_test.rb +46 -0
  276. data/test/cases/inheritance_test.rb +671 -0
  277. data/test/cases/insert_all_test.rb +489 -0
  278. data/test/cases/instrumentation_test.rb +101 -0
  279. data/test/cases/integration_test.rb +243 -0
  280. data/test/cases/invalid_connection_test.rb +26 -0
  281. data/test/cases/invertible_migration_test.rb +527 -0
  282. data/test/cases/json_attribute_test.rb +35 -0
  283. data/test/cases/json_serialization_test.rb +310 -0
  284. data/test/cases/json_shared_test_cases.rb +290 -0
  285. data/test/cases/locking_test.rb +787 -0
  286. data/test/cases/log_subscriber_test.rb +267 -0
  287. data/test/cases/marshal_serialization_test.rb +39 -0
  288. data/test/cases/migration/change_schema_test.rb +504 -0
  289. data/test/cases/migration/change_table_test.rb +364 -0
  290. data/test/cases/migration/check_constraint_test.rb +162 -0
  291. data/test/cases/migration/column_attributes_test.rb +186 -0
  292. data/test/cases/migration/column_positioning_test.rb +68 -0
  293. data/test/cases/migration/columns_test.rb +326 -0
  294. data/test/cases/migration/command_recorder_test.rb +437 -0
  295. data/test/cases/migration/compatibility_test.rb +673 -0
  296. data/test/cases/migration/create_join_table_test.rb +167 -0
  297. data/test/cases/migration/foreign_key_test.rb +581 -0
  298. data/test/cases/migration/helper.rb +40 -0
  299. data/test/cases/migration/index_test.rb +267 -0
  300. data/test/cases/migration/logger_test.rb +39 -0
  301. data/test/cases/migration/pending_migrations_test.rb +106 -0
  302. data/test/cases/migration/references_foreign_key_test.rb +235 -0
  303. data/test/cases/migration/references_index_test.rb +120 -0
  304. data/test/cases/migration/references_statements_test.rb +137 -0
  305. data/test/cases/migration/rename_table_test.rb +116 -0
  306. data/test/cases/migration_test.rb +1525 -0
  307. data/test/cases/migrator_test.rb +527 -0
  308. data/test/cases/mixin_test.rb +64 -0
  309. data/test/cases/modules_test.rb +174 -0
  310. data/test/cases/multi_db_migrator_test.rb +223 -0
  311. data/test/cases/multiparameter_attributes_test.rb +399 -0
  312. data/test/cases/multiple_db_test.rb +116 -0
  313. data/test/cases/nested_attributes_test.rb +1119 -0
  314. data/test/cases/nested_attributes_with_callbacks_test.rb +146 -0
  315. data/test/cases/null_relation_test.rb +84 -0
  316. data/test/cases/numeric_data_test.rb +93 -0
  317. data/test/cases/persistence_test.rb +1093 -0
  318. data/test/cases/pooled_connections_test.rb +73 -0
  319. data/test/cases/prepared_statement_status_test.rb +48 -0
  320. data/test/cases/primary_keys_test.rb +482 -0
  321. data/test/cases/query_cache_test.rb +915 -0
  322. data/test/cases/quoting_test.rb +303 -0
  323. data/test/cases/readonly_test.rb +120 -0
  324. data/test/cases/reaper_test.rb +199 -0
  325. data/test/cases/reflection_test.rb +520 -0
  326. data/test/cases/relation/delegation_test.rb +76 -0
  327. data/test/cases/relation/delete_all_test.rb +117 -0
  328. data/test/cases/relation/merging_test.rb +434 -0
  329. data/test/cases/relation/mutation_test.rb +145 -0
  330. data/test/cases/relation/or_test.rb +192 -0
  331. data/test/cases/relation/predicate_builder_test.rb +31 -0
  332. data/test/cases/relation/record_fetch_warning_test.rb +42 -0
  333. data/test/cases/relation/select_test.rb +67 -0
  334. data/test/cases/relation/update_all_test.rb +317 -0
  335. data/test/cases/relation/where_chain_test.rb +141 -0
  336. data/test/cases/relation/where_clause_test.rb +257 -0
  337. data/test/cases/relation/where_test.rb +429 -0
  338. data/test/cases/relation_test.rb +482 -0
  339. data/test/cases/relations_test.rb +2251 -0
  340. data/test/cases/reload_models_test.rb +26 -0
  341. data/test/cases/reserved_word_test.rb +141 -0
  342. data/test/cases/result_test.rb +141 -0
  343. data/test/cases/sanitize_test.rb +192 -0
  344. data/test/cases/schema_dumper_test.rb +550 -0
  345. data/test/cases/schema_loading_test.rb +53 -0
  346. data/test/cases/scoping/default_scoping_test.rb +569 -0
  347. data/test/cases/scoping/named_scoping_test.rb +649 -0
  348. data/test/cases/scoping/relation_scoping_test.rb +522 -0
  349. data/test/cases/secure_token_test.rb +47 -0
  350. data/test/cases/serialization_test.rb +106 -0
  351. data/test/cases/serialized_attribute_test.rb +455 -0
  352. data/test/cases/signed_id_test.rb +168 -0
  353. data/test/cases/statement_cache_test.rb +153 -0
  354. data/test/cases/statement_invalid_test.rb +42 -0
  355. data/test/cases/store_test.rb +320 -0
  356. data/test/cases/strict_loading_test.rb +473 -0
  357. data/test/cases/suppressor_test.rb +77 -0
  358. data/test/cases/tasks/database_tasks_test.rb +1526 -0
  359. data/test/cases/tasks/mysql_rake_test.rb +417 -0
  360. data/test/cases/tasks/postgresql_rake_test.rb +534 -0
  361. data/test/cases/tasks/sqlite_rake_test.rb +267 -0
  362. data/test/cases/test_case.rb +142 -0
  363. data/test/cases/test_databases_test.rb +79 -0
  364. data/test/cases/test_fixtures_test.rb +96 -0
  365. data/test/cases/time_precision_test.rb +125 -0
  366. data/test/cases/timestamp_test.rb +504 -0
  367. data/test/cases/touch_later_test.rb +123 -0
  368. data/test/cases/transaction_callbacks_test.rb +772 -0
  369. data/test/cases/transaction_isolation_test.rb +106 -0
  370. data/test/cases/transactions_test.rb +1285 -0
  371. data/test/cases/type/adapter_specific_registry_test.rb +145 -0
  372. data/test/cases/type/date_time_test.rb +16 -0
  373. data/test/cases/type/integer_test.rb +29 -0
  374. data/test/cases/type/string_test.rb +24 -0
  375. data/test/cases/type/time_test.rb +28 -0
  376. data/test/cases/type/type_map_test.rb +178 -0
  377. data/test/cases/type/unsigned_integer_test.rb +19 -0
  378. data/test/cases/type_test.rb +41 -0
  379. data/test/cases/types_test.rb +26 -0
  380. data/test/cases/unconnected_test.rb +46 -0
  381. data/test/cases/unsafe_raw_sql_test.rb +274 -0
  382. data/test/cases/validations/absence_validation_test.rb +75 -0
  383. data/test/cases/validations/association_validation_test.rb +99 -0
  384. data/test/cases/validations/i18n_generate_message_validation_test.rb +102 -0
  385. data/test/cases/validations/i18n_validation_test.rb +87 -0
  386. data/test/cases/validations/length_validation_test.rb +80 -0
  387. data/test/cases/validations/numericality_validation_test.rb +181 -0
  388. data/test/cases/validations/presence_validation_test.rb +105 -0
  389. data/test/cases/validations/uniqueness_validation_test.rb +618 -0
  390. data/test/cases/validations_repair_helper.rb +21 -0
  391. data/test/cases/validations_test.rb +229 -0
  392. data/test/cases/view_test.rb +222 -0
  393. data/test/cases/yaml_serialization_test.rb +166 -0
  394. data/test/config.example.yml +97 -0
  395. data/test/config.rb +7 -0
  396. data/test/config.yml +220 -0
  397. data/test/connections/native_ibm_db/connection.rb +44 -0
  398. data/test/fixtures/accounts.yml +29 -0
  399. data/test/fixtures/admin/accounts.yml +2 -0
  400. data/test/fixtures/admin/randomly_named_a9.yml +7 -0
  401. data/test/fixtures/admin/randomly_named_b0.yml +7 -0
  402. data/test/fixtures/admin/users.yml +10 -0
  403. data/test/fixtures/all/admin +1 -0
  404. data/test/fixtures/all/developers.yml +0 -0
  405. data/test/fixtures/all/namespaced/accounts.yml +2 -0
  406. data/test/fixtures/all/people.yml +0 -0
  407. data/test/fixtures/all/tasks.yml +0 -0
  408. data/test/fixtures/author_addresses.yml +11 -0
  409. data/test/fixtures/author_favorites.yml +4 -0
  410. data/test/fixtures/authors.yml +17 -0
  411. data/test/fixtures/bad_posts.yml +9 -0
  412. data/test/fixtures/binaries.yml +137 -0
  413. data/test/fixtures/books.yml +38 -0
  414. data/test/fixtures/bulbs.yml +5 -0
  415. data/test/fixtures/cars.yml +9 -0
  416. data/test/fixtures/categories/special_categories.yml +9 -0
  417. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
  418. data/test/fixtures/categories.yml +19 -0
  419. data/test/fixtures/categories_ordered.yml +7 -0
  420. data/test/fixtures/categories_posts.yml +34 -0
  421. data/test/fixtures/categorizations.yml +23 -0
  422. data/test/fixtures/citations.yml +5 -0
  423. data/test/fixtures/clubs.yml +8 -0
  424. data/test/fixtures/collections.yml +3 -0
  425. data/test/fixtures/colleges.yml +3 -0
  426. data/test/fixtures/comments.yml +72 -0
  427. data/test/fixtures/companies.yml +72 -0
  428. data/test/fixtures/computers.yml +12 -0
  429. data/test/fixtures/content.yml +3 -0
  430. data/test/fixtures/content_positions.yml +3 -0
  431. data/test/fixtures/courses.yml +8 -0
  432. data/test/fixtures/customers.yml +35 -0
  433. data/test/fixtures/dashboards.yml +6 -0
  434. data/test/fixtures/dead_parrots.yml +5 -0
  435. data/test/fixtures/developers.yml +22 -0
  436. data/test/fixtures/developers_projects.yml +17 -0
  437. data/test/fixtures/dog_lovers.yml +7 -0
  438. data/test/fixtures/dogs.yml +4 -0
  439. data/test/fixtures/doubloons.yml +3 -0
  440. data/test/fixtures/edges.yml +5 -0
  441. data/test/fixtures/entrants.yml +14 -0
  442. data/test/fixtures/essays.yml +16 -0
  443. data/test/fixtures/faces.yml +11 -0
  444. data/test/fixtures/fk_test_has_fk.yml +3 -0
  445. data/test/fixtures/fk_test_has_pk.yml +2 -0
  446. data/test/fixtures/friendships.yml +4 -0
  447. data/test/fixtures/funny_jokes.yml +10 -0
  448. data/test/fixtures/humans.yml +5 -0
  449. data/test/fixtures/interests.yml +33 -0
  450. data/test/fixtures/items.yml +3 -0
  451. data/test/fixtures/jobs.yml +7 -0
  452. data/test/fixtures/legacy_things.yml +3 -0
  453. data/test/fixtures/live_parrots.yml +4 -0
  454. data/test/fixtures/mateys.yml +4 -0
  455. data/test/fixtures/member_details.yml +8 -0
  456. data/test/fixtures/member_types.yml +6 -0
  457. data/test/fixtures/members.yml +11 -0
  458. data/test/fixtures/memberships.yml +41 -0
  459. data/test/fixtures/men.yml +5 -0
  460. data/test/fixtures/minimalistics.yml +5 -0
  461. data/test/fixtures/minivans.yml +5 -0
  462. data/test/fixtures/mixed_case_monkeys.yml +6 -0
  463. data/test/fixtures/mixins.yml +29 -0
  464. data/test/fixtures/movies.yml +7 -0
  465. data/test/fixtures/naked/yml/accounts.yml +1 -0
  466. data/test/fixtures/naked/yml/companies.yml +1 -0
  467. data/test/fixtures/naked/yml/courses.yml +1 -0
  468. data/test/fixtures/naked/yml/courses_with_invalid_key.yml +3 -0
  469. data/test/fixtures/naked/yml/parrots.yml +3 -0
  470. data/test/fixtures/naked/yml/trees.yml +3 -0
  471. data/test/fixtures/nodes.yml +29 -0
  472. data/test/fixtures/organizations.yml +5 -0
  473. data/test/fixtures/other_books.yml +26 -0
  474. data/test/fixtures/other_comments.yml +6 -0
  475. data/test/fixtures/other_dogs.yml +2 -0
  476. data/test/fixtures/other_posts.yml +8 -0
  477. data/test/fixtures/other_topics.yml +42 -0
  478. data/test/fixtures/owners.yml +9 -0
  479. data/test/fixtures/parrots.yml +33 -0
  480. data/test/fixtures/parrots_pirates.yml +7 -0
  481. data/test/fixtures/people.yml +24 -0
  482. data/test/fixtures/peoples_treasures.yml +3 -0
  483. data/test/fixtures/pets.yml +19 -0
  484. data/test/fixtures/pirates.yml +15 -0
  485. data/test/fixtures/posts.yml +88 -0
  486. data/test/fixtures/price_estimates.yml +16 -0
  487. data/test/fixtures/products.yml +4 -0
  488. data/test/fixtures/projects.yml +7 -0
  489. data/test/fixtures/randomly_named_a9.yml +7 -0
  490. data/test/fixtures/ratings.yml +14 -0
  491. data/test/fixtures/readers.yml +17 -0
  492. data/test/fixtures/references.yml +17 -0
  493. data/test/fixtures/reserved_words/distinct.yml +5 -0
  494. data/test/fixtures/reserved_words/distinct_select.yml +11 -0
  495. data/test/fixtures/reserved_words/group.yml +14 -0
  496. data/test/fixtures/reserved_words/select.yml +8 -0
  497. data/test/fixtures/reserved_words/values.yml +7 -0
  498. data/test/fixtures/ships.yml +6 -0
  499. data/test/fixtures/speedometers.yml +8 -0
  500. data/test/fixtures/sponsors.yml +15 -0
  501. data/test/fixtures/strict_zines.yml +2 -0
  502. data/test/fixtures/string_key_objects.yml +7 -0
  503. data/test/fixtures/subscribers.yml +11 -0
  504. data/test/fixtures/subscriptions.yml +12 -0
  505. data/test/fixtures/taggings.yml +78 -0
  506. data/test/fixtures/tags.yml +11 -0
  507. data/test/fixtures/tasks.yml +7 -0
  508. data/test/fixtures/teapots.yml +3 -0
  509. data/test/fixtures/to_be_linked/accounts.yml +2 -0
  510. data/test/fixtures/to_be_linked/users.yml +10 -0
  511. data/test/fixtures/topics.yml +49 -0
  512. data/test/fixtures/toys.yml +14 -0
  513. data/test/fixtures/traffic_lights.yml +10 -0
  514. data/test/fixtures/treasures.yml +10 -0
  515. data/test/fixtures/trees.yml +3 -0
  516. data/test/fixtures/uuid_children.yml +3 -0
  517. data/test/fixtures/uuid_parents.yml +2 -0
  518. data/test/fixtures/variants.yml +4 -0
  519. data/test/fixtures/vegetables.yml +20 -0
  520. data/test/fixtures/vertices.yml +4 -0
  521. data/test/fixtures/warehouse-things.yml +3 -0
  522. data/test/fixtures/warehouse_things.yml +3 -0
  523. data/test/fixtures/zines.yml +5 -0
  524. data/test/ibm_db_test.rb +25 -0
  525. data/test/migrations/10_urban/9_add_expressions.rb +13 -0
  526. data/test/migrations/decimal/1_give_me_big_numbers.rb +17 -0
  527. data/test/migrations/magic/1_currencies_have_symbols.rb +13 -0
  528. data/test/migrations/missing/1000_people_have_middle_names.rb +11 -0
  529. data/test/migrations/missing/1_people_have_last_names.rb +11 -0
  530. data/test/migrations/missing/3_we_need_reminders.rb +14 -0
  531. data/test/migrations/missing/4_innocent_jointable.rb +14 -0
  532. data/test/migrations/rename/1_we_need_things.rb +13 -0
  533. data/test/migrations/rename/2_rename_things.rb +11 -0
  534. data/test/migrations/to_copy/1_people_have_hobbies.rb +11 -0
  535. data/test/migrations/to_copy/2_people_have_descriptions.rb +11 -0
  536. data/test/migrations/to_copy2/1_create_articles.rb +9 -0
  537. data/test/migrations/to_copy2/2_create_comments.rb +9 -0
  538. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +11 -0
  539. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +11 -0
  540. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +11 -0
  541. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +9 -0
  542. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +9 -0
  543. data/test/migrations/valid/1_valid_people_have_last_names.rb +11 -0
  544. data/test/migrations/valid/2_we_need_reminders.rb +14 -0
  545. data/test/migrations/valid/3_innocent_jointable.rb +14 -0
  546. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +11 -0
  547. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +14 -0
  548. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +14 -0
  549. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +11 -0
  550. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +14 -0
  551. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +14 -0
  552. data/test/migrations/version_check/20131219224947_migration_version_check.rb +10 -0
  553. data/test/models/account.rb +46 -0
  554. data/test/models/admin/account.rb +5 -0
  555. data/test/models/admin/randomly_named_c1.rb +9 -0
  556. data/test/models/admin/user.rb +48 -0
  557. data/test/models/admin.rb +7 -0
  558. data/test/models/aircraft.rb +7 -0
  559. data/test/models/arunit2_model.rb +5 -0
  560. data/test/models/author.rb +260 -0
  561. data/test/models/auto_id.rb +6 -0
  562. data/test/models/autoloadable/extra_firm.rb +4 -0
  563. data/test/models/binary.rb +4 -0
  564. data/test/models/binary_field.rb +6 -0
  565. data/test/models/bird.rb +24 -0
  566. data/test/models/book.rb +33 -0
  567. data/test/models/book_destroy_async.rb +24 -0
  568. data/test/models/boolean.rb +7 -0
  569. data/test/models/bulb.rb +61 -0
  570. data/test/models/cake_designer.rb +5 -0
  571. data/test/models/car.rb +36 -0
  572. data/test/models/carrier.rb +4 -0
  573. data/test/models/cart.rb +5 -0
  574. data/test/models/cat.rb +12 -0
  575. data/test/models/categorization.rb +21 -0
  576. data/test/models/category.rb +47 -0
  577. data/test/models/chef.rb +10 -0
  578. data/test/models/citation.rb +7 -0
  579. data/test/models/club.rb +28 -0
  580. data/test/models/college.rb +12 -0
  581. data/test/models/column.rb +5 -0
  582. data/test/models/column_name.rb +5 -0
  583. data/test/models/comment.rb +98 -0
  584. data/test/models/company.rb +226 -0
  585. data/test/models/company_in_module.rb +99 -0
  586. data/test/models/computer.rb +5 -0
  587. data/test/models/contact.rb +43 -0
  588. data/test/models/content.rb +42 -0
  589. data/test/models/contract.rb +38 -0
  590. data/test/models/country.rb +5 -0
  591. data/test/models/course.rb +8 -0
  592. data/test/models/customer.rb +85 -0
  593. data/test/models/customer_carrier.rb +16 -0
  594. data/test/models/dashboard.rb +5 -0
  595. data/test/models/default.rb +4 -0
  596. data/test/models/department.rb +6 -0
  597. data/test/models/destroy_async_parent.rb +15 -0
  598. data/test/models/destroy_async_parent_soft_delete.rb +20 -0
  599. data/test/models/developer.rb +341 -0
  600. data/test/models/dl_keyed_belongs_to.rb +13 -0
  601. data/test/models/dl_keyed_belongs_to_soft_delete.rb +19 -0
  602. data/test/models/dl_keyed_has_many.rb +5 -0
  603. data/test/models/dl_keyed_has_many_through.rb +5 -0
  604. data/test/models/dl_keyed_has_one.rb +5 -0
  605. data/test/models/dl_keyed_join.rb +10 -0
  606. data/test/models/dog.rb +7 -0
  607. data/test/models/dog_lover.rb +7 -0
  608. data/test/models/doubloon.rb +14 -0
  609. data/test/models/drink_designer.rb +20 -0
  610. data/test/models/edge.rb +7 -0
  611. data/test/models/electron.rb +7 -0
  612. data/test/models/engine.rb +5 -0
  613. data/test/models/entrant.rb +5 -0
  614. data/test/models/entry.rb +5 -0
  615. data/test/models/essay.rb +8 -0
  616. data/test/models/essay_destroy_async.rb +12 -0
  617. data/test/models/event.rb +5 -0
  618. data/test/models/eye.rb +39 -0
  619. data/test/models/face.rb +17 -0
  620. data/test/models/family.rb +6 -0
  621. data/test/models/family_tree.rb +6 -0
  622. data/test/models/friendship.rb +8 -0
  623. data/test/models/frog.rb +8 -0
  624. data/test/models/guid.rb +4 -0
  625. data/test/models/guitar.rb +6 -0
  626. data/test/models/hotel.rb +13 -0
  627. data/test/models/human.rb +39 -0
  628. data/test/models/image.rb +5 -0
  629. data/test/models/interest.rb +16 -0
  630. data/test/models/invoice.rb +6 -0
  631. data/test/models/item.rb +9 -0
  632. data/test/models/job.rb +9 -0
  633. data/test/models/joke.rb +9 -0
  634. data/test/models/keyboard.rb +5 -0
  635. data/test/models/legacy_thing.rb +5 -0
  636. data/test/models/lesson.rb +13 -0
  637. data/test/models/line_item.rb +5 -0
  638. data/test/models/liquid.rb +6 -0
  639. data/test/models/man.rb +11 -0
  640. data/test/models/matey.rb +6 -0
  641. data/test/models/measurement.rb +4 -0
  642. data/test/models/member.rb +45 -0
  643. data/test/models/member_detail.rb +11 -0
  644. data/test/models/member_type.rb +5 -0
  645. data/test/models/membership.rb +38 -0
  646. data/test/models/mentor.rb +5 -0
  647. data/test/models/message.rb +5 -0
  648. data/test/models/minimalistic.rb +4 -0
  649. data/test/models/minivan.rb +10 -0
  650. data/test/models/mixed_case_monkey.rb +5 -0
  651. data/test/models/mocktail_designer.rb +2 -0
  652. data/test/models/molecule.rb +8 -0
  653. data/test/models/mouse.rb +6 -0
  654. data/test/models/movie.rb +7 -0
  655. data/test/models/node.rb +7 -0
  656. data/test/models/non_primary_key.rb +4 -0
  657. data/test/models/notification.rb +5 -0
  658. data/test/models/numeric_data.rb +12 -0
  659. data/test/models/order.rb +6 -0
  660. data/test/models/organization.rb +16 -0
  661. data/test/models/other_dog.rb +7 -0
  662. data/test/models/owner.rb +39 -0
  663. data/test/models/parrot.rb +36 -0
  664. data/test/models/person.rb +147 -0
  665. data/test/models/personal_legacy_thing.rb +6 -0
  666. data/test/models/pet.rb +20 -0
  667. data/test/models/pet_treasure.rb +8 -0
  668. data/test/models/pirate.rb +116 -0
  669. data/test/models/possession.rb +5 -0
  670. data/test/models/post.rb +371 -0
  671. data/test/models/price_estimate.rb +14 -0
  672. data/test/models/professor.rb +7 -0
  673. data/test/models/project.rb +42 -0
  674. data/test/models/publisher/article.rb +6 -0
  675. data/test/models/publisher/magazine.rb +5 -0
  676. data/test/models/publisher.rb +4 -0
  677. data/test/models/randomly_named_c1.rb +5 -0
  678. data/test/models/rating.rb +8 -0
  679. data/test/models/reader.rb +25 -0
  680. data/test/models/recipe.rb +5 -0
  681. data/test/models/record.rb +4 -0
  682. data/test/models/reference.rb +25 -0
  683. data/test/models/reply.rb +79 -0
  684. data/test/models/room.rb +6 -0
  685. data/test/models/section.rb +6 -0
  686. data/test/models/seminar.rb +6 -0
  687. data/test/models/session.rb +6 -0
  688. data/test/models/ship.rb +42 -0
  689. data/test/models/ship_part.rb +10 -0
  690. data/test/models/shop.rb +19 -0
  691. data/test/models/shop_account.rb +8 -0
  692. data/test/models/speedometer.rb +8 -0
  693. data/test/models/sponsor.rb +10 -0
  694. data/test/models/squeak.rb +6 -0
  695. data/test/models/strict_zine.rb +7 -0
  696. data/test/models/string_key_object.rb +5 -0
  697. data/test/models/student.rb +6 -0
  698. data/test/models/subject.rb +16 -0
  699. data/test/models/subscriber.rb +10 -0
  700. data/test/models/subscription.rb +8 -0
  701. data/test/models/tag.rb +16 -0
  702. data/test/models/tagging.rb +20 -0
  703. data/test/models/task.rb +7 -0
  704. data/test/models/topic.rb +153 -0
  705. data/test/models/toy.rb +10 -0
  706. data/test/models/traffic_light.rb +6 -0
  707. data/test/models/treasure.rb +16 -0
  708. data/test/models/treaty.rb +5 -0
  709. data/test/models/tree.rb +5 -0
  710. data/test/models/tuning_peg.rb +6 -0
  711. data/test/models/tyre.rb +13 -0
  712. data/test/models/user.rb +22 -0
  713. data/test/models/uuid_child.rb +5 -0
  714. data/test/models/uuid_item.rb +8 -0
  715. data/test/models/uuid_parent.rb +5 -0
  716. data/test/models/vegetables.rb +33 -0
  717. data/test/models/vehicle.rb +7 -0
  718. data/test/models/vertex.rb +11 -0
  719. data/test/models/warehouse_thing.rb +7 -0
  720. data/test/models/wheel.rb +5 -0
  721. data/test/models/without_table.rb +5 -0
  722. data/test/models/zine.rb +5 -0
  723. data/test/schema/i5/ibm_db_specific_schema.rb +137 -0
  724. data/test/schema/ids/ibm_db_specific_schema.rb +140 -0
  725. data/test/schema/luw/ibm_db_specific_schema.rb +137 -0
  726. data/test/schema/mysql2_specific_schema.rb +82 -0
  727. data/test/schema/oracle_specific_schema.rb +38 -0
  728. data/test/schema/postgresql_specific_schema.rb +125 -0
  729. data/test/schema/schema.rb +1237 -0
  730. data/test/schema/schema.rb.original +1057 -0
  731. data/test/schema/sqlite_specific_schema.rb +11 -0
  732. data/test/schema/zOS/ibm_db_specific_schema.rb +208 -0
  733. data/test/support/config.rb +43 -0
  734. data/test/support/connection.rb +29 -0
  735. data/test/support/connection_helper.rb +16 -0
  736. data/test/support/ddl_helper.rb +10 -0
  737. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic.dump +0 -0
  738. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic_associations.dump +0 -0
  739. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic.dump +0 -0
  740. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic_associations.dump +0 -0
  741. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic.dump +0 -0
  742. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic_associations.dump +0 -0
  743. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic.dump +0 -0
  744. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic_associations.dump +0 -0
  745. data/test/support/marshal_compatibility_fixtures/legacy_6_0_record_mysql.dump +0 -0
  746. data/test/support/marshal_compatibility_fixtures/legacy_relation.dump +0 -0
  747. data/test/support/schema_dumping_helper.rb +22 -0
  748. data/test/support/stubs/strong_parameters.rb +40 -0
  749. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  750. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  751. data/test/support/yaml_compatibility_fixtures/rails_v1_mysql.yml +206 -0
  752. data/test/support/yaml_compatibility_fixtures/rails_v2.yml +55 -0
  753. metadata +876 -0
@@ -0,0 +1,229 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "cases/helper"
4
+ require "models/topic"
5
+ require "models/reply"
6
+ require "models/developer"
7
+ require "models/computer"
8
+ require "models/parrot"
9
+ require "models/company"
10
+ require "models/price_estimate"
11
+
12
+ class ValidationsTest < ActiveRecord::TestCase
13
+ fixtures :topics, :developers
14
+
15
+ # Most of the tests mess with the validations of Topic, so lets repair it all the time.
16
+ # Other classes we mess with will be dealt with in the specific tests
17
+ repair_validations(Topic)
18
+
19
+ def test_valid_uses_create_context_when_new
20
+ r = WrongReply.new
21
+ r.title = "Wrong Create"
22
+ assert_not_predicate r, :valid?
23
+ assert r.errors[:title].any?, "A reply with a bad title should mark that attribute as invalid"
24
+ assert_equal ["is Wrong Create"], r.errors[:title], "A reply with a bad content should contain an error"
25
+ end
26
+
27
+ def test_valid_uses_update_context_when_persisted
28
+ r = WrongReply.new
29
+ r.title = "Bad"
30
+ r.content = "Good"
31
+ assert r.save, "First validation should be successful"
32
+
33
+ r.title = "Wrong Update"
34
+ assert_not r.valid?, "Second validation should fail"
35
+
36
+ assert r.errors[:title].any?, "A reply with a bad title should mark that attribute as invalid"
37
+ assert_equal ["is Wrong Update"], r.errors[:title], "A reply with a bad content should contain an error"
38
+ end
39
+
40
+ def test_valid_using_special_context
41
+ r = WrongReply.new(title: "Valid title")
42
+ assert_not r.valid?(:special_case)
43
+ assert_equal "Invalid", r.errors[:author_name].join
44
+
45
+ r.author_name = "secret"
46
+ r.content = "Good"
47
+ assert r.valid?(:special_case)
48
+
49
+ r.author_name = nil
50
+ assert_not r.valid?(:special_case)
51
+ assert_equal "Invalid", r.errors[:author_name].join
52
+
53
+ r.author_name = "secret"
54
+ assert r.valid?(:special_case)
55
+ end
56
+
57
+ def test_invalid_using_multiple_contexts
58
+ r = WrongReply.new(title: "Wrong Create")
59
+ assert r.invalid?([:special_case, :create])
60
+ assert_equal "Invalid", r.errors[:author_name].join
61
+ assert_equal "is Wrong Create", r.errors[:title].join
62
+ end
63
+
64
+ def test_validate
65
+ r = WrongReply.new
66
+
67
+ r.validate
68
+ assert_empty r.errors[:author_name]
69
+
70
+ r.validate(:special_case)
71
+ assert_not_empty r.errors[:author_name]
72
+
73
+ r.author_name = "secret"
74
+
75
+ r.validate(:special_case)
76
+ assert_empty r.errors[:author_name]
77
+ end
78
+
79
+ def test_invalid_record_exception
80
+ assert_raise(ActiveRecord::RecordInvalid) { WrongReply.create! }
81
+ assert_raise(ActiveRecord::RecordInvalid) { WrongReply.new.save! }
82
+
83
+ r = WrongReply.new
84
+ invalid = assert_raise ActiveRecord::RecordInvalid do
85
+ r.save!
86
+ end
87
+ assert_equal r, invalid.record
88
+ end
89
+
90
+ def test_validate_with_bang
91
+ assert_raise(ActiveRecord::RecordInvalid) do
92
+ WrongReply.new.validate!
93
+ end
94
+ end
95
+
96
+ def test_validate_with_bang_and_context
97
+ assert_raise(ActiveRecord::RecordInvalid) do
98
+ WrongReply.new.validate!(:special_case)
99
+ end
100
+ r = WrongReply.new(title: "Valid title", author_name: "secret", content: "Good")
101
+ assert r.validate!(:special_case)
102
+ end
103
+
104
+ def test_exception_on_create_bang_many
105
+ assert_raise(ActiveRecord::RecordInvalid) do
106
+ WrongReply.create!([ { "title" => "OK" }, { "title" => "Wrong Create" }])
107
+ end
108
+ end
109
+
110
+ def test_exception_on_create_bang_with_block
111
+ assert_raise(ActiveRecord::RecordInvalid) do
112
+ WrongReply.create!("title" => "OK") do |r|
113
+ r.content = nil
114
+ end
115
+ end
116
+ end
117
+
118
+ def test_exception_on_create_bang_many_with_block
119
+ assert_raise(ActiveRecord::RecordInvalid) do
120
+ WrongReply.create!([{ "title" => "OK" }, { "title" => "Wrong Create" }]) do |r|
121
+ r.content = nil
122
+ end
123
+ end
124
+ end
125
+
126
+ def test_save_without_validation
127
+ reply = WrongReply.new
128
+ assert_not reply.save
129
+ assert reply.save(validate: false)
130
+ end
131
+
132
+ def test_validates_acceptance_of_with_non_existent_table
133
+ Object.const_set :IncorporealModel, Class.new(ActiveRecord::Base)
134
+
135
+ assert_nothing_raised do
136
+ IncorporealModel.validates_acceptance_of(:incorporeal_column)
137
+ end
138
+ end
139
+
140
+ def test_throw_away_typing
141
+ d = Developer.new("name" => "David", "salary" => "100,000")
142
+ assert_not_predicate d, :valid?
143
+ assert_equal 100, d.salary
144
+ assert_equal "100,000", d.salary_before_type_cast
145
+ end
146
+
147
+ def test_validates_acceptance_of_with_undefined_attribute_methods
148
+ klass = Class.new(Topic)
149
+ klass.validates_acceptance_of(:approved)
150
+ topic = klass.new(approved: true)
151
+ klass.undefine_attribute_methods
152
+ assert topic.approved
153
+ end
154
+
155
+ def test_validates_acceptance_of_as_database_column
156
+ klass = Class.new(Topic)
157
+ klass.validates_acceptance_of(:approved)
158
+ topic = klass.create("approved" => true)
159
+ assert topic["approved"]
160
+ end
161
+
162
+ def test_validators
163
+ assert_equal 1, Parrot.validators.size
164
+ assert_equal 1, Company.validators.size
165
+ assert_equal 1, Parrot.validators_on(:name).size
166
+ assert_equal 1, Company.validators_on(:name).size
167
+ end
168
+
169
+ def test_numericality_validation_with_mutation
170
+ klass = Class.new(Topic) do
171
+ attribute :wibble, :string
172
+ validates_numericality_of :wibble, only_integer: true
173
+ end
174
+
175
+ topic = klass.new(wibble: "123-4567")
176
+ topic.wibble.gsub!("-", "")
177
+
178
+ assert_predicate topic, :valid?
179
+ end
180
+
181
+ def test_numericality_validation_checks_against_raw_value
182
+ klass = Class.new(Topic) do
183
+ def self.model_name
184
+ ActiveModel::Name.new(self, nil, "Topic")
185
+ end
186
+ attribute :wibble, :decimal, scale: 2, precision: 9
187
+ validates_numericality_of :wibble, greater_than_or_equal_to: BigDecimal("97.18")
188
+ end
189
+
190
+ ["97.179", 97.179, BigDecimal("97.179")].each do |raw_value|
191
+ subject = klass.new(wibble: raw_value)
192
+ assert_equal BigDecimal("97.18"), subject.wibble
193
+ assert_predicate subject, :valid?
194
+ end
195
+
196
+ ["97.174", 97.174, BigDecimal("97.174")].each do |raw_value|
197
+ subject = klass.new(wibble: raw_value)
198
+ assert_equal BigDecimal("97.17"), subject.wibble
199
+ assert_not_predicate subject, :valid?
200
+ end
201
+ end
202
+
203
+ def test_numericality_validator_wont_be_affected_by_custom_getter
204
+ price_estimate = PriceEstimate.new(price: 50)
205
+
206
+ assert_equal "$50.00", price_estimate.price
207
+ assert_equal 50, price_estimate.price_before_type_cast
208
+ assert_equal 50, price_estimate.read_attribute(:price)
209
+
210
+ assert_predicate price_estimate, :price_came_from_user?
211
+ assert_predicate price_estimate, :valid?
212
+
213
+ price_estimate.save!
214
+
215
+ assert_not_predicate price_estimate, :price_came_from_user?
216
+ assert_predicate price_estimate, :valid?
217
+ end
218
+
219
+ def test_acceptance_validator_doesnt_require_db_connection
220
+ klass = Class.new(ActiveRecord::Base) do
221
+ self.table_name = "posts"
222
+ end
223
+ klass.reset_column_information
224
+
225
+ assert_no_queries do
226
+ klass.validates_acceptance_of(:foo)
227
+ end
228
+ end
229
+ end
@@ -0,0 +1,222 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "cases/helper"
4
+ require "models/book"
5
+ require "support/schema_dumping_helper"
6
+
7
+ module ViewBehavior
8
+ include SchemaDumpingHelper
9
+ extend ActiveSupport::Concern
10
+
11
+ included do
12
+ fixtures :books
13
+ end
14
+
15
+ class Ebook < ActiveRecord::Base
16
+ self.table_name = "ebooks"
17
+ self.primary_key = "id"
18
+ end
19
+
20
+ def setup
21
+ super
22
+ @connection = ActiveRecord::Base.connection
23
+ create_view "ebooks", <<~SQL
24
+ SELECT id, name, status FROM books WHERE format = 'ebook'
25
+ SQL
26
+ end
27
+
28
+ def teardown
29
+ super
30
+ drop_view "ebooks"
31
+ end
32
+
33
+ def test_reading
34
+ books = Ebook.all
35
+ assert_equal [books(:rfr).id], books.map(&:id)
36
+ assert_equal ["Ruby for Rails"], books.map(&:name)
37
+ end
38
+
39
+ def test_views
40
+ assert_equal [Ebook.table_name], @connection.views
41
+ end
42
+
43
+ def test_view_exists
44
+ view_name = Ebook.table_name
45
+ assert @connection.view_exists?(view_name), "'#{view_name}' view should exist"
46
+ end
47
+
48
+ def test_table_exists
49
+ view_name = Ebook.table_name
50
+ assert_not @connection.table_exists?(view_name), "'#{view_name}' table should not exist"
51
+ end
52
+
53
+ def test_views_ara_valid_data_sources
54
+ view_name = Ebook.table_name
55
+ assert @connection.data_source_exists?(view_name), "'#{view_name}' should be a data source"
56
+ end
57
+
58
+ def test_column_definitions
59
+ assert_equal([["id", :integer],
60
+ ["name", :string],
61
+ ["status", :integer]], Ebook.columns.map { |c| [c.name, c.type] })
62
+ end
63
+
64
+ def test_attributes
65
+ assert_equal({ "id" => 2, "name" => "Ruby for Rails", "status" => 0 },
66
+ Ebook.first.attributes)
67
+ end
68
+
69
+ def test_does_not_assume_id_column_as_primary_key
70
+ model = Class.new(ActiveRecord::Base) do
71
+ self.table_name = "ebooks"
72
+ end
73
+ assert_nil model.primary_key
74
+ end
75
+
76
+ def test_does_not_dump_view_as_table
77
+ schema = dump_table_schema "ebooks"
78
+ assert_no_match %r{create_table "ebooks"}, schema
79
+ end
80
+
81
+ private
82
+ def quote_table_name(name)
83
+ @connection.quote_table_name(name)
84
+ end
85
+ end
86
+
87
+ if ActiveRecord::Base.connection.supports_views?
88
+ class ViewWithPrimaryKeyTest < ActiveRecord::TestCase
89
+ include ViewBehavior
90
+
91
+ private
92
+ def create_view(name, query)
93
+ @connection.execute "CREATE VIEW #{quote_table_name(name)} AS #{query}"
94
+ end
95
+
96
+ def drop_view(name)
97
+ @connection.execute "DROP VIEW #{quote_table_name(name)}" if @connection.view_exists? name
98
+ end
99
+ end
100
+
101
+ class ViewWithoutPrimaryKeyTest < ActiveRecord::TestCase
102
+ include SchemaDumpingHelper
103
+ fixtures :books
104
+
105
+ class Paperback < ActiveRecord::Base; end
106
+
107
+ setup do
108
+ @connection = ActiveRecord::Base.connection
109
+ @connection.execute <<~SQL
110
+ CREATE VIEW paperbacks
111
+ AS SELECT name, status FROM books WHERE format = 'paperback'
112
+ SQL
113
+ end
114
+
115
+ teardown do
116
+ @connection.execute "DROP VIEW paperbacks" if @connection.view_exists? "paperbacks"
117
+ end
118
+
119
+ def test_reading
120
+ books = Paperback.all
121
+ assert_equal ["Agile Web Development with Rails"], books.map(&:name)
122
+ end
123
+
124
+ def test_views
125
+ assert_equal [Paperback.table_name], @connection.views
126
+ end
127
+
128
+ def test_view_exists
129
+ view_name = Paperback.table_name
130
+ assert @connection.view_exists?(view_name), "'#{view_name}' view should exist"
131
+ end
132
+
133
+ def test_table_exists
134
+ view_name = Paperback.table_name
135
+ assert_not @connection.table_exists?(view_name), "'#{view_name}' table should not exist"
136
+ end
137
+
138
+ def test_column_definitions
139
+ assert_equal([["name", :string],
140
+ ["status", :integer]], Paperback.columns.map { |c| [c.name, c.type] })
141
+ end
142
+
143
+ def test_attributes
144
+ assert_equal({ "name" => "Agile Web Development with Rails", "status" => 2 },
145
+ Paperback.first.attributes)
146
+ end
147
+
148
+ def test_does_not_have_a_primary_key
149
+ assert_nil Paperback.primary_key
150
+ end
151
+
152
+ def test_does_not_dump_view_as_table
153
+ schema = dump_table_schema "paperbacks"
154
+ assert_no_match %r{create_table "paperbacks"}, schema
155
+ end
156
+ end
157
+
158
+ # sqlite dose not support CREATE, INSERT, and DELETE for VIEW
159
+ if current_adapter?(:Mysql2Adapter, :SQLServerAdapter, :PostgreSQLAdapter, :IBM_DBAdapter)
160
+
161
+ class UpdateableViewTest < ActiveRecord::TestCase
162
+ self.use_transactional_tests = false
163
+ fixtures :books
164
+
165
+ class PrintedBook < ActiveRecord::Base
166
+ self.primary_key = "id"
167
+ end
168
+
169
+ setup do
170
+ @connection = ActiveRecord::Base.connection
171
+ @connection.execute <<~SQL
172
+ CREATE VIEW printed_books
173
+ AS SELECT id, name, status, format FROM books WHERE format = 'paperback'
174
+ SQL
175
+ end
176
+
177
+ teardown do
178
+ @connection.execute "DROP VIEW printed_books" if @connection.view_exists? "printed_books"
179
+ end
180
+
181
+ def test_update_record
182
+ book = PrintedBook.first
183
+ book.name = "AWDwR"
184
+ book.save!
185
+ book.reload
186
+ assert_equal "AWDwR", book.name
187
+ end
188
+
189
+ def test_insert_record
190
+ PrintedBook.create! name: "Rails in Action", status: 0, format: "paperback"
191
+
192
+ new_book = PrintedBook.last
193
+ assert_equal "Rails in Action", new_book.name
194
+ end
195
+
196
+ def test_update_record_to_fail_view_conditions
197
+ book = PrintedBook.first
198
+ book.format = "ebook"
199
+ book.save!
200
+
201
+ assert_raises ActiveRecord::RecordNotFound do
202
+ book.reload
203
+ end
204
+ end
205
+ end
206
+ end # end of `if current_adapter?(:Mysql2Adapter, :PostgreSQLAdapter, :SQLServerAdapter)`
207
+ end # end of `if ActiveRecord::Base.connection.supports_views?`
208
+
209
+ if ActiveRecord::Base.connection.supports_materialized_views?
210
+ class MaterializedViewTest < ActiveRecord::PostgreSQLTestCase
211
+ include ViewBehavior
212
+
213
+ private
214
+ def create_view(name, query)
215
+ @connection.execute "CREATE MATERIALIZED VIEW #{quote_table_name(name)} AS #{query}"
216
+ end
217
+
218
+ def drop_view(name)
219
+ @connection.execute "DROP MATERIALIZED VIEW #{quote_table_name(name)}" if @connection.view_exists? name
220
+ end
221
+ end
222
+ end
@@ -0,0 +1,166 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "cases/helper"
4
+ require "models/topic"
5
+ require "models/reply"
6
+ require "models/post"
7
+ require "models/author"
8
+
9
+ class YamlSerializationTest < ActiveRecord::TestCase
10
+ fixtures :topics, :authors, :author_addresses, :posts
11
+
12
+ def test_to_yaml_with_time_with_zone_should_not_raise_exception
13
+ with_timezone_config aware_attributes: true, zone: "Pacific Time (US & Canada)" do
14
+ topic = Topic.new(written_on: DateTime.now)
15
+ assert_nothing_raised { topic.to_yaml }
16
+ end
17
+ end
18
+
19
+ def test_roundtrip
20
+ topic = Topic.first
21
+ assert topic
22
+ t = yaml_load YAML.dump topic
23
+ assert_equal topic, t
24
+ end
25
+
26
+ def test_roundtrip_serialized_column
27
+ topic = Topic.new(content: { omg: :lol })
28
+ assert_equal({ omg: :lol }, yaml_load(YAML.dump(topic)).content)
29
+ end
30
+
31
+ def test_psych_roundtrip
32
+ topic = Topic.first
33
+ assert topic
34
+ t = yaml_load Psych.dump topic
35
+ assert_equal topic, t
36
+ end
37
+
38
+ def test_psych_roundtrip_new_object
39
+ topic = Topic.new
40
+ assert topic
41
+ t = yaml_load Psych.dump topic
42
+ assert_equal topic.attributes, t.attributes
43
+ end
44
+
45
+ def test_active_record_relation_serialization
46
+ [Topic.all].to_yaml
47
+ end
48
+
49
+ def test_raw_types_are_not_changed_on_round_trip
50
+ topic = Topic.new(parent_id: "123")
51
+ assert_equal "123", topic.parent_id_before_type_cast
52
+ assert_equal "123", yaml_load(YAML.dump(topic)).parent_id_before_type_cast
53
+ end
54
+
55
+ def test_cast_types_are_not_changed_on_round_trip
56
+ topic = Topic.new(parent_id: "123")
57
+ assert_equal 123, topic.parent_id
58
+ assert_equal 123, yaml_load(YAML.dump(topic)).parent_id
59
+ end
60
+
61
+ def test_new_records_remain_new_after_round_trip
62
+ topic = Topic.new
63
+
64
+ assert topic.new_record?, "Sanity check that new records are new"
65
+ assert yaml_load(YAML.dump(topic)).new_record?, "Record should be new after deserialization"
66
+
67
+ topic.save!
68
+
69
+ assert_not topic.new_record?, "Saved records are not new"
70
+ assert_not yaml_load(YAML.dump(topic)).new_record?, "Saved record should not be new after deserialization"
71
+
72
+ topic = Topic.select("title").last
73
+
74
+ assert_not topic.new_record?, "Loaded records without ID are not new"
75
+ assert_not yaml_load(YAML.dump(topic)).new_record?, "Record should not be new after deserialization"
76
+ end
77
+
78
+ def test_types_of_virtual_columns_are_not_changed_on_round_trip
79
+ author = Author.select("authors.*, count(posts.id) as posts_count")
80
+ .joins(:posts)
81
+ .group("authors.id", "authors.name", "authors.author_address_id", "authors.author_address_extra_id", "authors.organization_id", "authors.owned_essay_id")
82
+ .first
83
+ dumped = yaml_load(YAML.dump(author))
84
+
85
+ assert_equal 5, author.posts_count
86
+ assert_equal 5, dumped.posts_count
87
+ end
88
+
89
+ def test_a_yaml_version_is_provided_for_future_backwards_compat
90
+ coder = {}
91
+ Topic.first.encode_with(coder)
92
+
93
+ assert coder["active_record_yaml_version"]
94
+ end
95
+
96
+ def test_deserializing_rails_v2_yaml
97
+ topic = yaml_load(yaml_fixture("rails_v2"))
98
+
99
+ assert_not_predicate topic, :new_record?
100
+ assert_equal 1, topic.id
101
+ assert_equal "The First Topic", topic.title
102
+ assert_equal "Have a nice day", topic.content
103
+ end
104
+
105
+ def test_deserializing_rails_v1_mysql_yaml
106
+ topic = yaml_load(yaml_fixture("rails_v1_mysql"))
107
+
108
+ assert_not_predicate topic, :new_record?
109
+ assert_equal 1, topic.id
110
+ assert_equal "The First Topic", topic.title
111
+ assert_equal "Have a nice day", topic.content
112
+ end
113
+
114
+ def test_deserializing_rails_41_yaml
115
+ topic = assert_deprecated do
116
+ yaml_load(yaml_fixture("rails_4_1"))
117
+ end
118
+
119
+ assert_predicate topic, :new_record?
120
+ assert_nil topic.id
121
+ assert_equal "The First Topic", topic.title
122
+ assert_equal({ omg: :lol }, topic.content)
123
+ end
124
+
125
+ def test_deserializing_rails_4_2_0_yaml
126
+ topic = assert_deprecated do
127
+ yaml_load(yaml_fixture("rails_4_2_0"))
128
+ end
129
+
130
+ assert_not_predicate topic, :new_record?
131
+ assert_equal 1, topic.id
132
+ assert_equal "The First Topic", topic.title
133
+ assert_equal("Have a nice day", topic.content)
134
+ end
135
+
136
+ def test_yaml_encoding_keeps_mutations
137
+ author = Author.first
138
+ author.name = "Sean"
139
+ dumped = yaml_load(YAML.dump(author))
140
+
141
+ assert_equal "Sean", dumped.name
142
+ assert_equal author.name_was, dumped.name_was
143
+ assert_equal author.changes, dumped.changes
144
+ end
145
+
146
+ def test_yaml_encoding_keeps_false_values
147
+ topic = Topic.first
148
+ topic.approved = false
149
+ dumped = yaml_load(YAML.dump(topic))
150
+
151
+ assert_equal false, dumped.approved
152
+ end
153
+
154
+ private
155
+ def yaml_load(payload)
156
+ YAML.respond_to?(:unsafe_load) ? YAML.unsafe_load(payload) : YAML.load(payload)
157
+ end
158
+
159
+ def yaml_fixture(file_name)
160
+ path = File.expand_path(
161
+ "support/yaml_compatibility_fixtures/#{file_name}.yml",
162
+ TEST_ROOT
163
+ )
164
+ File.read(path)
165
+ end
166
+ end
@@ -0,0 +1,97 @@
1
+ default_connection: <%= defined?(JRUBY_VERSION) ? 'jdbcsqlite3' : 'sqlite3' %>
2
+
3
+ connections:
4
+ jdbcderby:
5
+ arunit: activerecord_unittest
6
+ arunit2: activerecord_unittest2
7
+
8
+ jdbch2:
9
+ arunit: activerecord_unittest
10
+ arunit2: activerecord_unittest2
11
+
12
+ jdbchsqldb:
13
+ arunit: activerecord_unittest
14
+ arunit2: activerecord_unittest2
15
+
16
+ jdbcmysql:
17
+ arunit:
18
+ username: rails
19
+ encoding: utf8
20
+ arunit2:
21
+ username: rails
22
+ encoding: utf8
23
+
24
+ jdbcpostgresql:
25
+ arunit:
26
+ username: <%= ENV['user'] || 'rails' %>
27
+ arunit2:
28
+ username: <%= ENV['user'] || 'rails' %>
29
+
30
+ jdbcsqlite3:
31
+ arunit:
32
+ database: <%= FIXTURES_ROOT %>/fixture_database.sqlite3
33
+ timeout: 5000
34
+ arunit2:
35
+ database: <%= FIXTURES_ROOT %>/fixture_database_2.sqlite3
36
+ timeout: 5000
37
+
38
+ mysql2:
39
+ arunit:
40
+ username: rails
41
+ encoding: utf8mb4
42
+ collation: utf8mb4_unicode_ci
43
+ <% if ENV['MYSQL_PREPARED_STATEMENTS'] %>
44
+ prepared_statements: true
45
+ <% end %>
46
+ <% if ENV['MYSQL_HOST'] %>
47
+ host: <%= ENV['MYSQL_HOST'] %>
48
+ <% end %>
49
+ arunit2:
50
+ username: rails
51
+ encoding: utf8mb4
52
+ collation: utf8mb4_general_ci
53
+ <% if ENV['MYSQL_PREPARED_STATEMENTS'] %>
54
+ prepared_statements: true
55
+ <% end %>
56
+ <% if ENV['MYSQL_HOST'] %>
57
+ host: <%= ENV['MYSQL_HOST'] %>
58
+ <% end %>
59
+
60
+ oracle:
61
+ arunit:
62
+ adapter: oracle_enhanced
63
+ database: <%= ENV['ARUNIT_DB_NAME'] || 'orcl' %>
64
+ username: <%= ENV['ARUNIT_USER_NAME'] || 'arunit' %>
65
+ password: <%= ENV['ARUNIT_PASSWORD'] || 'arunit' %>
66
+ emulate_oracle_adapter: true
67
+ arunit2:
68
+ adapter: oracle_enhanced
69
+ database: <%= ENV['ARUNIT_DB_NAME'] || 'orcl' %>
70
+ username: <%= ENV['ARUNIT2_USER_NAME'] || 'arunit2' %>
71
+ password: <%= ENV['ARUNIT2_PASSWORD'] || 'arunit2' %>
72
+ emulate_oracle_adapter: true
73
+
74
+ postgresql:
75
+ arunit:
76
+ min_messages: warning
77
+ arunit_without_prepared_statements:
78
+ min_messages: warning
79
+ prepared_statements: false
80
+ arunit2:
81
+ min_messages: warning
82
+
83
+ sqlite3:
84
+ arunit:
85
+ database: <%= FIXTURES_ROOT %>/fixture_database.sqlite3
86
+ timeout: 5000
87
+ arunit2:
88
+ database: <%= FIXTURES_ROOT %>/fixture_database_2.sqlite3
89
+ timeout: 5000
90
+
91
+ sqlite3_mem:
92
+ arunit:
93
+ adapter: sqlite3
94
+ database: ':memory:'
95
+ arunit2:
96
+ adapter: sqlite3
97
+ database: ':memory:'