ibm_db 5.2.0-x86-mingw32 → 5.4.0-x86-mingw32

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 (625) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +9 -0
  3. data/LICENSE +55 -18
  4. data/README +1 -1
  5. data/debug.log +1 -0
  6. data/ext/Makefile +28 -24
  7. data/ext/ibm_db.c +66 -65
  8. data/ext/ibm_db.o +0 -0
  9. data/ext/ibm_db.so +0 -0
  10. data/ext/mkmf.log +26 -24
  11. data/ext/ruby_ibm_db_cli.c +1 -0
  12. data/ext/ruby_ibm_db_cli.o +0 -0
  13. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +1520 -1282
  14. data/lib/ibm_db.so +1 -0
  15. data/lib/mswin32/ibm_db.rb +3 -1
  16. data/lib/mswin32/rb3x/i386/ruby30/ibm_db.so +0 -0
  17. data/lib/mswin32/rb3x/i386/ruby31/ibm_db.so +0 -0
  18. data/test/active_record/connection_adapters/fake_adapter.rb +5 -2
  19. data/test/activejob/destroy_association_async_test.rb +305 -0
  20. data/test/activejob/destroy_async_job_not_present_test.rb +31 -0
  21. data/test/activejob/helper.rb +15 -0
  22. data/test/assets/schema_dump_5_1.yml +345 -0
  23. data/test/cases/adapter_prevent_writes_test.rb +334 -0
  24. data/test/cases/adapter_test.rb +432 -218
  25. data/test/cases/adapters/mysql2/active_schema_test.rb +85 -75
  26. data/test/cases/adapters/mysql2/auto_increment_test.rb +34 -0
  27. data/test/cases/adapters/mysql2/bind_parameter_test.rb +5 -3
  28. data/test/cases/adapters/mysql2/boolean_test.rb +6 -4
  29. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +26 -24
  30. data/test/cases/adapters/mysql2/charset_collation_test.rb +20 -17
  31. data/test/cases/adapters/mysql2/connection_test.rb +48 -50
  32. data/test/cases/adapters/mysql2/count_deleted_rows_with_lock_test.rb +28 -0
  33. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +23 -19
  34. data/test/cases/adapters/mysql2/enum_test.rb +32 -11
  35. data/test/cases/adapters/mysql2/explain_test.rb +13 -11
  36. data/test/cases/adapters/mysql2/json_test.rb +17 -188
  37. data/test/cases/adapters/mysql2/mysql2_adapter_prevent_writes_test.rb +208 -0
  38. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +183 -28
  39. data/test/cases/adapters/mysql2/nested_deadlock_test.rb +75 -0
  40. data/test/cases/adapters/mysql2/optimizer_hints_test.rb +69 -0
  41. data/test/cases/adapters/mysql2/schema_migrations_test.rb +26 -21
  42. data/test/cases/adapters/mysql2/schema_test.rb +24 -22
  43. data/test/cases/adapters/mysql2/set_test.rb +32 -0
  44. data/test/cases/adapters/mysql2/sp_test.rb +10 -8
  45. data/test/cases/adapters/mysql2/sql_types_test.rb +8 -6
  46. data/test/cases/adapters/mysql2/table_options_test.rb +93 -10
  47. data/test/cases/adapters/mysql2/transaction_test.rb +151 -0
  48. data/test/cases/adapters/mysql2/unsigned_type_test.rb +11 -9
  49. data/test/cases/adapters/mysql2/virtual_column_test.rb +66 -0
  50. data/test/cases/adapters/postgresql/active_schema_test.rb +40 -25
  51. data/test/cases/adapters/postgresql/array_test.rb +118 -63
  52. data/test/cases/adapters/postgresql/bit_string_test.rb +12 -10
  53. data/test/cases/adapters/postgresql/bytea_test.rb +26 -25
  54. data/test/cases/adapters/postgresql/case_insensitive_test.rb +10 -9
  55. data/test/cases/adapters/postgresql/change_schema_test.rb +7 -5
  56. data/test/cases/adapters/postgresql/cidr_test.rb +2 -0
  57. data/test/cases/adapters/postgresql/citext_test.rb +58 -58
  58. data/test/cases/adapters/postgresql/collation_test.rb +17 -15
  59. data/test/cases/adapters/postgresql/composite_test.rb +25 -23
  60. data/test/cases/adapters/postgresql/connection_test.rb +73 -85
  61. data/test/cases/adapters/postgresql/create_unlogged_tables_test.rb +74 -0
  62. data/test/cases/adapters/postgresql/datatype_test.rb +19 -22
  63. data/test/cases/adapters/postgresql/date_test.rb +42 -0
  64. data/test/cases/adapters/postgresql/domain_test.rb +9 -7
  65. data/test/cases/adapters/postgresql/enum_test.rb +12 -10
  66. data/test/cases/adapters/postgresql/explain_test.rb +10 -8
  67. data/test/cases/adapters/postgresql/extension_migration_test.rb +13 -12
  68. data/test/cases/adapters/postgresql/foreign_table_test.rb +109 -0
  69. data/test/cases/adapters/postgresql/full_text_test.rb +8 -6
  70. data/test/cases/adapters/postgresql/geometric_test.rb +57 -63
  71. data/test/cases/adapters/postgresql/hstore_test.rb +288 -280
  72. data/test/cases/adapters/postgresql/infinity_test.rb +54 -15
  73. data/test/cases/adapters/postgresql/integer_test.rb +2 -0
  74. data/test/cases/adapters/postgresql/interval_test.rb +99 -0
  75. data/test/cases/adapters/postgresql/json_test.rb +16 -201
  76. data/test/cases/adapters/postgresql/ltree_test.rb +14 -16
  77. data/test/cases/adapters/postgresql/money_test.rb +47 -16
  78. data/test/cases/adapters/postgresql/network_test.rb +36 -28
  79. data/test/cases/adapters/postgresql/numbers_test.rb +7 -5
  80. data/test/cases/adapters/postgresql/optimizer_hints_test.rb +71 -0
  81. data/test/cases/adapters/postgresql/partitions_test.rb +22 -0
  82. data/test/cases/adapters/postgresql/postgresql_adapter_prevent_writes_test.rb +205 -0
  83. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +178 -136
  84. data/test/cases/adapters/postgresql/prepared_statements_disabled_test.rb +27 -0
  85. data/test/cases/adapters/postgresql/quoting_test.rb +12 -6
  86. data/test/cases/adapters/postgresql/range_test.rb +406 -292
  87. data/test/cases/adapters/postgresql/referential_integrity_test.rb +16 -15
  88. data/test/cases/adapters/postgresql/rename_table_test.rb +9 -8
  89. data/test/cases/adapters/postgresql/schema_authorization_test.rb +14 -23
  90. data/test/cases/adapters/postgresql/schema_test.rb +207 -91
  91. data/test/cases/adapters/postgresql/serial_test.rb +9 -7
  92. data/test/cases/adapters/postgresql/statement_pool_test.rb +26 -6
  93. data/test/cases/adapters/postgresql/timestamp_test.rb +17 -15
  94. data/test/cases/adapters/postgresql/transaction_nested_test.rb +114 -0
  95. data/test/cases/adapters/postgresql/transaction_test.rb +189 -0
  96. data/test/cases/adapters/postgresql/type_lookup_test.rb +12 -10
  97. data/test/cases/adapters/postgresql/utils_test.rb +11 -9
  98. data/test/cases/adapters/postgresql/uuid_test.rb +226 -109
  99. data/test/cases/adapters/postgresql/xml_test.rb +10 -14
  100. data/test/cases/adapters/sqlite3/collation_test.rb +26 -15
  101. data/test/cases/adapters/sqlite3/copy_table_test.rb +31 -28
  102. data/test/cases/adapters/sqlite3/explain_test.rb +13 -11
  103. data/test/cases/adapters/sqlite3/json_test.rb +29 -0
  104. data/test/cases/adapters/sqlite3/quoting_test.rb +35 -57
  105. data/test/cases/adapters/sqlite3/sqlite3_adapter_prevent_writes_test.rb +186 -0
  106. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +318 -131
  107. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +11 -11
  108. data/test/cases/adapters/sqlite3/statement_pool_test.rb +7 -6
  109. data/test/cases/adapters/sqlite3/transaction_test.rb +123 -0
  110. data/test/cases/aggregations_test.rb +14 -12
  111. data/test/cases/annotate_test.rb +46 -0
  112. data/test/cases/ar_schema_test.rb +153 -86
  113. data/test/cases/arel/attributes/attribute_test.rb +1145 -0
  114. data/test/cases/arel/attributes/math_test.rb +83 -0
  115. data/test/cases/arel/attributes_test.rb +27 -0
  116. data/test/cases/arel/collectors/bind_test.rb +40 -0
  117. data/test/cases/arel/collectors/composite_test.rb +47 -0
  118. data/test/cases/arel/collectors/sql_string_test.rb +41 -0
  119. data/test/cases/arel/collectors/substitute_bind_collector_test.rb +48 -0
  120. data/test/cases/arel/crud_test.rb +65 -0
  121. data/test/cases/arel/delete_manager_test.rb +53 -0
  122. data/test/cases/arel/factory_methods_test.rb +46 -0
  123. data/test/cases/arel/helper.rb +45 -0
  124. data/test/cases/arel/insert_manager_test.rb +241 -0
  125. data/test/cases/arel/nodes/and_test.rb +30 -0
  126. data/test/cases/arel/nodes/as_test.rb +36 -0
  127. data/test/cases/arel/nodes/ascending_test.rb +46 -0
  128. data/test/cases/arel/nodes/bin_test.rb +35 -0
  129. data/test/cases/arel/nodes/binary_test.rb +29 -0
  130. data/test/cases/arel/nodes/bind_param_test.rb +22 -0
  131. data/test/cases/arel/nodes/case_test.rb +96 -0
  132. data/test/cases/arel/nodes/casted_test.rb +18 -0
  133. data/test/cases/arel/nodes/comment_test.rb +22 -0
  134. data/test/cases/arel/nodes/count_test.rb +35 -0
  135. data/test/cases/arel/nodes/delete_statement_test.rb +36 -0
  136. data/test/cases/arel/nodes/descending_test.rb +46 -0
  137. data/test/cases/arel/nodes/distinct_test.rb +21 -0
  138. data/test/cases/arel/nodes/equality_test.rb +62 -0
  139. data/test/cases/arel/nodes/extract_test.rb +43 -0
  140. data/test/cases/arel/nodes/false_test.rb +21 -0
  141. data/test/cases/arel/nodes/grouping_test.rb +26 -0
  142. data/test/cases/arel/nodes/infix_operation_test.rb +42 -0
  143. data/test/cases/arel/nodes/insert_statement_test.rb +44 -0
  144. data/test/cases/arel/nodes/named_function_test.rb +48 -0
  145. data/test/cases/arel/nodes/node_test.rb +22 -0
  146. data/test/cases/arel/nodes/not_test.rb +31 -0
  147. data/test/cases/arel/nodes/or_test.rb +36 -0
  148. data/test/cases/arel/nodes/over_test.rb +69 -0
  149. data/test/cases/arel/nodes/select_core_test.rb +79 -0
  150. data/test/cases/arel/nodes/select_statement_test.rb +51 -0
  151. data/test/cases/arel/nodes/sql_literal_test.rb +75 -0
  152. data/test/cases/arel/nodes/sum_test.rb +35 -0
  153. data/test/cases/arel/nodes/table_alias_test.rb +29 -0
  154. data/test/cases/arel/nodes/true_test.rb +21 -0
  155. data/test/cases/arel/nodes/unary_operation_test.rb +41 -0
  156. data/test/cases/arel/nodes/update_statement_test.rb +60 -0
  157. data/test/cases/arel/nodes/window_test.rb +81 -0
  158. data/test/cases/arel/nodes_test.rb +34 -0
  159. data/test/cases/arel/select_manager_test.rb +1238 -0
  160. data/test/cases/arel/support/fake_record.rb +135 -0
  161. data/test/cases/arel/table_test.rb +216 -0
  162. data/test/cases/arel/update_manager_test.rb +126 -0
  163. data/test/cases/arel/visitors/dispatch_contamination_test.rb +78 -0
  164. data/test/cases/arel/visitors/dot_test.rb +90 -0
  165. data/test/cases/arel/visitors/mysql_test.rb +157 -0
  166. data/test/cases/arel/visitors/postgres_test.rb +366 -0
  167. data/test/cases/arel/visitors/sqlite_test.rb +75 -0
  168. data/test/cases/arel/visitors/to_sql_test.rb +750 -0
  169. data/test/cases/associations/belongs_to_associations_test.rb +510 -158
  170. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +4 -2
  171. data/test/cases/associations/callbacks_test.rb +56 -38
  172. data/test/cases/associations/cascaded_eager_loading_test.rb +118 -61
  173. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +138 -18
  174. data/test/cases/associations/eager_load_nested_include_test.rb +38 -37
  175. data/test/cases/associations/eager_singularization_test.rb +21 -21
  176. data/test/cases/associations/eager_test.rb +559 -415
  177. data/test/cases/associations/extension_test.rb +18 -12
  178. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +234 -213
  179. data/test/cases/associations/has_many_associations_test.rb +1038 -465
  180. data/test/cases/associations/has_many_through_associations_test.rb +558 -249
  181. data/test/cases/associations/has_one_associations_test.rb +294 -129
  182. data/test/cases/associations/has_one_through_associations_test.rb +121 -75
  183. data/test/cases/associations/inner_join_association_test.rb +114 -38
  184. data/test/cases/associations/inverse_associations_test.rb +606 -398
  185. data/test/cases/associations/join_model_test.rb +158 -148
  186. data/test/cases/associations/left_outer_join_association_test.rb +59 -24
  187. data/test/cases/associations/nested_through_associations_test.rb +166 -109
  188. data/test/cases/associations/required_test.rb +35 -10
  189. data/test/cases/associations_test.rb +241 -110
  190. data/test/cases/attribute_methods/read_test.rb +11 -11
  191. data/test/cases/attribute_methods_test.rb +413 -298
  192. data/test/cases/attributes_test.rb +145 -27
  193. data/test/cases/autosave_association_test.rb +681 -436
  194. data/test/cases/base_prevent_writes_test.rb +229 -0
  195. data/test/cases/base_test.rb +599 -542
  196. data/test/cases/batches_test.rb +288 -82
  197. data/test/cases/binary_test.rb +26 -31
  198. data/test/cases/bind_parameter_test.rb +194 -21
  199. data/test/cases/boolean_test.rb +52 -0
  200. data/test/cases/cache_key_test.rb +110 -5
  201. data/test/cases/calculations_test.rb +740 -177
  202. data/test/cases/callbacks_test.rb +74 -207
  203. data/test/cases/clone_test.rb +15 -10
  204. data/test/cases/coders/json_test.rb +2 -0
  205. data/test/cases/coders/yaml_column_test.rb +16 -13
  206. data/test/cases/collection_cache_key_test.rb +177 -20
  207. data/test/cases/column_alias_test.rb +9 -7
  208. data/test/cases/column_definition_test.rb +10 -68
  209. data/test/cases/comment_test.rb +166 -107
  210. data/test/cases/connection_adapters/adapter_leasing_test.rb +14 -10
  211. data/test/cases/connection_adapters/connection_handler_test.rb +358 -51
  212. data/test/cases/connection_adapters/connection_handlers_multi_db_test.rb +400 -0
  213. data/test/cases/connection_adapters/connection_handlers_multi_pool_config_test.rb +103 -0
  214. data/test/cases/connection_adapters/connection_handlers_sharding_db_test.rb +499 -0
  215. data/test/cases/connection_adapters/connection_swapping_nested_test.rb +457 -0
  216. data/test/cases/connection_adapters/legacy_connection_handlers_multi_db_test.rb +486 -0
  217. data/test/cases/connection_adapters/legacy_connection_handlers_sharding_db_test.rb +586 -0
  218. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +319 -138
  219. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +62 -50
  220. data/test/cases/connection_adapters/schema_cache_test.rb +259 -26
  221. data/test/cases/connection_adapters/type_lookup_test.rb +96 -95
  222. data/test/cases/connection_management_test.rb +13 -11
  223. data/test/cases/connection_pool_test.rb +316 -83
  224. data/test/cases/core_test.rb +82 -58
  225. data/test/cases/counter_cache_test.rb +204 -50
  226. data/test/cases/custom_locking_test.rb +5 -3
  227. data/test/cases/database_configurations/hash_config_test.rb +74 -0
  228. data/test/cases/database_configurations/resolver_test.rb +150 -0
  229. data/test/cases/database_configurations_test.rb +145 -0
  230. data/test/cases/database_selector_test.rb +296 -0
  231. data/test/cases/database_statements_test.rb +18 -16
  232. data/test/cases/date_test.rb +8 -16
  233. data/test/cases/date_time_precision_test.rb +100 -78
  234. data/test/cases/date_time_test.rb +23 -8
  235. data/test/cases/defaults_test.rb +106 -71
  236. data/test/cases/delegated_type_test.rb +57 -0
  237. data/test/cases/dirty_test.rb +419 -223
  238. data/test/cases/disconnected_test.rb +6 -6
  239. data/test/cases/dup_test.rb +54 -27
  240. data/test/cases/enum_test.rb +461 -82
  241. data/test/cases/errors_test.rb +7 -7
  242. data/test/cases/explain_subscriber_test.rb +17 -15
  243. data/test/cases/explain_test.rb +11 -19
  244. data/test/cases/filter_attributes_test.rb +153 -0
  245. data/test/cases/finder_respond_to_test.rb +14 -14
  246. data/test/cases/finder_test.rb +669 -287
  247. data/test/cases/fixture_set/file_test.rb +34 -38
  248. data/test/cases/fixtures_test.rb +833 -176
  249. data/test/cases/forbidden_attributes_protection_test.rb +32 -67
  250. data/test/cases/habtm_destroy_order_test.rb +25 -25
  251. data/test/cases/helper.rb +78 -49
  252. data/test/cases/hot_compatibility_test.rb +33 -32
  253. data/test/cases/i18n_test.rb +18 -17
  254. data/test/cases/inheritance_test.rb +180 -115
  255. data/test/cases/insert_all_test.rb +489 -0
  256. data/test/cases/instrumentation_test.rb +101 -0
  257. data/test/cases/integration_test.rb +119 -31
  258. data/test/cases/invalid_connection_test.rb +18 -16
  259. data/test/cases/invertible_migration_test.rb +183 -43
  260. data/test/cases/json_attribute_test.rb +35 -0
  261. data/test/cases/json_serialization_test.rb +57 -58
  262. data/test/cases/json_shared_test_cases.rb +290 -0
  263. data/test/cases/locking_test.rb +413 -119
  264. data/test/cases/log_subscriber_test.rb +68 -26
  265. data/test/cases/marshal_serialization_test.rb +39 -0
  266. data/test/cases/migration/change_schema_test.rb +118 -72
  267. data/test/cases/migration/change_table_test.rb +138 -30
  268. data/test/cases/migration/check_constraint_test.rb +162 -0
  269. data/test/cases/migration/column_attributes_test.rb +45 -35
  270. data/test/cases/migration/column_positioning_test.rb +18 -6
  271. data/test/cases/migration/columns_test.rb +93 -77
  272. data/test/cases/migration/command_recorder_test.rb +121 -34
  273. data/test/cases/migration/compatibility_test.rb +578 -23
  274. data/test/cases/migration/create_join_table_test.rb +35 -25
  275. data/test/cases/migration/foreign_key_test.rb +503 -284
  276. data/test/cases/migration/helper.rb +4 -3
  277. data/test/cases/migration/index_test.rb +119 -70
  278. data/test/cases/migration/logger_test.rb +9 -6
  279. data/test/cases/migration/pending_migrations_test.rb +88 -34
  280. data/test/cases/migration/references_foreign_key_test.rb +164 -150
  281. data/test/cases/migration/references_index_test.rb +38 -19
  282. data/test/cases/migration/references_statements_test.rb +15 -14
  283. data/test/cases/migration/rename_table_test.rb +53 -30
  284. data/test/cases/migration_test.rb +637 -269
  285. data/test/cases/migrator_test.rb +191 -135
  286. data/test/cases/mixin_test.rb +7 -11
  287. data/test/cases/modules_test.rb +36 -34
  288. data/test/cases/multi_db_migrator_test.rb +223 -0
  289. data/test/cases/multiparameter_attributes_test.rb +60 -33
  290. data/test/cases/multiple_db_test.rb +16 -22
  291. data/test/cases/nested_attributes_test.rb +341 -320
  292. data/test/cases/nested_attributes_with_callbacks_test.rb +26 -24
  293. data/test/cases/null_relation_test.rb +84 -0
  294. data/test/cases/numeric_data_test.rb +93 -0
  295. data/test/cases/persistence_test.rb +361 -269
  296. data/test/cases/pooled_connections_test.rb +18 -26
  297. data/test/cases/prepared_statement_status_test.rb +48 -0
  298. data/test/cases/primary_keys_test.rb +210 -104
  299. data/test/cases/query_cache_test.rb +610 -141
  300. data/test/cases/quoting_test.rb +132 -31
  301. data/test/cases/readonly_test.rb +49 -48
  302. data/test/cases/reaper_test.rb +146 -32
  303. data/test/cases/reflection_test.rb +167 -156
  304. data/test/cases/relation/delegation_test.rb +49 -36
  305. data/test/cases/relation/delete_all_test.rb +117 -0
  306. data/test/cases/relation/merging_test.rb +319 -42
  307. data/test/cases/relation/mutation_test.rb +55 -93
  308. data/test/cases/relation/or_test.rb +129 -29
  309. data/test/cases/relation/predicate_builder_test.rb +21 -6
  310. data/test/cases/relation/record_fetch_warning_test.rb +5 -3
  311. data/test/cases/relation/select_test.rb +67 -0
  312. data/test/cases/relation/update_all_test.rb +317 -0
  313. data/test/cases/relation/where_chain_test.rb +68 -32
  314. data/test/cases/relation/where_clause_test.rb +136 -61
  315. data/test/cases/relation/where_test.rb +155 -48
  316. data/test/cases/relation_test.rb +266 -112
  317. data/test/cases/relations_test.rb +969 -744
  318. data/test/cases/reload_models_test.rb +13 -9
  319. data/test/cases/reserved_word_test.rb +141 -0
  320. data/test/cases/result_test.rb +68 -17
  321. data/test/cases/sanitize_test.rb +87 -71
  322. data/test/cases/schema_dumper_test.rb +221 -128
  323. data/test/cases/schema_loading_test.rb +3 -2
  324. data/test/cases/scoping/default_scoping_test.rb +185 -144
  325. data/test/cases/scoping/named_scoping_test.rb +177 -89
  326. data/test/cases/scoping/relation_scoping_test.rb +197 -75
  327. data/test/cases/secure_token_test.rb +18 -3
  328. data/test/cases/serialization_test.rb +30 -28
  329. data/test/cases/serialized_attribute_test.rb +133 -42
  330. data/test/cases/signed_id_test.rb +168 -0
  331. data/test/cases/statement_cache_test.rb +41 -24
  332. data/test/cases/statement_invalid_test.rb +42 -0
  333. data/test/cases/store_test.rb +180 -55
  334. data/test/cases/strict_loading_test.rb +473 -0
  335. data/test/cases/suppressor_test.rb +26 -12
  336. data/test/cases/tasks/database_tasks_test.rb +1258 -194
  337. data/test/cases/tasks/mysql_rake_test.rb +370 -298
  338. data/test/cases/tasks/postgresql_rake_test.rb +481 -251
  339. data/test/cases/tasks/sqlite_rake_test.rb +225 -178
  340. data/test/cases/test_case.rb +51 -40
  341. data/test/cases/test_databases_test.rb +79 -0
  342. data/test/cases/test_fixtures_test.rb +79 -19
  343. data/test/cases/time_precision_test.rb +98 -76
  344. data/test/cases/timestamp_test.rb +102 -99
  345. data/test/cases/touch_later_test.rb +12 -10
  346. data/test/cases/transaction_callbacks_test.rb +344 -90
  347. data/test/cases/transaction_isolation_test.rb +12 -12
  348. data/test/cases/transactions_test.rb +612 -162
  349. data/test/cases/type/adapter_specific_registry_test.rb +14 -2
  350. data/test/cases/type/date_time_test.rb +4 -2
  351. data/test/cases/type/integer_test.rb +4 -2
  352. data/test/cases/type/string_test.rb +10 -8
  353. data/test/cases/type/time_test.rb +28 -0
  354. data/test/cases/type/type_map_test.rb +29 -28
  355. data/test/cases/type/unsigned_integer_test.rb +19 -0
  356. data/test/cases/type_test.rb +2 -0
  357. data/test/cases/types_test.rb +3 -1
  358. data/test/cases/unconnected_test.rb +14 -1
  359. data/test/cases/unsafe_raw_sql_test.rb +274 -0
  360. data/test/cases/validations/absence_validation_test.rb +19 -17
  361. data/test/cases/validations/association_validation_test.rb +30 -28
  362. data/test/cases/validations/i18n_generate_message_validation_test.rb +34 -16
  363. data/test/cases/validations/i18n_validation_test.rb +22 -21
  364. data/test/cases/validations/length_validation_test.rb +34 -33
  365. data/test/cases/validations/numericality_validation_test.rb +181 -0
  366. data/test/cases/validations/presence_validation_test.rb +21 -19
  367. data/test/cases/validations/uniqueness_validation_test.rb +156 -86
  368. data/test/cases/validations_repair_helper.rb +2 -0
  369. data/test/cases/validations_test.rb +61 -26
  370. data/test/cases/view_test.rb +122 -116
  371. data/test/cases/yaml_serialization_test.rb +79 -34
  372. data/test/config.example.yml +19 -19
  373. data/test/config.rb +3 -1
  374. data/test/config.yml +16 -6
  375. data/test/fixtures/all/namespaced/accounts.yml +2 -0
  376. data/test/fixtures/author_addresses.yml +1 -8
  377. data/test/fixtures/authors.yml +1 -7
  378. data/test/fixtures/binaries.yml +4 -0
  379. data/test/fixtures/books.yml +9 -2
  380. data/test/fixtures/categories_posts.yml +3 -0
  381. data/test/fixtures/citations.yml +5 -0
  382. data/test/fixtures/comments.yml +7 -0
  383. data/test/fixtures/companies.yml +5 -0
  384. data/test/fixtures/computers.yml +2 -0
  385. data/test/fixtures/customers.yml +10 -1
  386. data/test/fixtures/developers.yml +1 -1
  387. data/test/fixtures/essays.yml +10 -0
  388. data/test/fixtures/faces.yml +3 -3
  389. data/test/fixtures/humans.yml +5 -0
  390. data/test/fixtures/interests.yml +7 -7
  391. data/test/fixtures/memberships.yml +7 -0
  392. data/test/fixtures/minimalistics.yml +3 -0
  393. data/test/fixtures/mixed_case_monkeys.yml +2 -2
  394. data/test/fixtures/naked/yml/courses_with_invalid_key.yml +3 -0
  395. data/test/fixtures/naked/yml/parrots.yml +1 -0
  396. data/test/fixtures/other_books.yml +26 -0
  397. data/test/fixtures/other_posts.yml +1 -0
  398. data/test/fixtures/parrots.yml +7 -1
  399. data/test/fixtures/pirates.yml +3 -0
  400. data/test/fixtures/posts.yml +11 -3
  401. data/test/fixtures/readers.yml +6 -0
  402. data/test/fixtures/reserved_words/values.yml +2 -2
  403. data/test/fixtures/sponsors.yml +3 -0
  404. data/test/fixtures/strict_zines.yml +2 -0
  405. data/test/fixtures/subscribers.yml +1 -1
  406. data/test/fixtures/tasks.yml +1 -1
  407. data/test/fixtures/warehouse-things.yml +3 -0
  408. data/test/migrations/10_urban/9_add_expressions.rb +2 -0
  409. data/test/migrations/decimal/1_give_me_big_numbers.rb +6 -4
  410. data/test/migrations/magic/1_currencies_have_symbols.rb +3 -2
  411. data/test/migrations/missing/1000_people_have_middle_names.rb +2 -0
  412. data/test/migrations/missing/1_people_have_last_names.rb +2 -0
  413. data/test/migrations/missing/3_we_need_reminders.rb +2 -0
  414. data/test/migrations/missing/4_innocent_jointable.rb +3 -1
  415. data/test/migrations/rename/1_we_need_things.rb +2 -0
  416. data/test/migrations/rename/2_rename_things.rb +2 -0
  417. data/test/migrations/to_copy/1_people_have_hobbies.rb +3 -1
  418. data/test/migrations/to_copy/2_people_have_descriptions.rb +3 -1
  419. data/test/migrations/to_copy2/1_create_articles.rb +2 -0
  420. data/test/migrations/to_copy2/2_create_comments.rb +3 -1
  421. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +3 -1
  422. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +3 -1
  423. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +3 -1
  424. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +2 -0
  425. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +2 -0
  426. data/test/migrations/valid/1_valid_people_have_last_names.rb +2 -0
  427. data/test/migrations/valid/2_we_need_reminders.rb +2 -0
  428. data/test/migrations/valid/3_innocent_jointable.rb +3 -1
  429. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +2 -0
  430. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +2 -0
  431. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +3 -1
  432. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +2 -0
  433. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +2 -0
  434. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +3 -1
  435. data/test/migrations/version_check/20131219224947_migration_version_check.rb +2 -0
  436. data/test/models/account.rb +46 -0
  437. data/test/models/admin/account.rb +3 -1
  438. data/test/models/admin/randomly_named_c1.rb +2 -0
  439. data/test/models/admin/user.rb +16 -8
  440. data/test/models/admin.rb +4 -2
  441. data/test/models/aircraft.rb +3 -1
  442. data/test/models/arunit2_model.rb +2 -0
  443. data/test/models/author.rb +153 -102
  444. data/test/models/auto_id.rb +2 -0
  445. data/test/models/autoloadable/extra_firm.rb +2 -0
  446. data/test/models/binary.rb +3 -1
  447. data/test/models/binary_field.rb +6 -0
  448. data/test/models/bird.rb +13 -1
  449. data/test/models/book.rb +14 -4
  450. data/test/models/book_destroy_async.rb +24 -0
  451. data/test/models/boolean.rb +5 -0
  452. data/test/models/bulb.rb +13 -4
  453. data/test/models/cake_designer.rb +2 -0
  454. data/test/models/car.rb +17 -10
  455. data/test/models/carrier.rb +2 -0
  456. data/test/models/cart.rb +5 -0
  457. data/test/models/cat.rb +2 -0
  458. data/test/models/categorization.rb +8 -6
  459. data/test/models/category.rb +28 -16
  460. data/test/models/chef.rb +2 -0
  461. data/test/models/citation.rb +5 -1
  462. data/test/models/club.rb +13 -10
  463. data/test/models/college.rb +4 -2
  464. data/test/models/column.rb +2 -0
  465. data/test/models/column_name.rb +2 -0
  466. data/test/models/comment.rb +32 -10
  467. data/test/models/company.rb +102 -106
  468. data/test/models/company_in_module.rb +27 -26
  469. data/test/models/computer.rb +3 -1
  470. data/test/models/contact.rb +15 -13
  471. data/test/models/content.rb +5 -3
  472. data/test/models/contract.rb +21 -3
  473. data/test/models/country.rb +2 -4
  474. data/test/models/course.rb +3 -1
  475. data/test/models/customer.rb +10 -8
  476. data/test/models/customer_carrier.rb +2 -0
  477. data/test/models/dashboard.rb +2 -0
  478. data/test/models/default.rb +2 -0
  479. data/test/models/department.rb +2 -0
  480. data/test/models/destroy_async_parent.rb +15 -0
  481. data/test/models/destroy_async_parent_soft_delete.rb +20 -0
  482. data/test/models/developer.rb +152 -85
  483. data/test/models/dl_keyed_belongs_to.rb +13 -0
  484. data/test/models/dl_keyed_belongs_to_soft_delete.rb +19 -0
  485. data/test/models/dl_keyed_has_many.rb +5 -0
  486. data/test/models/dl_keyed_has_many_through.rb +5 -0
  487. data/test/models/dl_keyed_has_one.rb +5 -0
  488. data/test/models/dl_keyed_join.rb +10 -0
  489. data/test/models/dog.rb +2 -0
  490. data/test/models/dog_lover.rb +2 -0
  491. data/test/models/doubloon.rb +3 -1
  492. data/test/models/drink_designer.rb +17 -0
  493. data/test/models/edge.rb +4 -2
  494. data/test/models/electron.rb +2 -0
  495. data/test/models/engine.rb +3 -2
  496. data/test/models/entrant.rb +2 -0
  497. data/test/models/entry.rb +5 -0
  498. data/test/models/essay.rb +6 -3
  499. data/test/models/essay_destroy_async.rb +12 -0
  500. data/test/models/event.rb +3 -1
  501. data/test/models/eye.rb +5 -3
  502. data/test/models/face.rb +14 -6
  503. data/test/models/family.rb +6 -0
  504. data/test/models/family_tree.rb +6 -0
  505. data/test/models/friendship.rb +5 -3
  506. data/test/models/frog.rb +8 -0
  507. data/test/models/guid.rb +3 -1
  508. data/test/models/guitar.rb +2 -0
  509. data/test/models/hotel.rb +5 -3
  510. data/test/models/human.rb +39 -0
  511. data/test/models/image.rb +3 -1
  512. data/test/models/interest.rb +14 -3
  513. data/test/models/invoice.rb +4 -2
  514. data/test/models/item.rb +3 -1
  515. data/test/models/job.rb +5 -3
  516. data/test/models/joke.rb +4 -2
  517. data/test/models/keyboard.rb +3 -1
  518. data/test/models/legacy_thing.rb +2 -0
  519. data/test/models/lesson.rb +2 -0
  520. data/test/models/line_item.rb +3 -1
  521. data/test/models/liquid.rb +2 -0
  522. data/test/models/matey.rb +3 -1
  523. data/test/models/measurement.rb +4 -0
  524. data/test/models/member.rb +23 -20
  525. data/test/models/member_detail.rb +3 -0
  526. data/test/models/member_type.rb +2 -0
  527. data/test/models/membership.rb +4 -1
  528. data/test/models/mentor.rb +3 -1
  529. data/test/models/message.rb +5 -0
  530. data/test/models/minimalistic.rb +2 -0
  531. data/test/models/minivan.rb +3 -2
  532. data/test/models/mixed_case_monkey.rb +3 -1
  533. data/test/models/molecule.rb +2 -0
  534. data/test/models/mouse.rb +6 -0
  535. data/test/models/movie.rb +2 -0
  536. data/test/models/node.rb +4 -2
  537. data/test/models/non_primary_key.rb +2 -0
  538. data/test/models/notification.rb +2 -0
  539. data/test/models/numeric_data.rb +12 -0
  540. data/test/models/order.rb +4 -2
  541. data/test/models/organization.rb +9 -7
  542. data/test/models/other_dog.rb +3 -1
  543. data/test/models/owner.rb +6 -4
  544. data/test/models/parrot.rb +12 -4
  545. data/test/models/person.rb +59 -54
  546. data/test/models/personal_legacy_thing.rb +3 -1
  547. data/test/models/pet.rb +4 -2
  548. data/test/models/pet_treasure.rb +2 -0
  549. data/test/models/pirate.rb +67 -43
  550. data/test/models/possession.rb +3 -1
  551. data/test/models/post.rb +184 -86
  552. data/test/models/price_estimate.rb +11 -1
  553. data/test/models/professor.rb +3 -1
  554. data/test/models/project.rb +14 -12
  555. data/test/models/publisher/article.rb +2 -0
  556. data/test/models/publisher/magazine.rb +2 -0
  557. data/test/models/publisher.rb +2 -0
  558. data/test/models/randomly_named_c1.rb +2 -0
  559. data/test/models/rating.rb +5 -1
  560. data/test/models/reader.rb +7 -5
  561. data/test/models/recipe.rb +2 -0
  562. data/test/models/record.rb +2 -0
  563. data/test/models/reference.rb +6 -3
  564. data/test/models/reply.rb +39 -21
  565. data/test/models/room.rb +6 -0
  566. data/test/models/section.rb +6 -0
  567. data/test/models/seminar.rb +6 -0
  568. data/test/models/session.rb +6 -0
  569. data/test/models/ship.rb +12 -9
  570. data/test/models/ship_part.rb +5 -3
  571. data/test/models/shop.rb +4 -2
  572. data/test/models/shop_account.rb +2 -0
  573. data/test/models/speedometer.rb +2 -0
  574. data/test/models/sponsor.rb +8 -5
  575. data/test/models/squeak.rb +6 -0
  576. data/test/models/strict_zine.rb +7 -0
  577. data/test/models/string_key_object.rb +2 -0
  578. data/test/models/student.rb +2 -0
  579. data/test/models/subscriber.rb +4 -2
  580. data/test/models/subscription.rb +5 -1
  581. data/test/models/tag.rb +6 -3
  582. data/test/models/tagging.rb +13 -6
  583. data/test/models/task.rb +2 -0
  584. data/test/models/topic.rb +54 -19
  585. data/test/models/toy.rb +4 -0
  586. data/test/models/traffic_light.rb +2 -0
  587. data/test/models/treasure.rb +5 -3
  588. data/test/models/treaty.rb +2 -4
  589. data/test/models/tree.rb +2 -0
  590. data/test/models/tuning_peg.rb +2 -0
  591. data/test/models/tyre.rb +2 -0
  592. data/test/models/user.rb +12 -4
  593. data/test/models/uuid_child.rb +2 -0
  594. data/test/models/uuid_item.rb +2 -0
  595. data/test/models/uuid_parent.rb +2 -0
  596. data/test/models/vegetables.rb +12 -3
  597. data/test/models/vertex.rb +6 -4
  598. data/test/models/warehouse_thing.rb +2 -0
  599. data/test/models/wheel.rb +3 -1
  600. data/test/models/without_table.rb +3 -1
  601. data/test/models/zine.rb +3 -1
  602. data/test/schema/mysql2_specific_schema.rb +49 -35
  603. data/test/schema/oracle_specific_schema.rb +13 -15
  604. data/test/schema/postgresql_specific_schema.rb +51 -40
  605. data/test/schema/schema.rb +334 -154
  606. data/test/schema/sqlite_specific_schema.rb +9 -16
  607. data/test/support/config.rb +26 -26
  608. data/test/support/connection.rb +14 -8
  609. data/test/support/connection_helper.rb +3 -1
  610. data/test/support/ddl_helper.rb +2 -0
  611. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic.dump +0 -0
  612. data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic_associations.dump +0 -0
  613. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic.dump +0 -0
  614. data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic_associations.dump +0 -0
  615. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic.dump +0 -0
  616. data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic_associations.dump +0 -0
  617. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic.dump +0 -0
  618. data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic_associations.dump +0 -0
  619. data/test/support/marshal_compatibility_fixtures/legacy_6_0_record_mysql.dump +0 -0
  620. data/test/support/marshal_compatibility_fixtures/legacy_relation.dump +0 -0
  621. data/test/support/schema_dumping_helper.rb +2 -0
  622. data/test/support/stubs/strong_parameters.rb +40 -0
  623. data/test/support/yaml_compatibility_fixtures/rails_v1_mysql.yml +206 -0
  624. data/test/support/yaml_compatibility_fixtures/rails_v2.yml +55 -0
  625. metadata +192 -14
