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,192 +1,176 @@
1
- require "cases/migration/helper"
2
-
3
- module ActiveRecord
4
- class Migration
5
- class ColumnAttributesTest < ActiveRecord::TestCase
6
- include ActiveRecord::Migration::TestHelper
7
-
8
- self.use_transactional_fixtures = false
9
-
10
- def test_add_column_newline_default
11
- string = "foo\nbar"
12
- add_column 'test_models', 'command', :string, :default => string
13
- TestModel.reset_column_information
14
-
15
- assert_equal string, TestModel.new.command
16
- end
17
-
18
- def test_add_remove_single_field_using_string_arguments
19
- assert_no_column TestModel, :last_name
20
-
21
- add_column 'test_models', 'last_name', :string
22
- assert_column TestModel, :last_name
23
-
24
- remove_column 'test_models', 'last_name'
25
- assert_no_column TestModel, :last_name
26
- end
27
-
28
- def test_add_remove_single_field_using_symbol_arguments
29
- assert_no_column TestModel, :last_name
30
-
31
- add_column :test_models, :last_name, :string
32
- assert_column TestModel, :last_name
33
-
34
- remove_column :test_models, :last_name
35
- assert_no_column TestModel, :last_name
36
- end
37
-
38
- def test_add_column_without_limit
39
- # TODO: limit: nil should work with all adapters.
40
- skip "MySQL wrongly enforces a limit of 255" if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
41
- add_column :test_models, :description, :string, limit: nil
42
- TestModel.reset_column_information
43
- assert_nil TestModel.columns_hash["description"].limit
44
- end
45
-
46
- if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
47
- def test_unabstracted_database_dependent_types
48
- add_column :test_models, :intelligence_quotient, :tinyint
49
- TestModel.reset_column_information
50
- assert_match(/tinyint/, TestModel.columns_hash['intelligence_quotient'].sql_type)
51
- end
52
- end
53
-
54
- unless current_adapter?(:SQLite3Adapter)
55
- # We specifically do a manual INSERT here, and then test only the SELECT
56
- # functionality. This allows us to more easily catch INSERT being broken,
57
- # but SELECT actually working fine.
58
- def test_native_decimal_insert_manual_vs_automatic
59
- correct_value = '0012345678901234567890.0123456789'.to_d
60
-
61
- connection.add_column "test_models", "wealth", :decimal, :precision => '30', :scale => '10'
62
-
63
- # Do a manual insertion
64
- if current_adapter?(:OracleAdapter)
65
- connection.execute "insert into test_models (id, wealth) values (people_seq.nextval, 12345678901234567890.0123456789)"
66
- elsif current_adapter?(:MysqlAdapter) && Mysql.client_version < 50003 #before MySQL 5.0.3 decimals stored as strings
67
- connection.execute "insert into test_models (wealth) values ('12345678901234567890.0123456789')"
68
- elsif current_adapter?(:PostgreSQLAdapter)
69
- connection.execute "insert into test_models (wealth) values (12345678901234567890.0123456789)"
70
- elsif current_adapter?(:IBM_DBAdapter)
71
- Person.connection.execute "insert into people (wealth, created_at, updated_at, lock_version, first_name) values (12345678901234567890.0123456789, CURRENT TIMESTAMP, CURRENT TIMESTAMP, 0, 'Jim')"
72
- else
73
- connection.execute "insert into test_models (wealth) values (12345678901234567890.0123456789)"
74
- end
75
-
76
- # SELECT
77
- row = TestModel.first
78
- assert_kind_of BigDecimal, row.wealth
79
-
80
- # If this assert fails, that means the SELECT is broken!
81
- unless current_adapter?(:SQLite3Adapter)
82
- assert_equal correct_value, row.wealth
83
- end
84
-
85
- # Reset to old state
86
- TestModel.delete_all
87
-
88
- # Now use the Rails insertion
89
- unless current_adapter?(:IBM_DBAdapter)
90
- assert_nothing_raised { Person.create :wealth => BigDecimal.new("12345678901234567890.0123456789") }
91
- else
92
- # First_name is a not null column, hence ensure a value is specified
93
- assert_nothing_raised { Person.create ({:wealth => BigDecimal.new("12345678901234567890.0123456789"), :first_name => "James"}) }
94
- end
95
-
96
- # SELECT
97
- row = TestModel.first
98
- assert_kind_of BigDecimal, row.wealth
99
-
100
- # If these asserts fail, that means the INSERT (create function, or cast to SQL) is broken!
101
- assert_equal correct_value, row.wealth
102
- end
103
- end
104
-
105
- def test_add_column_with_precision_and_scale
106
- connection.add_column 'test_models', 'wealth', :decimal, :precision => 9, :scale => 7
107
-
108
- wealth_column = TestModel.columns_hash['wealth']
109
- assert_equal 9, wealth_column.precision
110
- assert_equal 7, wealth_column.scale
111
- end
112
-
113
- if current_adapter?(:SQLite3Adapter)
114
- def test_change_column_preserve_other_column_precision_and_scale
115
- connection.add_column 'test_models', 'last_name', :string
116
- connection.add_column 'test_models', 'wealth', :decimal, :precision => 9, :scale => 7
117
-
118
- wealth_column = TestModel.columns_hash['wealth']
119
- assert_equal 9, wealth_column.precision
120
- assert_equal 7, wealth_column.scale
121
-
122
- connection.change_column 'test_models', 'last_name', :string, :null => false
123
- TestModel.reset_column_information
124
-
125
- wealth_column = TestModel.columns_hash['wealth']
126
- assert_equal 9, wealth_column.precision
127
- assert_equal 7, wealth_column.scale
128
- end
129
- end
130
-
131
- unless current_adapter?(:SQLite3Adapter)
132
- def test_native_types
133
- add_column "test_models", "first_name", :string
134
- add_column "test_models", "last_name", :string
135
- add_column "test_models", "bio", :text
136
- add_column "test_models", "age", :integer
137
- add_column "test_models", "height", :float
138
- add_column "test_models", "wealth", :decimal, :precision => '30', :scale => '10'
139
- add_column "test_models", "birthday", :datetime
140
- add_column "test_models", "favorite_day", :date
141
- add_column "test_models", "moment_of_truth", :datetime
142
- add_column "test_models", "male", :boolean
143
-
144
- TestModel.create :first_name => 'bob', :last_name => 'bobsen',
145
- :bio => "I was born ....", :age => 18, :height => 1.78,
146
- :wealth => BigDecimal.new("12345678901234567890.0123456789"),
147
- :birthday => 18.years.ago, :favorite_day => 10.days.ago,
148
- :moment_of_truth => "1782-10-10 21:40:18", :male => true
149
-
150
- bob = TestModel.first
151
- assert_equal 'bob', bob.first_name
152
- assert_equal 'bobsen', bob.last_name
153
- assert_equal "I was born ....", bob.bio
154
- assert_equal 18, bob.age
155
-
156
- # Test for 30 significant digits (beyond the 16 of float), 10 of them
157
- # after the decimal place.
158
-
159
- assert_equal BigDecimal.new("0012345678901234567890.0123456789"), bob.wealth
160
-
161
- assert_equal true, bob.male?
162
-
163
- assert_equal String, bob.first_name.class
164
- assert_equal String, bob.last_name.class
165
- assert_equal String, bob.bio.class
166
- assert_equal Fixnum, bob.age.class
167
- assert_equal Time, bob.birthday.class
168
-
169
- if current_adapter?(:OracleAdapter)
170
- # Oracle doesn't differentiate between date/time
171
- assert_equal Time, bob.favorite_day.class
172
- else
173
- assert_equal Date, bob.favorite_day.class
174
- end
175
-
176
- assert_instance_of TrueClass, bob.male?
177
- assert_kind_of BigDecimal, bob.wealth
178
- end
179
- end
180
-
181
- if current_adapter?(:MysqlAdapter, :Mysql2Adapter, :PostgreSQLAdapter)
182
- def test_out_of_range_limit_should_raise
183
- assert_raise(ActiveRecordError) { add_column :test_models, :integer_too_big, :integer, :limit => 10 }
184
-
185
- unless current_adapter?(:PostgreSQLAdapter)
186
- assert_raise(ActiveRecordError) { add_column :test_models, :text_too_big, :integer, :limit => 0xfffffffff }
187
- end
188
- end
189
- end
190
- end
191
- end
192
- end
1
+ require "cases/migration/helper"
2
+
3
+ module ActiveRecord
4
+ class Migration
5
+ class ColumnAttributesTest < ActiveRecord::TestCase
6
+ include ActiveRecord::Migration::TestHelper
7
+
8
+ self.use_transactional_tests = false
9
+
10
+ def test_add_column_newline_default
11
+ string = "foo\nbar"
12
+ add_column 'test_models', 'command', :string, :default => string
13
+ TestModel.reset_column_information
14
+
15
+ assert_equal string, TestModel.new.command
16
+ end
17
+
18
+ def test_add_remove_single_field_using_string_arguments
19
+ assert_no_column TestModel, :last_name
20
+
21
+ add_column 'test_models', 'last_name', :string
22
+ assert_column TestModel, :last_name
23
+
24
+ remove_column 'test_models', 'last_name'
25
+ assert_no_column TestModel, :last_name
26
+ end
27
+
28
+ def test_add_remove_single_field_using_symbol_arguments
29
+ assert_no_column TestModel, :last_name
30
+
31
+ add_column :test_models, :last_name, :string
32
+ assert_column TestModel, :last_name
33
+
34
+ remove_column :test_models, :last_name
35
+ assert_no_column TestModel, :last_name
36
+ end
37
+
38
+ def test_add_column_without_limit
39
+ # TODO: limit: nil should work with all adapters.
40
+ skip "MySQL wrongly enforces a limit of 255" if current_adapter?(:Mysql2Adapter)
41
+ add_column :test_models, :description, :string, limit: nil
42
+ TestModel.reset_column_information
43
+ assert_nil TestModel.columns_hash["description"].limit
44
+ end
45
+
46
+ if current_adapter?(:Mysql2Adapter)
47
+ def test_unabstracted_database_dependent_types
48
+ add_column :test_models, :intelligence_quotient, :tinyint
49
+ TestModel.reset_column_information
50
+ assert_match(/tinyint/, TestModel.columns_hash['intelligence_quotient'].sql_type)
51
+ end
52
+ end
53
+
54
+ unless current_adapter?(:SQLite3Adapter)
55
+ # We specifically do a manual INSERT here, and then test only the SELECT
56
+ # functionality. This allows us to more easily catch INSERT being broken,
57
+ # but SELECT actually working fine.
58
+ def test_native_decimal_insert_manual_vs_automatic
59
+ correct_value = '0012345678901234567890.0123456789'.to_d
60
+
61
+ connection.add_column "test_models", "wealth", :decimal, :precision => '30', :scale => '10'
62
+
63
+ # Do a manual insertion
64
+ if current_adapter?(:OracleAdapter)
65
+ connection.execute "insert into test_models (id, wealth) values (people_seq.nextval, 12345678901234567890.0123456789)"
66
+ elsif current_adapter?(:PostgreSQLAdapter)
67
+ connection.execute "insert into test_models (wealth) values (12345678901234567890.0123456789)"
68
+ else
69
+ connection.execute "insert into test_models (wealth) values (12345678901234567890.0123456789)"
70
+ end
71
+
72
+ # SELECT
73
+ row = TestModel.first
74
+ assert_kind_of BigDecimal, row.wealth
75
+
76
+ # If this assert fails, that means the SELECT is broken!
77
+ unless current_adapter?(:SQLite3Adapter)
78
+ assert_equal correct_value, row.wealth
79
+ end
80
+
81
+ # Reset to old state
82
+ TestModel.delete_all
83
+
84
+ # Now use the Rails insertion
85
+ TestModel.create :wealth => BigDecimal.new("12345678901234567890.0123456789")
86
+
87
+ # SELECT
88
+ row = TestModel.first
89
+ assert_kind_of BigDecimal, row.wealth
90
+
91
+ # If these asserts fail, that means the INSERT (create function, or cast to SQL) is broken!
92
+ assert_equal correct_value, row.wealth
93
+ end
94
+ end
95
+
96
+ def test_add_column_with_precision_and_scale
97
+ connection.add_column 'test_models', 'wealth', :decimal, :precision => 9, :scale => 7
98
+
99
+ wealth_column = TestModel.columns_hash['wealth']
100
+ assert_equal 9, wealth_column.precision
101
+ assert_equal 7, wealth_column.scale
102
+ end
103
+
104
+ if current_adapter?(:SQLite3Adapter)
105
+ def test_change_column_preserve_other_column_precision_and_scale
106
+ connection.add_column 'test_models', 'last_name', :string
107
+ connection.add_column 'test_models', 'wealth', :decimal, :precision => 9, :scale => 7
108
+
109
+ wealth_column = TestModel.columns_hash['wealth']
110
+ assert_equal 9, wealth_column.precision
111
+ assert_equal 7, wealth_column.scale
112
+
113
+ connection.change_column 'test_models', 'last_name', :string, :null => false
114
+ TestModel.reset_column_information
115
+
116
+ wealth_column = TestModel.columns_hash['wealth']
117
+ assert_equal 9, wealth_column.precision
118
+ assert_equal 7, wealth_column.scale
119
+ end
120
+ end
121
+
122
+ unless current_adapter?(:SQLite3Adapter)
123
+ def test_native_types
124
+ add_column "test_models", "first_name", :string
125
+ add_column "test_models", "last_name", :string
126
+ add_column "test_models", "bio", :text
127
+ add_column "test_models", "age", :integer
128
+ add_column "test_models", "height", :float
129
+ add_column "test_models", "wealth", :decimal, :precision => '30', :scale => '10'
130
+ add_column "test_models", "birthday", :datetime
131
+ add_column "test_models", "favorite_day", :date
132
+ add_column "test_models", "moment_of_truth", :datetime
133
+ add_column "test_models", "male", :boolean
134
+
135
+ TestModel.create :first_name => 'bob', :last_name => 'bobsen',
136
+ :bio => "I was born ....", :age => 18, :height => 1.78,
137
+ :wealth => BigDecimal.new("12345678901234567890.0123456789"),
138
+ :birthday => 18.years.ago, :favorite_day => 10.days.ago,
139
+ :moment_of_truth => "1782-10-10 21:40:18", :male => true
140
+
141
+ bob = TestModel.first
142
+ assert_equal 'bob', bob.first_name
143
+ assert_equal 'bobsen', bob.last_name
144
+ assert_equal "I was born ....", bob.bio
145
+ assert_equal 18, bob.age
146
+
147
+ # Test for 30 significant digits (beyond the 16 of float), 10 of them
148
+ # after the decimal place.
149
+
150
+ assert_equal BigDecimal.new("0012345678901234567890.0123456789"), bob.wealth
151
+
152
+ assert_equal true, bob.male?
153
+
154
+ assert_equal String, bob.first_name.class
155
+ assert_equal String, bob.last_name.class
156
+ assert_equal String, bob.bio.class
157
+ assert_kind_of Integer, bob.age
158
+ assert_equal Time, bob.birthday.class
159
+ assert_equal Date, bob.favorite_day.class
160
+ assert_instance_of TrueClass, bob.male?
161
+ assert_kind_of BigDecimal, bob.wealth
162
+ end
163
+ end
164
+
165
+ if current_adapter?(:Mysql2Adapter, :PostgreSQLAdapter)
166
+ def test_out_of_range_limit_should_raise
167
+ assert_raise(ActiveRecordError) { add_column :test_models, :integer_too_big, :integer, :limit => 10 }
168
+
169
+ unless current_adapter?(:PostgreSQLAdapter)
170
+ assert_raise(ActiveRecordError) { add_column :test_models, :text_too_big, :integer, :limit => 0xfffffffff }
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end
@@ -1,56 +1,56 @@
1
- require 'cases/helper'
2
-
3
- module ActiveRecord
4
- class Migration
5
- class ColumnPositioningTest < ActiveRecord::TestCase
6
- attr_reader :connection, :table_name
7
- alias :conn :connection
8
-
9
- def setup
10
- super
11
-
12
- @connection = ActiveRecord::Base.connection
13
-
14
- connection.create_table :testings, :id => false do |t|
15
- t.column :first, :integer
16
- t.column :second, :integer
17
- t.column :third, :integer
18
- end
19
- end
20
-
21
- teardown do
22
- connection.drop_table :testings rescue nil
23
- ActiveRecord::Base.primary_key_prefix_type = nil
24
- end
25
-
26
- if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
27
- def test_column_positioning
28
- assert_equal %w(first second third), conn.columns(:testings).map {|c| c.name }
29
- end
30
-
31
- def test_add_column_with_positioning
32
- conn.add_column :testings, :new_col, :integer
33
- assert_equal %w(first second third new_col), conn.columns(:testings).map {|c| c.name }
34
- end
35
-
36
- def test_add_column_with_positioning_first
37
- conn.add_column :testings, :new_col, :integer, :first => true
38
- assert_equal %w(new_col first second third), conn.columns(:testings).map {|c| c.name }
39
- end
40
-
41
- def test_add_column_with_positioning_after
42
- conn.add_column :testings, :new_col, :integer, :after => :first
43
- assert_equal %w(first new_col second third), conn.columns(:testings).map {|c| c.name }
44
- end
45
-
46
- def test_change_column_with_positioning
47
- conn.change_column :testings, :second, :integer, :first => true
48
- assert_equal %w(second first third), conn.columns(:testings).map {|c| c.name }
49
-
50
- conn.change_column :testings, :second, :integer, :after => :third
51
- assert_equal %w(first third second), conn.columns(:testings).map {|c| c.name }
52
- end
53
- end
54
- end
55
- end
56
- end
1
+ require 'cases/helper'
2
+
3
+ module ActiveRecord
4
+ class Migration
5
+ class ColumnPositioningTest < ActiveRecord::TestCase
6
+ attr_reader :connection
7
+ alias :conn :connection
8
+
9
+ def setup
10
+ super
11
+
12
+ @connection = ActiveRecord::Base.connection
13
+
14
+ connection.create_table :testings, :id => false do |t|
15
+ t.column :first, :integer
16
+ t.column :second, :integer
17
+ t.column :third, :integer
18
+ end
19
+ end
20
+
21
+ teardown do
22
+ connection.drop_table :testings rescue nil
23
+ ActiveRecord::Base.primary_key_prefix_type = nil
24
+ end
25
+
26
+ if current_adapter?(:Mysql2Adapter)
27
+ def test_column_positioning
28
+ assert_equal %w(first second third), conn.columns(:testings).map(&:name)
29
+ end
30
+
31
+ def test_add_column_with_positioning
32
+ conn.add_column :testings, :new_col, :integer
33
+ assert_equal %w(first second third new_col), conn.columns(:testings).map(&:name)
34
+ end
35
+
36
+ def test_add_column_with_positioning_first
37
+ conn.add_column :testings, :new_col, :integer, :first => true
38
+ assert_equal %w(new_col first second third), conn.columns(:testings).map(&:name)
39
+ end
40
+
41
+ def test_add_column_with_positioning_after
42
+ conn.add_column :testings, :new_col, :integer, :after => :first
43
+ assert_equal %w(first new_col second third), conn.columns(:testings).map(&:name)
44
+ end
45
+
46
+ def test_change_column_with_positioning
47
+ conn.change_column :testings, :second, :integer, :first => true
48
+ assert_equal %w(second first third), conn.columns(:testings).map(&:name)
49
+
50
+ conn.change_column :testings, :second, :integer, :after => :third
51
+ assert_equal %w(first third second), conn.columns(:testings).map(&:name)
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end