ibm_db 3.0.5-x86-mingw32 → 4.0.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 (586) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +4 -0
  3. data/LICENSE +1 -1
  4. data/MANIFEST +14 -14
  5. data/ParameterizedQueries README +6 -6
  6. data/README +208 -225
  7. data/ext/Makefile.nt32 +181 -181
  8. data/ext/Makefile.nt32.191 +212 -212
  9. data/ext/extconf.rb +291 -291
  10. data/ext/ibm_db.c +11887 -11887
  11. data/ext/ruby_ibm_db.h +241 -241
  12. data/ext/ruby_ibm_db_cli.c +866 -866
  13. data/ext/ruby_ibm_db_cli.h +500 -500
  14. data/init.rb +41 -41
  15. data/lib/IBM_DB.rb +27 -27
  16. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3452 -3177
  17. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -2
  18. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  19. data/lib/mswin32/ibm_db.rb +91 -123
  20. data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
  21. data/test/active_record/connection_adapters/fake_adapter.rb +49 -46
  22. data/test/assets/example.log +1 -1
  23. data/test/assets/test.txt +1 -1
  24. data/test/cases/adapter_test.rb +351 -276
  25. data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
  26. data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
  27. data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
  28. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
  29. data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
  30. data/test/cases/adapters/mysql2/connection_test.rb +210 -0
  31. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
  32. data/test/cases/adapters/mysql2/enum_test.rb +26 -0
  33. data/test/cases/adapters/mysql2/explain_test.rb +21 -0
  34. data/test/cases/adapters/mysql2/json_test.rb +195 -0
  35. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
  36. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  37. data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
  38. data/test/cases/adapters/mysql2/schema_test.rb +126 -0
  39. data/test/cases/adapters/mysql2/sp_test.rb +36 -0
  40. data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
  41. data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
  42. data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
  43. data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
  44. data/test/cases/adapters/postgresql/array_test.rb +339 -0
  45. data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
  46. data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
  47. data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
  48. data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
  49. data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
  50. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  51. data/test/cases/adapters/postgresql/collation_test.rb +53 -0
  52. data/test/cases/adapters/postgresql/composite_test.rb +132 -0
  53. data/test/cases/adapters/postgresql/connection_test.rb +257 -0
  54. data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
  55. data/test/cases/adapters/postgresql/domain_test.rb +47 -0
  56. data/test/cases/adapters/postgresql/enum_test.rb +91 -0
  57. data/test/cases/adapters/postgresql/explain_test.rb +20 -0
  58. data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
  59. data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
  60. data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
  61. data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
  62. data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
  63. data/test/cases/adapters/postgresql/integer_test.rb +25 -0
  64. data/test/cases/adapters/postgresql/json_test.rb +237 -0
  65. data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
  66. data/test/cases/adapters/postgresql/money_test.rb +96 -0
  67. data/test/cases/adapters/postgresql/network_test.rb +94 -0
  68. data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
  69. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
  70. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  71. data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
  72. data/test/cases/adapters/postgresql/range_test.rb +343 -0
  73. data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
  74. data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
  75. data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
  76. data/test/cases/adapters/postgresql/schema_test.rb +597 -0
  77. data/test/cases/adapters/postgresql/serial_test.rb +154 -0
  78. data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
  79. data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
  80. data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
  81. data/test/cases/adapters/postgresql/utils_test.rb +62 -0
  82. data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
  83. data/test/cases/adapters/postgresql/xml_test.rb +54 -0
  84. data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
  85. data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
  86. data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
  87. data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
  88. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
  89. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  90. data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
  91. data/test/cases/aggregations_test.rb +168 -158
  92. data/test/cases/ar_schema_test.rb +146 -161
  93. data/test/cases/associations/association_scope_test.rb +16 -21
  94. data/test/cases/associations/belongs_to_associations_test.rb +1141 -1029
  95. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
  96. data/test/cases/associations/callbacks_test.rb +190 -192
  97. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  98. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  99. data/test/cases/associations/eager_load_nested_include_test.rb +126 -128
  100. data/test/cases/associations/eager_singularization_test.rb +148 -148
  101. data/test/cases/associations/eager_test.rb +1514 -1429
  102. data/test/cases/associations/extension_test.rb +87 -82
  103. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -972
  104. data/test/cases/associations/has_many_associations_test.rb +2501 -2182
  105. data/test/cases/associations/has_many_through_associations_test.rb +1271 -1204
  106. data/test/cases/associations/has_one_associations_test.rb +707 -610
  107. data/test/cases/associations/has_one_through_associations_test.rb +383 -380
  108. data/test/cases/associations/inner_join_association_test.rb +139 -139
  109. data/test/cases/associations/inverse_associations_test.rb +733 -706
  110. data/test/cases/associations/join_model_test.rb +777 -754
  111. data/test/cases/associations/left_outer_join_association_test.rb +88 -0
  112. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  113. data/test/cases/associations/required_test.rb +102 -82
  114. data/test/cases/associations_test.rb +385 -380
  115. data/test/cases/attribute_decorators_test.rb +125 -125
  116. data/test/cases/attribute_methods/read_test.rb +60 -60
  117. data/test/cases/attribute_methods_test.rb +1009 -952
  118. data/test/cases/attribute_set_test.rb +270 -210
  119. data/test/cases/attribute_test.rb +246 -180
  120. data/test/cases/attributes_test.rb +253 -136
  121. data/test/cases/autosave_association_test.rb +1708 -1595
  122. data/test/cases/base_test.rb +1713 -1664
  123. data/test/cases/batches_test.rb +489 -212
  124. data/test/cases/binary_test.rb +44 -52
  125. data/test/cases/bind_parameter_test.rb +110 -100
  126. data/test/cases/cache_key_test.rb +25 -0
  127. data/test/cases/calculations_test.rb +798 -646
  128. data/test/cases/callbacks_test.rb +636 -543
  129. data/test/cases/clone_test.rb +40 -40
  130. data/test/cases/coders/json_test.rb +15 -0
  131. data/test/cases/coders/yaml_column_test.rb +63 -63
  132. data/test/cases/collection_cache_key_test.rb +115 -0
  133. data/test/cases/column_alias_test.rb +17 -17
  134. data/test/cases/column_definition_test.rb +92 -123
  135. data/test/cases/comment_test.rb +143 -0
  136. data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -54
  137. data/test/cases/connection_adapters/connection_handler_test.rb +160 -53
  138. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  139. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +255 -293
  140. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -65
  141. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  142. data/test/cases/connection_adapters/schema_cache_test.rb +61 -56
  143. data/test/cases/connection_adapters/type_lookup_test.rb +118 -110
  144. data/test/cases/connection_management_test.rb +112 -122
  145. data/test/cases/connection_pool_test.rb +521 -346
  146. data/test/cases/connection_specification/resolver_test.rb +131 -116
  147. data/test/cases/core_test.rb +112 -112
  148. data/test/cases/counter_cache_test.rb +214 -209
  149. data/test/cases/custom_locking_test.rb +17 -17
  150. data/test/cases/database_statements_test.rb +34 -19
  151. data/test/cases/{invalid_date_test.rb → date_test.rb} +44 -32
  152. data/test/cases/date_time_precision_test.rb +106 -0
  153. data/test/cases/date_time_test.rb +61 -61
  154. data/test/cases/defaults_test.rb +218 -223
  155. data/test/cases/dirty_test.rb +763 -785
  156. data/test/cases/disconnected_test.rb +30 -28
  157. data/test/cases/dup_test.rb +157 -157
  158. data/test/cases/enum_test.rb +444 -290
  159. data/test/cases/errors_test.rb +16 -0
  160. data/test/cases/explain_subscriber_test.rb +64 -64
  161. data/test/cases/explain_test.rb +87 -76
  162. data/test/cases/finder_respond_to_test.rb +60 -60
  163. data/test/cases/finder_test.rb +1294 -1169
  164. data/test/cases/fixture_set/file_test.rb +156 -138
  165. data/test/cases/fixtures_test.rb +988 -908
  166. data/test/cases/forbidden_attributes_protection_test.rb +165 -99
  167. data/test/cases/habtm_destroy_order_test.rb +61 -61
  168. data/test/cases/helper.rb +204 -210
  169. data/test/cases/hot_compatibility_test.rb +142 -54
  170. data/test/cases/i18n_test.rb +45 -45
  171. data/test/cases/inheritance_test.rb +606 -375
  172. data/test/cases/integration_test.rb +155 -139
  173. data/test/cases/invalid_connection_test.rb +24 -22
  174. data/test/cases/invertible_migration_test.rb +387 -295
  175. data/test/cases/json_serialization_test.rb +311 -302
  176. data/test/cases/locking_test.rb +493 -477
  177. data/test/cases/log_subscriber_test.rb +225 -136
  178. data/test/cases/migration/change_schema_test.rb +458 -512
  179. data/test/cases/migration/change_table_test.rb +256 -224
  180. data/test/cases/migration/column_attributes_test.rb +176 -192
  181. data/test/cases/migration/column_positioning_test.rb +56 -56
  182. data/test/cases/migration/columns_test.rb +310 -304
  183. data/test/cases/migration/command_recorder_test.rb +350 -305
  184. data/test/cases/migration/compatibility_test.rb +118 -0
  185. data/test/cases/migration/create_join_table_test.rb +157 -148
  186. data/test/cases/migration/foreign_key_test.rb +360 -328
  187. data/test/cases/migration/helper.rb +39 -39
  188. data/test/cases/migration/index_test.rb +218 -216
  189. data/test/cases/migration/logger_test.rb +36 -36
  190. data/test/cases/migration/pending_migrations_test.rb +52 -53
  191. data/test/cases/migration/references_foreign_key_test.rb +216 -169
  192. data/test/cases/migration/references_index_test.rb +101 -101
  193. data/test/cases/migration/references_statements_test.rb +136 -116
  194. data/test/cases/migration/rename_table_test.rb +93 -93
  195. data/test/cases/migration_test.rb +1157 -959
  196. data/test/cases/migrator_test.rb +470 -388
  197. data/test/cases/mixin_test.rb +68 -70
  198. data/test/cases/modules_test.rb +172 -173
  199. data/test/cases/multiparameter_attributes_test.rb +372 -350
  200. data/test/cases/multiple_db_test.rb +122 -115
  201. data/test/cases/nested_attributes_test.rb +1098 -1070
  202. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  203. data/test/cases/persistence_test.rb +1001 -909
  204. data/test/cases/pooled_connections_test.rb +81 -81
  205. data/test/cases/primary_keys_test.rb +376 -237
  206. data/test/cases/query_cache_test.rb +446 -326
  207. data/test/cases/quoting_test.rb +202 -156
  208. data/test/cases/readonly_test.rb +119 -118
  209. data/test/cases/reaper_test.rb +85 -85
  210. data/test/cases/reflection_test.rb +509 -463
  211. data/test/cases/relation/delegation_test.rb +63 -68
  212. data/test/cases/relation/merging_test.rb +157 -161
  213. data/test/cases/relation/mutation_test.rb +183 -165
  214. data/test/cases/relation/or_test.rb +92 -0
  215. data/test/cases/relation/predicate_builder_test.rb +16 -14
  216. data/test/cases/relation/record_fetch_warning_test.rb +40 -0
  217. data/test/cases/relation/where_chain_test.rb +105 -181
  218. data/test/cases/relation/where_clause_test.rb +182 -0
  219. data/test/cases/relation/where_test.rb +322 -300
  220. data/test/cases/relation_test.rb +328 -319
  221. data/test/cases/relations_test.rb +2026 -1815
  222. data/test/cases/reload_models_test.rb +22 -22
  223. data/test/cases/result_test.rb +90 -80
  224. data/test/cases/sanitize_test.rb +176 -83
  225. data/test/cases/schema_dumper_test.rb +457 -463
  226. data/test/cases/schema_loading_test.rb +52 -0
  227. data/test/cases/scoping/default_scoping_test.rb +528 -454
  228. data/test/cases/scoping/named_scoping_test.rb +561 -524
  229. data/test/cases/scoping/relation_scoping_test.rb +400 -357
  230. data/test/cases/secure_token_test.rb +32 -0
  231. data/test/cases/serialization_test.rb +104 -104
  232. data/test/cases/serialized_attribute_test.rb +364 -277
  233. data/test/cases/statement_cache_test.rb +136 -98
  234. data/test/cases/store_test.rb +195 -194
  235. data/test/cases/suppressor_test.rb +63 -0
  236. data/test/cases/tasks/database_tasks_test.rb +462 -398
  237. data/test/cases/tasks/mysql_rake_test.rb +345 -324
  238. data/test/cases/tasks/postgresql_rake_test.rb +304 -250
  239. data/test/cases/tasks/sqlite_rake_test.rb +220 -193
  240. data/test/cases/test_case.rb +131 -123
  241. data/test/cases/test_fixtures_test.rb +36 -0
  242. data/test/cases/time_precision_test.rb +102 -0
  243. data/test/cases/timestamp_test.rb +501 -467
  244. data/test/cases/touch_later_test.rb +121 -0
  245. data/test/cases/transaction_callbacks_test.rb +518 -452
  246. data/test/cases/transaction_isolation_test.rb +106 -106
  247. data/test/cases/transactions_test.rb +834 -817
  248. data/test/cases/type/adapter_specific_registry_test.rb +133 -0
  249. data/test/cases/type/date_time_test.rb +14 -0
  250. data/test/cases/type/integer_test.rb +27 -121
  251. data/test/cases/type/string_test.rb +22 -36
  252. data/test/cases/type/type_map_test.rb +177 -177
  253. data/test/cases/type_test.rb +39 -0
  254. data/test/cases/types_test.rb +24 -141
  255. data/test/cases/unconnected_test.rb +33 -33
  256. data/test/cases/validations/absence_validation_test.rb +73 -0
  257. data/test/cases/validations/association_validation_test.rb +97 -86
  258. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  259. data/test/cases/validations/i18n_validation_test.rb +86 -90
  260. data/test/cases/validations/length_validation_test.rb +79 -47
  261. data/test/cases/validations/presence_validation_test.rb +103 -68
  262. data/test/cases/validations/uniqueness_validation_test.rb +548 -457
  263. data/test/cases/validations_repair_helper.rb +19 -23
  264. data/test/cases/validations_test.rb +194 -165
  265. data/test/cases/view_test.rb +216 -119
  266. data/test/cases/yaml_serialization_test.rb +121 -126
  267. data/test/config.example.yml +97 -0
  268. data/test/config.rb +5 -5
  269. data/test/fixtures/accounts.yml +29 -29
  270. data/test/fixtures/admin/accounts.yml +2 -2
  271. data/test/fixtures/admin/users.yml +10 -10
  272. data/test/fixtures/author_addresses.original +11 -0
  273. data/test/fixtures/author_addresses.yml +17 -17
  274. data/test/fixtures/author_favorites.yml +3 -3
  275. data/test/fixtures/authors.original +17 -0
  276. data/test/fixtures/authors.yml +23 -23
  277. data/test/fixtures/bad_posts.yml +9 -0
  278. data/test/fixtures/binaries.yml +133 -133
  279. data/test/fixtures/books.yml +31 -11
  280. data/test/fixtures/bulbs.yml +5 -5
  281. data/test/fixtures/cars.yml +9 -9
  282. data/test/fixtures/categories.yml +19 -19
  283. data/test/fixtures/categories/special_categories.yml +9 -9
  284. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
  285. data/test/fixtures/categories_ordered.yml +7 -7
  286. data/test/fixtures/categories_posts.yml +31 -31
  287. data/test/fixtures/categorizations.yml +23 -23
  288. data/test/fixtures/clubs.yml +8 -8
  289. data/test/fixtures/collections.yml +3 -3
  290. data/test/fixtures/colleges.yml +3 -3
  291. data/test/fixtures/comments.yml +65 -65
  292. data/test/fixtures/companies.yml +67 -67
  293. data/test/fixtures/computers.yml +10 -10
  294. data/test/fixtures/content.yml +3 -0
  295. data/test/fixtures/content_positions.yml +3 -0
  296. data/test/fixtures/courses.yml +8 -8
  297. data/test/fixtures/customers.yml +25 -25
  298. data/test/fixtures/dashboards.yml +6 -6
  299. data/test/fixtures/dead_parrots.yml +5 -0
  300. data/test/fixtures/developers.yml +22 -22
  301. data/test/fixtures/developers_projects.yml +16 -16
  302. data/test/fixtures/dog_lovers.yml +7 -7
  303. data/test/fixtures/dogs.yml +4 -4
  304. data/test/fixtures/doubloons.yml +3 -3
  305. data/test/fixtures/edges.yml +5 -5
  306. data/test/fixtures/entrants.yml +14 -14
  307. data/test/fixtures/essays.yml +6 -6
  308. data/test/fixtures/faces.yml +11 -11
  309. data/test/fixtures/fk_test_has_fk.yml +3 -3
  310. data/test/fixtures/fk_test_has_pk.yml +1 -1
  311. data/test/fixtures/friendships.yml +4 -4
  312. data/test/fixtures/funny_jokes.yml +10 -10
  313. data/test/fixtures/interests.yml +33 -33
  314. data/test/fixtures/items.yml +3 -3
  315. data/test/fixtures/jobs.yml +7 -7
  316. data/test/fixtures/legacy_things.yml +3 -3
  317. data/test/fixtures/live_parrots.yml +4 -0
  318. data/test/fixtures/mateys.yml +4 -4
  319. data/test/fixtures/member_details.yml +8 -8
  320. data/test/fixtures/member_types.yml +6 -6
  321. data/test/fixtures/members.yml +11 -11
  322. data/test/fixtures/memberships.yml +34 -34
  323. data/test/fixtures/men.yml +5 -5
  324. data/test/fixtures/minimalistics.yml +2 -2
  325. data/test/fixtures/minivans.yml +5 -5
  326. data/test/fixtures/mixed_case_monkeys.yml +6 -6
  327. data/test/fixtures/mixins.yml +29 -29
  328. data/test/fixtures/movies.yml +7 -7
  329. data/test/fixtures/naked/yml/accounts.yml +1 -1
  330. data/test/fixtures/naked/yml/companies.yml +1 -1
  331. data/test/fixtures/naked/yml/courses.yml +1 -1
  332. data/test/fixtures/naked/yml/parrots.yml +2 -0
  333. data/test/fixtures/naked/yml/trees.yml +3 -0
  334. data/test/fixtures/nodes.yml +29 -0
  335. data/test/fixtures/organizations.yml +5 -5
  336. data/test/fixtures/other_comments.yml +6 -0
  337. data/test/fixtures/other_dogs.yml +2 -0
  338. data/test/fixtures/other_posts.yml +7 -0
  339. data/test/fixtures/other_topics.yml +42 -42
  340. data/test/fixtures/owners.yml +9 -9
  341. data/test/fixtures/parrots.yml +27 -27
  342. data/test/fixtures/parrots_pirates.yml +7 -7
  343. data/test/fixtures/people.yml +24 -24
  344. data/test/fixtures/peoples_treasures.yml +3 -3
  345. data/test/fixtures/pets.yml +19 -19
  346. data/test/fixtures/pirates.yml +15 -12
  347. data/test/fixtures/posts.yml +80 -80
  348. data/test/fixtures/price_estimates.yml +16 -7
  349. data/test/fixtures/products.yml +4 -4
  350. data/test/fixtures/projects.yml +7 -7
  351. data/test/fixtures/ratings.yml +14 -14
  352. data/test/fixtures/readers.yml +11 -11
  353. data/test/fixtures/references.yml +17 -17
  354. data/test/fixtures/reserved_words/distinct.yml +5 -5
  355. data/test/fixtures/reserved_words/distinct_select.yml +11 -11
  356. data/test/fixtures/reserved_words/group.yml +14 -14
  357. data/test/fixtures/reserved_words/select.yml +8 -8
  358. data/test/fixtures/reserved_words/values.yml +7 -7
  359. data/test/fixtures/ships.yml +6 -6
  360. data/test/fixtures/speedometers.yml +8 -8
  361. data/test/fixtures/sponsors.yml +12 -12
  362. data/test/fixtures/string_key_objects.yml +7 -7
  363. data/test/fixtures/subscribers.yml +10 -10
  364. data/test/fixtures/subscriptions.yml +12 -12
  365. data/test/fixtures/taggings.yml +78 -78
  366. data/test/fixtures/tags.yml +11 -11
  367. data/test/fixtures/tasks.yml +7 -7
  368. data/test/fixtures/teapots.yml +3 -3
  369. data/test/fixtures/to_be_linked/accounts.yml +2 -2
  370. data/test/fixtures/to_be_linked/users.yml +10 -10
  371. data/test/fixtures/topics.yml +49 -49
  372. data/test/fixtures/toys.yml +14 -14
  373. data/test/fixtures/traffic_lights.yml +9 -9
  374. data/test/fixtures/treasures.yml +10 -10
  375. data/test/fixtures/trees.yml +3 -0
  376. data/test/fixtures/uuid_children.yml +3 -3
  377. data/test/fixtures/uuid_parents.yml +2 -2
  378. data/test/fixtures/variants.yml +4 -4
  379. data/test/fixtures/vegetables.yml +19 -19
  380. data/test/fixtures/vertices.yml +3 -3
  381. data/test/fixtures/warehouse_things.yml +2 -2
  382. data/test/fixtures/zines.yml +5 -5
  383. data/test/migrations/10_urban/9_add_expressions.rb +11 -11
  384. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
  385. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
  386. data/test/migrations/missing/1000_people_have_middle_names.rb +9 -9
  387. data/test/migrations/missing/1_people_have_last_names.rb +9 -9
  388. data/test/migrations/missing/3_we_need_reminders.rb +12 -12
  389. data/test/migrations/missing/4_innocent_jointable.rb +12 -12
  390. data/test/migrations/rename/1_we_need_things.rb +11 -11
  391. data/test/migrations/rename/2_rename_things.rb +9 -9
  392. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
  393. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
  394. data/test/migrations/to_copy2/1_create_articles.rb +7 -7
  395. data/test/migrations/to_copy2/2_create_comments.rb +7 -7
  396. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
  397. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
  398. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
  399. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
  400. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
  401. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
  402. data/test/migrations/valid/2_we_need_reminders.rb +12 -12
  403. data/test/migrations/valid/3_innocent_jointable.rb +12 -12
  404. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
  405. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -12
  406. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -12
  407. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
  408. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
  409. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
  410. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
  411. data/test/models/admin.rb +5 -5
  412. data/test/models/admin/account.rb +3 -3
  413. data/test/models/admin/randomly_named_c1.rb +6 -2
  414. data/test/models/admin/user.rb +40 -40
  415. data/test/models/aircraft.rb +5 -4
  416. data/test/models/arunit2_model.rb +3 -3
  417. data/test/models/author.rb +209 -212
  418. data/test/models/auto_id.rb +4 -4
  419. data/test/models/autoloadable/extra_firm.rb +2 -2
  420. data/test/models/binary.rb +2 -2
  421. data/test/models/bird.rb +12 -12
  422. data/test/models/book.rb +23 -18
  423. data/test/models/boolean.rb +2 -2
  424. data/test/models/bulb.rb +52 -51
  425. data/test/models/cake_designer.rb +3 -3
  426. data/test/models/car.rb +29 -26
  427. data/test/models/carrier.rb +2 -2
  428. data/test/models/cat.rb +10 -0
  429. data/test/models/categorization.rb +19 -19
  430. data/test/models/category.rb +35 -35
  431. data/test/models/chef.rb +8 -7
  432. data/test/models/citation.rb +3 -3
  433. data/test/models/club.rb +25 -23
  434. data/test/models/college.rb +10 -10
  435. data/test/models/column.rb +3 -3
  436. data/test/models/column_name.rb +3 -3
  437. data/test/models/comment.rb +76 -64
  438. data/test/models/company.rb +230 -228
  439. data/test/models/company_in_module.rb +98 -98
  440. data/test/models/computer.rb +3 -3
  441. data/test/models/contact.rb +41 -41
  442. data/test/models/content.rb +40 -0
  443. data/test/models/contract.rb +20 -20
  444. data/test/models/country.rb +7 -7
  445. data/test/models/course.rb +6 -6
  446. data/test/models/customer.rb +83 -77
  447. data/test/models/customer_carrier.rb +14 -14
  448. data/test/models/dashboard.rb +3 -3
  449. data/test/models/default.rb +2 -2
  450. data/test/models/department.rb +4 -4
  451. data/test/models/developer.rb +274 -255
  452. data/test/models/dog.rb +5 -5
  453. data/test/models/dog_lover.rb +5 -5
  454. data/test/models/doubloon.rb +12 -12
  455. data/test/models/drink_designer.rb +3 -3
  456. data/test/models/edge.rb +5 -5
  457. data/test/models/electron.rb +5 -5
  458. data/test/models/engine.rb +4 -4
  459. data/test/models/entrant.rb +3 -3
  460. data/test/models/essay.rb +5 -5
  461. data/test/models/event.rb +3 -3
  462. data/test/models/eye.rb +37 -37
  463. data/test/models/face.rb +9 -9
  464. data/test/models/friendship.rb +6 -6
  465. data/test/models/guid.rb +2 -2
  466. data/test/models/guitar.rb +4 -0
  467. data/test/models/hotel.rb +11 -9
  468. data/test/models/image.rb +3 -3
  469. data/test/models/interest.rb +5 -5
  470. data/test/models/invoice.rb +4 -4
  471. data/test/models/item.rb +7 -7
  472. data/test/models/job.rb +7 -7
  473. data/test/models/joke.rb +7 -7
  474. data/test/models/keyboard.rb +3 -3
  475. data/test/models/legacy_thing.rb +3 -3
  476. data/test/models/lesson.rb +11 -11
  477. data/test/models/line_item.rb +3 -3
  478. data/test/models/liquid.rb +4 -4
  479. data/test/models/man.rb +11 -11
  480. data/test/models/matey.rb +4 -4
  481. data/test/models/member.rb +42 -41
  482. data/test/models/member_detail.rb +8 -7
  483. data/test/models/member_type.rb +3 -3
  484. data/test/models/membership.rb +35 -35
  485. data/test/models/mentor.rb +3 -0
  486. data/test/models/minimalistic.rb +2 -2
  487. data/test/models/minivan.rb +9 -9
  488. data/test/models/mixed_case_monkey.rb +3 -3
  489. data/test/models/mocktail_designer.rb +2 -0
  490. data/test/models/molecule.rb +6 -6
  491. data/test/models/movie.rb +5 -5
  492. data/test/models/node.rb +5 -0
  493. data/test/models/non_primary_key.rb +2 -0
  494. data/test/models/notification.rb +3 -0
  495. data/test/models/order.rb +4 -4
  496. data/test/models/organization.rb +14 -14
  497. data/test/models/other_dog.rb +5 -0
  498. data/test/models/owner.rb +37 -34
  499. data/test/models/parrot.rb +28 -29
  500. data/test/models/person.rb +142 -143
  501. data/test/models/personal_legacy_thing.rb +4 -4
  502. data/test/models/pet.rb +18 -15
  503. data/test/models/pet_treasure.rb +6 -0
  504. data/test/models/pirate.rb +92 -92
  505. data/test/models/possession.rb +3 -3
  506. data/test/models/post.rb +273 -264
  507. data/test/models/price_estimate.rb +4 -4
  508. data/test/models/professor.rb +5 -5
  509. data/test/models/project.rb +40 -31
  510. data/test/models/publisher.rb +2 -2
  511. data/test/models/publisher/article.rb +4 -4
  512. data/test/models/publisher/magazine.rb +3 -3
  513. data/test/models/randomly_named_c1.rb +1 -1
  514. data/test/models/rating.rb +4 -4
  515. data/test/models/reader.rb +23 -23
  516. data/test/models/recipe.rb +3 -0
  517. data/test/models/record.rb +2 -2
  518. data/test/models/reference.rb +22 -22
  519. data/test/models/reply.rb +61 -61
  520. data/test/models/ship.rb +39 -33
  521. data/test/models/ship_part.rb +8 -8
  522. data/test/models/shop.rb +17 -17
  523. data/test/models/shop_account.rb +6 -6
  524. data/test/models/speedometer.rb +6 -6
  525. data/test/models/sponsor.rb +7 -7
  526. data/test/models/string_key_object.rb +3 -3
  527. data/test/models/student.rb +4 -4
  528. data/test/models/subject.rb +16 -16
  529. data/test/models/subscriber.rb +8 -8
  530. data/test/models/subscription.rb +4 -4
  531. data/test/models/tag.rb +13 -7
  532. data/test/models/tagging.rb +13 -13
  533. data/test/models/task.rb +5 -5
  534. data/test/models/topic.rb +118 -124
  535. data/test/models/toy.rb +6 -6
  536. data/test/models/traffic_light.rb +4 -4
  537. data/test/models/treasure.rb +14 -14
  538. data/test/models/treaty.rb +7 -7
  539. data/test/models/tree.rb +3 -0
  540. data/test/models/tuning_peg.rb +4 -0
  541. data/test/models/tyre.rb +11 -11
  542. data/test/models/user.rb +14 -0
  543. data/test/models/uuid_child.rb +3 -3
  544. data/test/models/uuid_item.rb +6 -0
  545. data/test/models/uuid_parent.rb +3 -3
  546. data/test/models/vegetables.rb +24 -24
  547. data/test/models/vehicle.rb +6 -6
  548. data/test/models/vertex.rb +9 -9
  549. data/test/models/warehouse_thing.rb +5 -5
  550. data/test/models/wheel.rb +3 -3
  551. data/test/models/without_table.rb +3 -3
  552. data/test/models/zine.rb +3 -3
  553. data/test/schema/mysql2_specific_schema.rb +68 -58
  554. data/test/schema/oracle_specific_schema.rb +40 -43
  555. data/test/schema/postgresql_specific_schema.rb +114 -202
  556. data/test/schema/schema.rb +1057 -952
  557. data/test/schema/schema.rb.original +1057 -0
  558. data/test/schema/sqlite_specific_schema.rb +18 -22
  559. data/test/support/config.rb +43 -43
  560. data/test/support/connection.rb +23 -22
  561. data/test/support/connection_helper.rb +14 -14
  562. data/test/support/ddl_helper.rb +8 -8
  563. data/test/support/schema_dumping_helper.rb +20 -20
  564. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  565. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  566. metadata +129 -28
  567. data/lib/mswin32/rb19x/ibm_db.so +0 -0
  568. data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
  569. data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
  570. data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
  571. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
  572. data/test/cases/attribute_methods/serialization_test.rb +0 -29
  573. data/test/cases/migration/change_schema_test - Copy.rb +0 -448
  574. data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
  575. data/test/cases/migration/table_and_index_test.rb +0 -24
  576. data/test/cases/relation/where_test2.rb +0 -36
  577. data/test/cases/type/decimal_test.rb +0 -56
  578. data/test/cases/type/unsigned_integer_test.rb +0 -18
  579. data/test/cases/xml_serialization_test.rb +0 -457
  580. data/test/connections/native_ibm_db/connection.rb +0 -44
  581. data/test/fixtures/naked/csv/accounts.csv +0 -1
  582. data/test/schema/i5/ibm_db_specific_schema.rb +0 -137
  583. data/test/schema/ids/ibm_db_specific_schema.rb +0 -140
  584. data/test/schema/luw/ibm_db_specific_schema.rb +0 -137
  585. data/test/schema/mysql_specific_schema.rb +0 -70
  586. data/test/schema/zOS/ibm_db_specific_schema.rb +0 -208