@@ -1,29 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "cases/helper"
2
- require 'support/schema_dumping_helper'
4
+ require "support/schema_dumping_helper"
3
5
 
4
6
  class PostgresqlByteaTest < ActiveRecord::PostgreSQLTestCase
5
7
  include SchemaDumpingHelper
6
8
 
7
9
  class ByteaDataType < ActiveRecord::Base
8
- self.table_name = 'bytea_data_type'
10
+ self.table_name = "bytea_data_type"
9
11
  end
10
12
 
11
13
  def setup
12
14
  @connection = ActiveRecord::Base.connection
13
- begin
14
- @connection.transaction do
15
- @connection.create_table('bytea_data_type') do |t|
16
- t.binary 'payload'
17
- t.binary 'serialized'
18
- end
15
+ @connection.transaction do
16
+ @connection.create_table("bytea_data_type") do |t|
17
+ t.binary "payload"
18
+ t.binary "serialized"
19
19
  end
20
20
  end
21
- @column = ByteaDataType.columns_hash['payload']
21
+ @column = ByteaDataType.columns_hash["payload"]
22
22
  @type = ByteaDataType.type_for_attribute("payload")
23
23
  end
24
24
 
25
25
  teardown do
26
- @connection.drop_table 'bytea_data_type', if_exists: true
26
+ @connection.drop_table "bytea_data_type", if_exists: true
27
27
  end
