ibm_db 3.0.5 → 4.0.0

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