@@ -1,12 +1,12 @@
1
- require "cases/helper"
2
-
3
- module ActiveRecord
4
- module ConnectionAdapters
5
- class ConnectionSpecificationTest < ActiveRecord::TestCase
6
- def test_dup_deep_copy_config
7
- spec = ConnectionSpecification.new({ :a => :b }, "bar")
8
- assert_not_equal(spec.config.object_id, spec.dup.config.object_id)
9
- end
10
- end
11
- end
12
- end
1
+ require "cases/helper"
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ class ConnectionSpecificationTest < ActiveRecord::TestCase
6
+ def test_dup_deep_copy_config
7
+ spec = ConnectionSpecification.new("primary", { :a => :b }, "bar")
8
+ assert_not_equal(spec.config.object_id, spec.dup.config.object_id)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,293 +1,255 @@
1
- require "cases/helper"
2
-
3
- module ActiveRecord
4
- module ConnectionAdapters
5
- class MergeAndResolveDefaultUrlConfigTest < ActiveRecord::TestCase
6
- def setup
7
- @previous_database_url = ENV.delete("DATABASE_URL")
8
- @previous_rack_env = ENV.delete("RACK_ENV")
9
- @previous_rails_env = ENV.delete("RAILS_ENV")
10
- end
11
-
12
- teardown do
13
- ENV["DATABASE_URL"] = @previous_database_url
14
- ENV["RACK_ENV"] = @previous_rack_env
15
- ENV["RAILS_ENV"] = @previous_rails_env
16
- end
17
-
18
- def resolve_config(config)
19
- ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig.new(config).resolve
20
- end
21
-
22
- def resolve_spec(spec, config)
23
- ConnectionSpecification::Resolver.new(resolve_config(config)).resolve(spec)
24
- end
25
-
26
- def test_resolver_with_database_uri_and_current_env_symbol_key
27
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
28
- config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
29
- actual = resolve_spec(:default_env, config)
30
- expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
31
- assert_equal expected, actual
32
- end
33
-
34
- def test_resolver_with_database_uri_and_current_env_symbol_key_and_rails_env
35
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
36
- ENV['RAILS_ENV'] = "foo"
37
-
38
- config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
39
- actual = resolve_spec(:foo, config)
40
- expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
41
- assert_equal expected, actual
42
- end
43
-
44
- def test_resolver_with_database_uri_and_current_env_symbol_key_and_rack_env
45
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
46
- ENV['RACK_ENV'] = "foo"
47
-
48
- config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
49
- actual = resolve_spec(:foo, config)
50
- expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
51
- assert_equal expected, actual
52
- end
53
-
54
- def test_resolver_with_database_uri_and_and_current_env_string_key
55
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
56
- config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
57
- actual = assert_deprecated { resolve_spec("default_env", config) }
58
- expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
59
- assert_equal expected, actual
60
- end
61
-
62
- def test_resolver_with_database_uri_and_and_current_env_string_key_and_rails_env
63
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
64
- ENV['RAILS_ENV'] = "foo"
65
-
66
- config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
67
- actual = assert_deprecated { resolve_spec("foo", config) }
68
- expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
69
- assert_equal expected, actual
70
- end
71
-
72
- def test_resolver_with_database_uri_and_and_current_env_string_key_and_rack_env
73
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
74
- ENV['RACK_ENV'] = "foo"
75
-
76
- config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
77
- actual = assert_deprecated { resolve_spec("foo", config) }
78
- expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
79
- assert_equal expected, actual
80
- end
81
-
82
- def test_resolver_with_database_uri_and_known_key
83
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
84
- config = { "production" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
85
- actual = resolve_spec(:production, config)
86
- expected = { "adapter"=>"not_postgres", "database"=>"not_foo", "host"=>"localhost" }
87
- assert_equal expected, actual
88
- end
89
-
90
- def test_resolver_with_database_uri_and_unknown_symbol_key
91
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
92
- config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
93
- assert_raises AdapterNotSpecified do
94
- resolve_spec(:production, config)
95
- end
96
- end
97
-
98
- def test_resolver_with_database_uri_and_unknown_string_key
99
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
100
- config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
101
- assert_deprecated do
102
- assert_raises AdapterNotSpecified do
103
- resolve_spec("production", config)
104
- end
105
- end
106
- end
107
-
108
- def test_resolver_with_database_uri_and_supplied_url
109
- ENV['DATABASE_URL'] = "not-postgres://not-localhost/not_foo"
110
- config = { "production" => { "adapter" => "also_not_postgres", "database" => "also_not_foo" } }
111
- actual = resolve_spec("postgres://localhost/foo", config)
112
- expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
113
- assert_equal expected, actual
114
- end
115
-
116
- def test_jdbc_url
117
- config = { "production" => { "url" => "jdbc:postgres://localhost/foo" } }
118
- actual = resolve_config(config)
119
- assert_equal config, actual
120
- end
121
-
122
- def test_environment_does_not_exist_in_config_url_does_exist
123
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
124
- config = { "not_default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
125
- actual = resolve_config(config)
126
- expect_prod = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
127
- assert_equal expect_prod, actual["default_env"]
128
- end
129
-
130
- def test_url_with_hyphenated_scheme
131
- ENV['DATABASE_URL'] = "ibm-db://localhost/foo"
132
- config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
133
- actual = resolve_spec(:default_env, config)
134
- expected = { "adapter"=>"ibm_db", "database"=>"foo", "host"=>"localhost" }
135
- assert_equal expected, actual
136
- end
137
-
138
- def test_string_connection
139
- config = { "default_env" => "postgres://localhost/foo" }
140
- actual = resolve_config(config)
141
- expected = { "default_env" =>
142
- { "adapter" => "postgresql",
143
- "database" => "foo",
144
- "host" => "localhost"
145
- }
146
- }
147
- assert_equal expected, actual
148
- end
149
-
150
- def test_url_sub_key
151
- config = { "default_env" => { "url" => "postgres://localhost/foo" } }
152
- actual = resolve_config(config)
153
- expected = { "default_env" =>
154
- { "adapter" => "postgresql",
155
- "database" => "foo",
156
- "host" => "localhost"
157
- }
158
- }
159
- assert_equal expected, actual
160
- end
161
-
162
- def test_hash
163
- config = { "production" => { "adapter" => "postgres", "database" => "foo" } }
164
- actual = resolve_config(config)
165
- assert_equal config, actual
166
- end
167
-
168
- def test_blank
169
- config = {}
170
- actual = resolve_config(config)
171
- assert_equal config, actual
172
- end
173
-
174
- def test_blank_with_database_url
175
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
176
-
177
- config = {}
178
- actual = resolve_config(config)
179
- expected = { "adapter" => "postgresql",
180
- "database" => "foo",
181
- "host" => "localhost" }
182
- assert_equal expected, actual["default_env"]
183
- assert_equal nil, actual["production"]
184
- assert_equal nil, actual["development"]
185
- assert_equal nil, actual["test"]
186
- assert_equal nil, actual[:default_env]
187
- assert_equal nil, actual[:production]
188
- assert_equal nil, actual[:development]
189
- assert_equal nil, actual[:test]
190
- end
191
-
192
- def test_blank_with_database_url_with_rails_env
193
- ENV['RAILS_ENV'] = "not_production"
194
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
195
-
196
- config = {}
197
- actual = resolve_config(config)
198
- expected = { "adapter" => "postgresql",
199
- "database" => "foo",
200
- "host" => "localhost" }
201
-
202
- assert_equal expected, actual["not_production"]
203
- assert_equal nil, actual["production"]
204
- assert_equal nil, actual["default_env"]
205
- assert_equal nil, actual["development"]
206
- assert_equal nil, actual["test"]
207
- assert_equal nil, actual[:default_env]
208
- assert_equal nil, actual[:not_production]
209
- assert_equal nil, actual[:production]
210
- assert_equal nil, actual[:development]
211
- assert_equal nil, actual[:test]
212
- end
213
-
214
- def test_blank_with_database_url_with_rack_env
215
- ENV['RACK_ENV'] = "not_production"
216
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
217
-
218
- config = {}
219
- actual = resolve_config(config)
220
- expected = { "adapter" => "postgresql",
221
- "database" => "foo",
222
- "host" => "localhost" }
223
-
224
- assert_equal expected, actual["not_production"]
225
- assert_equal nil, actual["production"]
226
- assert_equal nil, actual["default_env"]
227
- assert_equal nil, actual["development"]
228
- assert_equal nil, actual["test"]
229
- assert_equal nil, actual[:default_env]
230
- assert_equal nil, actual[:not_production]
231
- assert_equal nil, actual[:production]
232
- assert_equal nil, actual[:development]
233
- assert_equal nil, actual[:test]
234
- end
235
-
236
- def test_database_url_with_ipv6_host_and_port
237
- ENV['DATABASE_URL'] = "postgres://[::1]:5454/foo"
238
-
239
- config = {}
240
- actual = resolve_config(config)
241
- expected = { "adapter" => "postgresql",
242
- "database" => "foo",
243
- "host" => "::1",
244
- "port" => 5454 }
245
- assert_equal expected, actual["default_env"]
246
- end
247
-
248
- def test_url_sub_key_with_database_url
249
- ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
250
-
251
- config = { "default_env" => { "url" => "postgres://localhost/foo" } }
252
- actual = resolve_config(config)
253
- expected = { "default_env" =>
254
- { "adapter" => "postgresql",
255
- "database" => "foo",
256
- "host" => "localhost"
257
- }
258
- }
259
- assert_equal expected, actual
260
- end
261
-
262
- def test_merge_no_conflicts_with_database_url
263
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
264
-
265
- config = {"default_env" => { "pool" => "5" } }
266
- actual = resolve_config(config)
267
- expected = { "default_env" =>
268
- { "adapter" => "postgresql",
269
- "database" => "foo",
270
- "host" => "localhost",
271
- "pool" => "5"
272
- }
273
- }
274
- assert_equal expected, actual
275
- end
276
-
277
- def test_merge_conflicts_with_database_url
278
- ENV['DATABASE_URL'] = "postgres://localhost/foo"
279
-
280
- config = {"default_env" => { "adapter" => "NOT-POSTGRES", "database" => "NOT-FOO", "pool" => "5" } }
281
- actual = resolve_config(config)
282
- expected = { "default_env" =>
283
- { "adapter" => "postgresql",
284
- "database" => "foo",
285
- "host" => "localhost",
286
- "pool" => "5"
287
- }
288
- }
289
- assert_equal expected, actual
290
- end
291
- end
292
- end
293
- end
1
+ require "cases/helper"
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ class MergeAndResolveDefaultUrlConfigTest < ActiveRecord::TestCase
6
+ def setup
7
+ @previous_database_url = ENV.delete("DATABASE_URL")
8
+ @previous_rack_env = ENV.delete("RACK_ENV")
9
+ @previous_rails_env = ENV.delete("RAILS_ENV")
10
+ end
11
+
12
+ teardown do
13
+ ENV["DATABASE_URL"] = @previous_database_url
14
+ ENV["RACK_ENV"] = @previous_rack_env
15
+ ENV["RAILS_ENV"] = @previous_rails_env
16
+ end
17
+
18
+ def resolve_config(config)
19
+ ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig.new(config).resolve
20
+ end
21
+
22
+ def resolve_spec(spec, config)
23
+ ConnectionSpecification::Resolver.new(resolve_config(config)).resolve(spec)
24
+ end
25
+
26
+ def test_resolver_with_database_uri_and_current_env_symbol_key
27
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
28
+ config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
29
+ actual = resolve_spec(:default_env, config)
30
+ expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
31
+ assert_equal expected, actual
32
+ end
33
+
34
+ def test_resolver_with_database_uri_and_current_env_symbol_key_and_rails_env
35
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
36
+ ENV['RAILS_ENV'] = "foo"
37
+
38
+ config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
39
+ actual = resolve_spec(:foo, config)
40
+ expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
41
+ assert_equal expected, actual
42
+ end
43
+
44
+ def test_resolver_with_database_uri_and_current_env_symbol_key_and_rack_env
45
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
46
+ ENV['RACK_ENV'] = "foo"
47
+
48
+ config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
49
+ actual = resolve_spec(:foo, config)
50
+ expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
51
+ assert_equal expected, actual
52
+ end
53
+
54
+ def test_resolver_with_database_uri_and_known_key
55
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
56
+ config = { "production" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
57
+ actual = resolve_spec(:production, config)
58
+ expected = { "adapter"=>"not_postgres", "database"=>"not_foo", "host"=>"localhost" }
59
+ assert_equal expected, actual
60
+ end
61
+
62
+ def test_resolver_with_database_uri_and_unknown_symbol_key
63
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
64
+ config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
65
+ assert_raises AdapterNotSpecified do
66
+ resolve_spec(:production, config)
67
+ end
68
+ end
69
+
70
+ def test_resolver_with_database_uri_and_supplied_url
71
+ ENV['DATABASE_URL'] = "not-postgres://not-localhost/not_foo"
72
+ config = { "production" => { "adapter" => "also_not_postgres", "database" => "also_not_foo" } }
73
+ actual = resolve_spec("postgres://localhost/foo", config)
74
+ expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
75
+ assert_equal expected, actual
76
+ end
77
+
78
+ def test_jdbc_url
79
+ config = { "production" => { "url" => "jdbc:postgres://localhost/foo" } }
80
+ actual = resolve_config(config)
81
+ assert_equal config, actual
82
+ end
83
+
84
+ def test_environment_does_not_exist_in_config_url_does_exist
85
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
86
+ config = { "not_default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
87
+ actual = resolve_config(config)
88
+ expect_prod = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
89
+ assert_equal expect_prod, actual["default_env"]
90
+ end
91
+
92
+ def test_url_with_hyphenated_scheme
93
+ ENV['DATABASE_URL'] = "ibm-db://localhost/foo"
94
+ config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
95
+ actual = resolve_spec(:default_env, config)
96
+ expected = { "adapter"=>"ibm_db", "database"=>"foo", "host"=>"localhost" }
97
+ assert_equal expected, actual
98
+ end
99
+
100
+ def test_string_connection
101
+ config = { "default_env" => "postgres://localhost/foo" }
102
+ actual = resolve_config(config)
103
+ expected = { "default_env" =>
104
+ { "adapter" => "postgresql",
105
+ "database" => "foo",
106
+ "host" => "localhost"
107
+ }
108
+ }
109
+ assert_equal expected, actual
110
+ end
111
+
112
+ def test_url_sub_key
113
+ config = { "default_env" => { "url" => "postgres://localhost/foo" } }
114
+ actual = resolve_config(config)
115
+ expected = { "default_env" =>
116
+ { "adapter" => "postgresql",
117
+ "database" => "foo",
118
+ "host" => "localhost"
119
+ }
120
+ }
121
+ assert_equal expected, actual
122
+ end
123
+
124
+ def test_hash
125
+ config = { "production" => { "adapter" => "postgres", "database" => "foo" } }
126
+ actual = resolve_config(config)
127
+ assert_equal config, actual
128
+ end
129
+
130
+ def test_blank
131
+ config = {}
132
+ actual = resolve_config(config)
133
+ assert_equal config, actual
134
+ end
135
+
136
+ def test_blank_with_database_url
137
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
138
+
139
+ config = {}
140
+ actual = resolve_config(config)
141
+ expected = { "adapter" => "postgresql",
142
+ "database" => "foo",
143
+ "host" => "localhost" }
144
+ assert_equal expected, actual["default_env"]
145
+ assert_equal nil, actual["production"]
146
+ assert_equal nil, actual["development"]
147
+ assert_equal nil, actual["test"]
148
+ assert_equal nil, actual[:default_env]
149
+ assert_equal nil, actual[:production]
150
+ assert_equal nil, actual[:development]
151
+ assert_equal nil, actual[:test]
152
+ end
153
+
154
+ def test_blank_with_database_url_with_rails_env
155
+ ENV['RAILS_ENV'] = "not_production"
156
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
157
+
158
+ config = {}
159
+ actual = resolve_config(config)
160
+ expected = { "adapter" => "postgresql",
161
+ "database" => "foo",
162
+ "host" => "localhost" }
163
+
164
+ assert_equal expected, actual["not_production"]
165
+ assert_equal nil, actual["production"]
166
+ assert_equal nil, actual["default_env"]
167
+ assert_equal nil, actual["development"]
168
+ assert_equal nil, actual["test"]
169
+ assert_equal nil, actual[:default_env]
170
+ assert_equal nil, actual[:not_production]
171
+ assert_equal nil, actual[:production]
172
+ assert_equal nil, actual[:development]
173
+ assert_equal nil, actual[:test]
174
+ end
175
+
176
+ def test_blank_with_database_url_with_rack_env
177
+ ENV['RACK_ENV'] = "not_production"
178
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
179
+
180
+ config = {}
181
+ actual = resolve_config(config)
182
+ expected = { "adapter" => "postgresql",
183
+ "database" => "foo",
184
+ "host" => "localhost" }
185
+
186
+ assert_equal expected, actual["not_production"]
187
+ assert_equal nil, actual["production"]
188
+ assert_equal nil, actual["default_env"]
189
+ assert_equal nil, actual["development"]
190
+ assert_equal nil, actual["test"]
191
+ assert_equal nil, actual[:default_env]
192
+ assert_equal nil, actual[:not_production]
193
+ assert_equal nil, actual[:production]
194
+ assert_equal nil, actual[:development]
195
+ assert_equal nil, actual[:test]
196
+ end
197
+
198
+ def test_database_url_with_ipv6_host_and_port
199
+ ENV['DATABASE_URL'] = "postgres://[::1]:5454/foo"
200
+
201
+ config = {}
202
+ actual = resolve_config(config)
203
+ expected = { "adapter" => "postgresql",
204
+ "database" => "foo",
205
+ "host" => "::1",
206
+ "port" => 5454 }
207
+ assert_equal expected, actual["default_env"]
208
+ end
209
+
210
+ def test_url_sub_key_with_database_url
211
+ ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
212
+
213
+ config = { "default_env" => { "url" => "postgres://localhost/foo" } }
214
+ actual = resolve_config(config)
215
+ expected = { "default_env" =>
216
+ { "adapter" => "postgresql",
217
+ "database" => "foo",
218
+ "host" => "localhost"
219
+ }
220
+ }
221
+ assert_equal expected, actual
222
+ end
223
+
224
+ def test_merge_no_conflicts_with_database_url
225
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
226
+
227
+ config = {"default_env" => { "pool" => "5" } }
228
+ actual = resolve_config(config)
229
+ expected = { "default_env" =>
230
+ { "adapter" => "postgresql",
231
+ "database" => "foo",
232
+ "host" => "localhost",
233
+ "pool" => "5"
234
+ }
235
+ }
236
+ assert_equal expected, actual
237
+ end
238
+
239
+ def test_merge_conflicts_with_database_url
240
+ ENV['DATABASE_URL'] = "postgres://localhost/foo"
241
+
242
+ config = {"default_env" => { "adapter" => "NOT-POSTGRES", "database" => "NOT-FOO", "pool" => "5" } }
243
+ actual = resolve_config(config)
244
+ expected = { "default_env" =>
245
+ { "adapter" => "postgresql",
246
+ "database" => "foo",
247
+ "host" => "localhost",
248
+ "pool" => "5"
249
+ }
250
+ }
251
+ assert_equal expected, actual
252
+ end
253
+ end
254
+ end
255
+ end