28
28
 
29
29
  def test_column
@@ -32,9 +32,9 @@ class PostgresqlByteaTest < ActiveRecord::PostgreSQLTestCase
32
32
  end
33
33
 
34
34
  def test_binary_columns_are_limitless_the_upper_limit_is_one_GB
35
- assert_equal 'bytea', @connection.type_to_sql(:binary, 100_000)
36
- assert_raise ActiveRecord::ActiveRecordError do
37
- @connection.type_to_sql :binary, 4294967295
35
+ assert_equal "bytea", @connection.type_to_sql(:binary, limit: 100_000)
36
+ assert_raise ArgumentError do
37
+ @connection.type_to_sql(:binary, limit: 4294967295)
38
38
  end
39
39
  end
40
40
 
@@ -42,17 +42,17 @@ class PostgresqlByteaTest < ActiveRecord::PostgreSQLTestCase
42
42
  assert @column
43
43
 
44
44
  data = "\u001F\x8B"
45
- assert_equal('UTF-8', data.encoding.name)
46
- assert_equal('ASCII-8BIT', @type.deserialize(data).encoding.name)
45
+ assert_equal("UTF-8", data.encoding.name)
46
+ assert_equal("ASCII-8BIT", @type.deserialize(data).encoding.name)
47
47
  end
48
48
 
49
49
  def test_type_cast_binary_value
50
- data = "\u001F\x8B".force_encoding("BINARY")
50
+ data = (+"\u001F\x8B").force_encoding("BINARY")
51
51
  assert_equal(data, @type.deserialize(data))
52
52
  end
53
53
 
54
54
  def test_type_case_nil
55
- assert_equal(nil, @type.deserialize(nil))
55
+ assert_nil(@type.deserialize(nil))
56
56
  end
57
57
 
58
58
  def test_read_value
@@ -66,14 +66,14 @@ class PostgresqlByteaTest < ActiveRecord::PostgreSQLTestCase
66
66
  def test_read_nil_value
67
67
  @connection.execute "insert into bytea_data_type (payload) VALUES (null)"
68
68
  record = ByteaDataType.first
69
- assert_equal(nil, record.payload)
69
+ assert_nil(record.payload)
70
70
  record.delete
71
71
  end
72
72
 
73
73
  def test_write_value
74
74
  data = "\u001F"
75
75
  record = ByteaDataType.create(payload: data)
76
- assert_not record.new_record?
76
+ assert_not_predicate record, :new_record?
77
77
  assert_equal(data, record.payload)
78
78
  end
79
79
 
@@ -88,26 +88,27 @@ class PostgresqlByteaTest < ActiveRecord::PostgreSQLTestCase
88
88
  def test_via_to_sql_with_complicating_connection
89
89
  Thread.new do
90
90
  other_conn = ActiveRecord::Base.connection
91
- other_conn.execute('SET standard_conforming_strings = off')
91
+ other_conn.execute("SET standard_conforming_strings = off")
92
+ other_conn.execute("SET escape_string_warning = off")
92
93
  end.join
93
94
 
94
95
  test_via_to_sql
95
96
  end
96
97
 
97
98
  def test_write_binary
98
- data = File.read(File.join(File.dirname(__FILE__), '..', '..', '..', 'assets', 'example.log'))
99
+ data = File.read(File.join(__dir__, "..", "..", "..", "assets", "example.log"))
99
100
  assert(data.size > 1)
100
101
  record = ByteaDataType.create(payload: data)
101
- assert_not record.new_record?
102
+ assert_not_predicate record, :new_record?
102
103
  assert_equal(data, record.payload)
103
104
  assert_equal(data, ByteaDataType.where(id: record.id).first.payload)
104
105
  end
105
106
 
106
107
  def test_write_nil
107
108
  record = ByteaDataType.create(payload: nil)
108
- assert_not record.new_record?
109
- assert_equal(nil, record.payload)
110
- assert_equal(nil, ByteaDataType.where(id: record.id).first.payload)
109
+ assert_not_predicate record, :new_record?
110
+ assert_nil(record.payload)
111
+ assert_nil(ByteaDataType.where(id: record.id).first.payload)
111
112
  end
112
113
 
113
114
  class Serializer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "cases/helper"
2
4
 
3
5
  class PostgresqlCaseInsensitiveTest < ActiveRecord::PostgreSQLTestCase
@@ -5,22 +7,21 @@ class PostgresqlCaseInsensitiveTest < ActiveRecord::PostgreSQLTestCase
5
7
 
6
8
  def test_case_insensitiveness
7
9
  connection = ActiveRecord::Base.connection
8
- table = Default.arel_table
9
10
 
10
- column = Default.columns_hash["char1"]
11
- comparison = connection.case_insensitive_comparison table, :char1, column, nil
11
+ attr = Default.arel_table[:char1]
12
+ comparison = connection.case_insensitive_comparison(attr, nil)
12
13
  assert_match(/lower/i, comparison.to_sql)
13
14
 
14
- column = Default.columns_hash["char2"]
15
- comparison = connection.case_insensitive_comparison table, :char2, column, nil
15
+ attr = Default.arel_table[:char2]
16
+ comparison = connection.case_insensitive_comparison(attr, nil)
16
17
  assert_match(/lower/i, comparison.to_sql)
17
18
 
18
- column = Default.columns_hash["char3"]
19
- comparison = connection.case_insensitive_comparison table, :char3, column, nil
19
+ attr = Default.arel_table[:char3]
20
+ comparison = connection.case_insensitive_comparison(attr, nil)
20
21
  assert_match(/lower/i, comparison.to_sql)
21
22
 
22
- column = Default.columns_hash["multiline_default"]
23
- comparison = connection.case_insensitive_comparison table, :multiline_default, column, nil
23
+ attr = Default.arel_table[:multiline_default]
24
+ comparison = connection.case_insensitive_comparison(attr, nil)
24
25
  assert_match(/lower/i, comparison.to_sql)
25
26
  end
26
27
  end
@@ -1,4 +1,6 @@
1
- require 'cases/helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "cases/helper"
2
4
 
3
5
  module ActiveRecord
4
6
  class Migration
@@ -19,19 +21,19 @@ module ActiveRecord
19
21
 
20
22
  def test_change_string_to_date
21
23
  connection.change_column :strings, :somedate, :timestamp, using: 'CAST("somedate" AS timestamp)'
22
- assert_equal :datetime, connection.columns(:strings).find { |c| c.name == 'somedate' }.type
24
+ assert_equal :datetime, connection.columns(:strings).find { |c| c.name == "somedate" }.type
23
25
  end
24
26
 
25
27
  def test_change_type_with_symbol
26
28
  connection.change_column :strings, :somedate, :timestamp, cast_as: :timestamp
27
- assert_equal :datetime, connection.columns(:strings).find { |c| c.name == 'somedate' }.type
29
+ assert_equal :datetime, connection.columns(:strings).find { |c| c.name == "somedate" }.type
28
30
  end
29
31
 
30
32
  def test_change_type_with_array
31
33
  connection.change_column :strings, :somedate, :timestamp, array: true, cast_as: :timestamp
32
- column = connection.columns(:strings).find { |c| c.name == 'somedate' }
34
+ column = connection.columns(:strings).find { |c| c.name == "somedate" }
33
35
  assert_equal :datetime, column.type
34
- assert column.array?
36
+ assert_predicate column, :array?
35
37
  end
36
38
  end
37
39
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "cases/helper"
2
4
  require "ipaddr"
3
5
 
@@ -1,78 +1,78 @@
1
- require 'cases/helper'
2
- require 'support/schema_dumping_helper'
3
-
4
- if ActiveRecord::Base.connection.supports_extensions?
5
- class PostgresqlCitextTest < ActiveRecord::PostgreSQLTestCase
6
- include SchemaDumpingHelper
7
- class Citext < ActiveRecord::Base
8
- self.table_name = 'citexts'
9
- end
1
+ # frozen_string_literal: true
10
2
 
11
- def setup
12
- @connection = ActiveRecord::Base.connection
3
+ require "cases/helper"
4
+ require "support/schema_dumping_helper"
13
5
 
14
- enable_extension!('citext', @connection)
6
+ class PostgresqlCitextTest < ActiveRecord::PostgreSQLTestCase
7
+ include SchemaDumpingHelper
8
+ class Citext < ActiveRecord::Base
9
+ self.table_name = "citexts"
10
+ end
15
11
 
16
- @connection.create_table('citexts') do |t|
17
- t.citext 'cival'
18
- end
19
- end
12
+ def setup
13
+ @connection = ActiveRecord::Base.connection
20
14
 
21
- teardown do
22
- @connection.drop_table 'citexts', if_exists: true
23
- disable_extension!('citext', @connection)
24
- end
15
+ enable_extension!("citext", @connection)
25
16
 
26
- def test_citext_enabled
27
- assert @connection.extension_enabled?('citext')
17
+ @connection.create_table("citexts") do |t|
18
+ t.citext "cival"
28
19
  end
20
+ end
29
21
 
30
- def test_column
31
- column = Citext.columns_hash['cival']
32
- assert_equal :citext, column.type
33
- assert_equal 'citext', column.sql_type
34
- assert_not column.array?
22
+ teardown do
23
+ @connection.drop_table "citexts", if_exists: true
24
+ disable_extension!("citext", @connection)
25
+ end
35
26
 
36
- type = Citext.type_for_attribute('cival')
37
- assert_not type.binary?
38
- end
27
+ def test_citext_enabled
28
+ assert @connection.extension_enabled?("citext")
29
+ end
39
30
 
40
- def test_change_table_supports_json
41
- @connection.transaction do
42
- @connection.change_table('citexts') do |t|
43
- t.citext 'username'
44
- end
45
- Citext.reset_column_information
46
- column = Citext.columns_hash['username']
47
- assert_equal :citext, column.type
31
+ def test_column
32
+ column = Citext.columns_hash["cival"]
33
+ assert_equal :citext, column.type
34
+ assert_equal "citext", column.sql_type
35
+ assert_not_predicate column, :array?
48
36
 
49
- raise ActiveRecord::Rollback # reset the schema change
37
+ type = Citext.type_for_attribute("cival")
38
+ assert_not_predicate type, :binary?
39
+ end
40
+
41
+ def test_change_table_supports_json
42
+ @connection.transaction do
43
+ @connection.change_table("citexts") do |t|
44
+ t.citext "username"
50
45
  end
51
- ensure
52
46
  Citext.reset_column_information
47
+ column = Citext.columns_hash["username"]
48
+ assert_equal :citext, column.type
49
+
50
+ raise ActiveRecord::Rollback # reset the schema change
53
51
  end
52
+ ensure
53
+ Citext.reset_column_information
54
+ end
54
55
 
55
- def test_write
56
- x = Citext.new(cival: 'Some CI Text')
57
- x.save!
58
- citext = Citext.first
59
- assert_equal "Some CI Text", citext.cival
56
+ def test_write
57
+ x = Citext.new(cival: "Some CI Text")
58
+ x.save!
59
+ citext = Citext.first
60
+ assert_equal "Some CI Text", citext.cival
60
61
 
61
- citext.cival = "Some NEW CI Text"
62
- citext.save!
62
+ citext.cival = "Some NEW CI Text"
63
+ citext.save!
63
64
 
64
- assert_equal "Some NEW CI Text", citext.reload.cival
65
- end
65
+ assert_equal "Some NEW CI Text", citext.reload.cival
66
+ end
66
67
 
67
- def test_select_case_insensitive
68
- @connection.execute "insert into citexts (cival) values('Cased Text')"
69
- x = Citext.where(cival: 'cased text').first
70
- assert_equal 'Cased Text', x.cival
71
- end
68
+ def test_select_case_insensitive
69
+ @connection.execute "insert into citexts (cival) values('Cased Text')"
70
+ x = Citext.where(cival: "cased text").first
71
+ assert_equal "Cased Text", x.cival
72
+ end
72
73
 
73
- def test_schema_dump_with_shorthand
74
- output = dump_table_schema("citexts")
75
- assert_match %r[t\.citext "cival"], output
76
- end
74
+ def test_schema_dump_with_shorthand
75
+ output = dump_table_schema("citexts")
76
+ assert_match %r[t\.citext "cival"], output
77
77
  end
78
78
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "cases/helper"
2
- require 'support/schema_dumping_helper'
4
+ require "support/schema_dumping_helper"
3
5
 
4
6
  class PostgresqlCollationTest < ActiveRecord::PostgreSQLTestCase
5
7
  include SchemaDumpingHelper
@@ -7,8 +9,8 @@ class PostgresqlCollationTest < ActiveRecord::PostgreSQLTestCase
7
9
  def setup
8
10
  @connection = ActiveRecord::Base.connection
9
11
  @connection.create_table :postgresql_collations, force: true do |t|
10
- t.string :string_c, collation: 'C'
11
- t.text :text_posix, collation: 'POSIX'
12
+ t.string :string_c, collation: "C"
13
+ t.text :text_posix, collation: "POSIX"
12
14
  end
13
15
  end
14
16
 
@@ -17,37 +19,37 @@ class PostgresqlCollationTest < ActiveRecord::PostgreSQLTestCase
17
19
  end
18
20
 
19
21
  test "string column with collation" do
20
- column = @connection.columns(:postgresql_collations).find { |c| c.name == 'string_c' }
22
+ column = @connection.columns(:postgresql_collations).find { |c| c.name == "string_c" }
21
23
  assert_equal :string, column.type
22
- assert_equal 'C', column.collation
24
+ assert_equal "C", column.collation
23
25
  end
24
26
 
25
27
  test "text column with collation" do
26
- column = @connection.columns(:postgresql_collations).find { |c| c.name == 'text_posix' }
28
+ column = @connection.columns(:postgresql_collations).find { |c| c.name == "text_posix" }
27
29
  assert_equal :text, column.type
28
- assert_equal 'POSIX', column.collation
30
+ assert_equal "POSIX", column.collation
29
31
  end
30
32
 
31
33
  test "add column with collation" do
32
- @connection.add_column :postgresql_collations, :title, :string, collation: 'C'
34
+ @connection.add_column :postgresql_collations, :title, :string, collation: "C"
33
35
 
34
- column = @connection.columns(:postgresql_collations).find { |c| c.name == 'title' }
36
+ column = @connection.columns(:postgresql_collations).find { |c| c.name == "title" }
35
37
  assert_equal :string, column.type
36
- assert_equal 'C', column.collation
38
+ assert_equal "C", column.collation
37
39
  end
38
40
 
39
41
  test "change column with collation" do
40
42
  @connection.add_column :postgresql_collations, :description, :string
41
- @connection.change_column :postgresql_collations, :description, :text, collation: 'POSIX'
43
+ @connection.change_column :postgresql_collations, :description, :text, collation: "POSIX"
42
44
 
43
- column = @connection.columns(:postgresql_collations).find { |c| c.name == 'description' }
45
+ column = @connection.columns(:postgresql_collations).find { |c| c.name == "description" }
44
46
  assert_equal :text, column.type
45
- assert_equal 'POSIX', column.collation
47
+ assert_equal "POSIX", column.collation
46
48
  end
47
49
 
48
50
  test "schema dump includes collation" do
49
51
  output = dump_table_schema("postgresql_collations")
50
- assert_match %r{t.string\s+"string_c",\s+collation: "C"$}, output
51
- assert_match %r{t.text\s+"text_posix",\s+collation: "POSIX"$}, output
52
+ assert_match %r{t\.string\s+"string_c",\s+collation: "C"$}, output
53
+ assert_match %r{t\.text\s+"text_posix",\s+collation: "POSIX"$}, output
52
54
  end
53
55
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "cases/helper"
2
- require 'support/connection_helper'
4
+ require "support/connection_helper"
3
5
 
4
6
  module PostgresqlCompositeBehavior
5
7
  include ConnectionHelper
@@ -13,14 +15,14 @@ module PostgresqlCompositeBehavior
13
15
 
14
16
  @connection = ActiveRecord::Base.connection
15
17
  @connection.transaction do
16
- @connection.execute <<-SQL
17
- CREATE TYPE full_address AS
18
- (
19
- city VARCHAR(90),
20
- street VARCHAR(90)
21
- );
22
- SQL
23
- @connection.create_table('postgresql_composites') do |t|
18
+ @connection.execute <<~SQL
19
+ CREATE TYPE full_address AS
20
+ (
21
+ city VARCHAR(90),
22
+ street VARCHAR(90)
23
+ );
24
+ SQL
25
+ @connection.create_table("postgresql_composites") do |t|
24
26
  t.column :address, :full_address
25
27
  end
26
28
  end
@@ -29,8 +31,8 @@ module PostgresqlCompositeBehavior
29
31
  def teardown
30
32
  super
31
33
 
32
- @connection.drop_table 'postgresql_composites', if_exists: true
33
- @connection.execute 'DROP TYPE IF EXISTS full_address'
34
+ @connection.drop_table "postgresql_composites", if_exists: true
35
+ @connection.execute "DROP TYPE IF EXISTS full_address"
34
36
  reset_connection
35
37
  PostgresqlComposite.reset_column_information
36
38
  end
@@ -49,10 +51,10 @@ class PostgresqlCompositeTest < ActiveRecord::PostgreSQLTestCase
49
51
  column = PostgresqlComposite.columns_hash["address"]
50
52
  assert_nil column.type
51
53
  assert_equal "full_address", column.sql_type
52
- assert_not column.array?
54
+ assert_not_predicate column, :array?
53
55
 
54
56
  type = PostgresqlComposite.type_for_attribute("address")
55
- assert_not type.binary?
57
+ assert_not_predicate type, :binary?
56
58
  end
57
59
 
58
60
  def test_composite_mapping
@@ -69,12 +71,12 @@ class PostgresqlCompositeTest < ActiveRecord::PostgreSQLTestCase
69
71
  end
70
72
 
71
73
  private
72
- def ensure_warning_is_issued
73
- warning = capture(:stderr) do
74
- PostgresqlComposite.columns_hash
74
+ def ensure_warning_is_issued
75
+ warning = capture(:stderr) do
76
+ PostgresqlComposite.columns_hash
77
+ end
78
+ assert_match(/unknown OID \d+: failed to recognize type of 'address'\. It will be treated as String\./, warning)
75
79
  end
76
- assert_match(/unknown OID \d+: failed to recognize type of 'address'\. It will be treated as String\./, warning)
77
- end
78
80
  end
79
81
 
80
82
  class PostgresqlCompositeWithCustomOIDTest < ActiveRecord::PostgreSQLTestCase
@@ -104,17 +106,17 @@ class PostgresqlCompositeWithCustomOIDTest < ActiveRecord::PostgreSQLTestCase
104
106
  def setup
105
107
  super
106
108
 
107
- @connection.type_map.register_type "full_address", FullAddressType.new
109
+ @connection.send(:type_map).register_type "full_address", FullAddressType.new
108
110
  end
109
111
 
110
112
  def test_column
111
113
  column = PostgresqlComposite.columns_hash["address"]
112
114
  assert_equal :full_address, column.type
113
115
  assert_equal "full_address", column.sql_type
114
- assert_not column.array?
116
+ assert_not_predicate column, :array?
115
117
 
116
118
  type = PostgresqlComposite.type_for_attribute("address")
117
- assert_not type.binary?
119
+ assert_not_predicate type, :binary?
118
120
  end
119
121
 
120
122
  def test_composite_mapping
@@ -126,7 +128,7 @@ class PostgresqlCompositeWithCustomOIDTest < ActiveRecord::PostgreSQLTestCase
126
128
  composite.address = FullAddress.new("Paris", "Rue Basse")
127
129
  composite.save!
128
130
 
129
- assert_equal 'Paris', composite.reload.address.city
130
- assert_equal 'Rue Basse', composite.reload.address.street
131
+ assert_equal "Paris", composite.reload.address.city
132
+ assert_equal "Rue Basse", composite.reload.address.street
131
133
  end
132
134
  end