ibm_db 3.0.5-x86-mingw32 → 5.0.5-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 (358) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGES +4 -0
  3. data/LICENSE +1 -1
  4. data/ParameterizedQueries README +6 -6
  5. data/README +38 -55
  6. data/ext/Makefile +269 -0
  7. data/ext/extconf.rb +34 -3
  8. data/ext/gil_release_version +3 -0
  9. data/ext/ibm_db-i386-mingw32.def +2 -0
  10. data/ext/ibm_db.c +100 -108
  11. data/ext/ibm_db.o +0 -0
  12. data/ext/ibm_db.so +0 -0
  13. data/ext/mkmf.log +110 -0
  14. data/ext/ruby_ibm_db_cli.o +0 -0
  15. data/ext/unicode_support_version +3 -0
  16. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +923 -527
  17. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +4 -1
  18. data/lib/mswin32/ibm_db.rb +7 -39
  19. data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
  20. data/test/active_record/connection_adapters/fake_adapter.rb +8 -5
  21. data/test/cases/adapter_test.rb +133 -58
  22. data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
  23. data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
  24. data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
  25. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
  26. data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
  27. data/test/cases/adapters/mysql2/connection_test.rb +210 -0
  28. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
  29. data/test/cases/adapters/mysql2/enum_test.rb +26 -0
  30. data/test/cases/adapters/mysql2/explain_test.rb +21 -0
  31. data/test/cases/adapters/mysql2/json_test.rb +195 -0
  32. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
  33. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  34. data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
  35. data/test/cases/adapters/mysql2/schema_test.rb +126 -0
  36. data/test/cases/adapters/mysql2/sp_test.rb +36 -0
  37. data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
  38. data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
  39. data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
  40. data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
  41. data/test/cases/adapters/postgresql/array_test.rb +339 -0
  42. data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
  43. data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
  44. data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
  45. data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
  46. data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
  47. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  48. data/test/cases/adapters/postgresql/collation_test.rb +53 -0
  49. data/test/cases/adapters/postgresql/composite_test.rb +132 -0
  50. data/test/cases/adapters/postgresql/connection_test.rb +257 -0
  51. data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
  52. data/test/cases/adapters/postgresql/domain_test.rb +47 -0
  53. data/test/cases/adapters/postgresql/enum_test.rb +91 -0
  54. data/test/cases/adapters/postgresql/explain_test.rb +20 -0
  55. data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
  56. data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
  57. data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
  58. data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
  59. data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
  60. data/test/cases/adapters/postgresql/integer_test.rb +25 -0
  61. data/test/cases/adapters/postgresql/json_test.rb +237 -0
  62. data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
  63. data/test/cases/adapters/postgresql/money_test.rb +96 -0
  64. data/test/cases/adapters/postgresql/network_test.rb +94 -0
  65. data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
  66. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
  67. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  68. data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
  69. data/test/cases/adapters/postgresql/range_test.rb +343 -0
  70. data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
  71. data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
  72. data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
  73. data/test/cases/adapters/postgresql/schema_test.rb +597 -0
  74. data/test/cases/adapters/postgresql/serial_test.rb +154 -0
  75. data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
  76. data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
  77. data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
  78. data/test/cases/adapters/postgresql/utils_test.rb +62 -0
  79. data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
  80. data/test/cases/adapters/postgresql/xml_test.rb +54 -0
  81. data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
  82. data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
  83. data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
  84. data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
  85. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
  86. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  87. data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
  88. data/test/cases/aggregations_test.rb +11 -1
  89. data/test/cases/ar_schema_test.rb +35 -50
  90. data/test/cases/associations/association_scope_test.rb +1 -6
  91. data/test/cases/associations/belongs_to_associations_test.rb +122 -10
  92. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
  93. data/test/cases/associations/callbacks_test.rb +5 -7
  94. data/test/cases/associations/cascaded_eager_loading_test.rb +1 -1
  95. data/test/cases/associations/eager_load_nested_include_test.rb +1 -3
  96. data/test/cases/associations/eager_test.rb +158 -73
  97. data/test/cases/associations/extension_test.rb +7 -2
  98. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +64 -32
  99. data/test/cases/associations/has_many_associations_test.rb +362 -43
  100. data/test/cases/associations/has_many_through_associations_test.rb +108 -41
  101. data/test/cases/associations/has_one_associations_test.rb +105 -8
  102. data/test/cases/associations/has_one_through_associations_test.rb +6 -3
  103. data/test/cases/associations/inner_join_association_test.rb +3 -3
  104. data/test/cases/associations/inverse_associations_test.rb +38 -11
  105. data/test/cases/associations/join_model_test.rb +59 -36
  106. data/test/cases/associations/left_outer_join_association_test.rb +88 -0
  107. data/test/cases/associations/nested_through_associations_test.rb +2 -2
  108. data/test/cases/associations/required_test.rb +25 -5
  109. data/test/cases/associations_test.rb +39 -34
  110. data/test/cases/attribute_decorators_test.rb +9 -8
  111. data/test/cases/attribute_methods/read_test.rb +5 -5
  112. data/test/cases/attribute_methods_test.rb +97 -40
  113. data/test/cases/attribute_set_test.rb +64 -4
  114. data/test/cases/attribute_test.rb +84 -18
  115. data/test/cases/attributes_test.rb +151 -34
  116. data/test/cases/autosave_association_test.rb +149 -36
  117. data/test/cases/base_test.rb +290 -241
  118. data/test/cases/batches_test.rb +299 -22
  119. data/test/cases/binary_test.rb +2 -10
  120. data/test/cases/bind_parameter_test.rb +76 -66
  121. data/test/cases/cache_key_test.rb +26 -0
  122. data/test/cases/calculations_test.rb +167 -15
  123. data/test/cases/callbacks_test.rb +161 -68
  124. data/test/cases/coders/json_test.rb +15 -0
  125. data/test/cases/collection_cache_key_test.rb +115 -0
  126. data/test/cases/column_definition_test.rb +26 -57
  127. data/test/cases/comment_test.rb +145 -0
  128. data/test/cases/connection_adapters/adapter_leasing_test.rb +5 -3
  129. data/test/cases/connection_adapters/connection_handler_test.rb +128 -21
  130. data/test/cases/connection_adapters/connection_specification_test.rb +1 -1
  131. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +0 -38
  132. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +5 -1
  133. data/test/cases/connection_adapters/schema_cache_test.rb +8 -3
  134. data/test/cases/connection_adapters/type_lookup_test.rb +15 -7
  135. data/test/cases/connection_management_test.rb +46 -56
  136. data/test/cases/connection_pool_test.rb +195 -20
  137. data/test/cases/connection_specification/resolver_test.rb +15 -0
  138. data/test/cases/counter_cache_test.rb +10 -5
  139. data/test/cases/custom_locking_test.rb +1 -1
  140. data/test/cases/database_statements_test.rb +18 -3
  141. data/test/cases/{invalid_date_test.rb → date_test.rb} +13 -1
  142. data/test/cases/date_time_precision_test.rb +107 -0
  143. data/test/cases/defaults_test.rb +85 -89
  144. data/test/cases/dirty_test.rb +30 -52
  145. data/test/cases/disconnected_test.rb +4 -2
  146. data/test/cases/enum_test.rb +178 -24
  147. data/test/cases/errors_test.rb +16 -0
  148. data/test/cases/explain_test.rb +32 -21
  149. data/test/cases/finder_test.rb +273 -148
  150. data/test/cases/fixture_set/file_test.rb +18 -0
  151. data/test/cases/fixtures_test.rb +112 -32
  152. data/test/cases/forbidden_attributes_protection_test.rb +69 -3
  153. data/test/cases/helper.rb +10 -16
  154. data/test/cases/hot_compatibility_test.rb +89 -1
  155. data/test/cases/inheritance_test.rb +284 -53
  156. data/test/cases/integration_test.rb +23 -7
  157. data/test/cases/invalid_connection_test.rb +4 -2
  158. data/test/cases/invertible_migration_test.rb +124 -32
  159. data/test/cases/json_serialization_test.rb +11 -2
  160. data/test/cases/locking_test.rb +22 -6
  161. data/test/cases/log_subscriber_test.rb +106 -17
  162. data/test/cases/migration/change_schema_test.rb +60 -114
  163. data/test/cases/migration/change_table_test.rb +34 -2
  164. data/test/cases/migration/column_attributes_test.rb +7 -23
  165. data/test/cases/migration/column_positioning_test.rb +8 -8
  166. data/test/cases/migration/columns_test.rb +17 -11
  167. data/test/cases/migration/command_recorder_test.rb +47 -2
  168. data/test/cases/migration/compatibility_test.rb +118 -0
  169. data/test/cases/migration/create_join_table_test.rb +21 -12
  170. data/test/cases/migration/foreign_key_test.rb +52 -18
  171. data/test/cases/migration/index_test.rb +14 -12
  172. data/test/cases/migration/logger_test.rb +1 -1
  173. data/test/cases/migration/pending_migrations_test.rb +0 -1
  174. data/test/cases/migration/references_foreign_key_test.rb +59 -7
  175. data/test/cases/migration/references_index_test.rb +4 -4
  176. data/test/cases/migration/references_statements_test.rb +26 -6
  177. data/test/cases/migration/rename_table_test.rb +25 -25
  178. data/test/cases/migration_test.rb +279 -81
  179. data/test/cases/migrator_test.rb +91 -8
  180. data/test/cases/mixin_test.rb +0 -2
  181. data/test/cases/modules_test.rb +3 -4
  182. data/test/cases/multiparameter_attributes_test.rb +24 -2
  183. data/test/cases/multiple_db_test.rb +11 -4
  184. data/test/cases/nested_attributes_test.rb +61 -33
  185. data/test/cases/persistence_test.rb +102 -10
  186. data/test/cases/pooled_connections_test.rb +3 -3
  187. data/test/cases/primary_keys_test.rb +170 -31
  188. data/test/cases/query_cache_test.rb +216 -96
  189. data/test/cases/quoting_test.rb +65 -19
  190. data/test/cases/readonly_test.rb +2 -1
  191. data/test/cases/reflection_test.rb +68 -22
  192. data/test/cases/relation/delegation_test.rb +3 -8
  193. data/test/cases/relation/merging_test.rb +10 -14
  194. data/test/cases/relation/mutation_test.rb +42 -24
  195. data/test/cases/relation/or_test.rb +92 -0
  196. data/test/cases/relation/predicate_builder_test.rb +4 -2
  197. data/test/cases/relation/record_fetch_warning_test.rb +40 -0
  198. data/test/cases/relation/where_chain_test.rb +23 -99
  199. data/test/cases/relation/where_clause_test.rb +182 -0
  200. data/test/cases/relation/where_test.rb +45 -23
  201. data/test/cases/relation_test.rb +67 -58
  202. data/test/cases/relations_test.rb +249 -38
  203. data/test/cases/result_test.rb +10 -0
  204. data/test/cases/sanitize_test.rb +108 -15
  205. data/test/cases/schema_dumper_test.rb +119 -125
  206. data/test/cases/schema_loading_test.rb +52 -0
  207. data/test/cases/scoping/default_scoping_test.rb +113 -39
  208. data/test/cases/scoping/named_scoping_test.rb +46 -9
  209. data/test/cases/scoping/relation_scoping_test.rb +47 -4
  210. data/test/cases/secure_token_test.rb +32 -0
  211. data/test/cases/serialization_test.rb +1 -1
  212. data/test/cases/serialized_attribute_test.rb +93 -6
  213. data/test/cases/statement_cache_test.rb +38 -0
  214. data/test/cases/store_test.rb +2 -1
  215. data/test/cases/suppressor_test.rb +63 -0
  216. data/test/cases/tasks/database_tasks_test.rb +73 -9
  217. data/test/cases/tasks/mysql_rake_test.rb +139 -118
  218. data/test/cases/tasks/postgresql_rake_test.rb +60 -6
  219. data/test/cases/tasks/sqlite_rake_test.rb +30 -3
  220. data/test/cases/test_case.rb +28 -20
  221. data/test/cases/test_fixtures_test.rb +36 -0
  222. data/test/cases/time_precision_test.rb +103 -0
  223. data/test/cases/timestamp_test.rb +44 -10
  224. data/test/cases/touch_later_test.rb +121 -0
  225. data/test/cases/transaction_callbacks_test.rb +128 -62
  226. data/test/cases/transaction_isolation_test.rb +2 -2
  227. data/test/cases/transactions_test.rb +61 -43
  228. data/test/cases/type/adapter_specific_registry_test.rb +133 -0
  229. data/test/cases/type/date_time_test.rb +14 -0
  230. data/test/cases/type/integer_test.rb +2 -96
  231. data/test/cases/type/string_test.rb +0 -14
  232. data/test/cases/type_test.rb +39 -0
  233. data/test/cases/types_test.rb +1 -118
  234. data/test/cases/unconnected_test.rb +1 -1
  235. data/test/cases/validations/absence_validation_test.rb +73 -0
  236. data/test/cases/validations/association_validation_test.rb +13 -2
  237. data/test/cases/validations/i18n_validation_test.rb +6 -10
  238. data/test/cases/validations/length_validation_test.rb +62 -30
  239. data/test/cases/validations/presence_validation_test.rb +36 -1
  240. data/test/cases/validations/uniqueness_validation_test.rb +128 -37
  241. data/test/cases/validations_repair_helper.rb +2 -6
  242. data/test/cases/validations_test.rb +36 -7
  243. data/test/cases/view_test.rb +102 -5
  244. data/test/cases/yaml_serialization_test.rb +21 -26
  245. data/test/config.example.yml +97 -0
  246. data/test/fixtures/bad_posts.yml +9 -0
  247. data/test/fixtures/books.yml +20 -0
  248. data/test/fixtures/content.yml +3 -0
  249. data/test/fixtures/content_positions.yml +3 -0
  250. data/test/fixtures/dead_parrots.yml +5 -0
  251. data/test/fixtures/live_parrots.yml +4 -0
  252. data/test/fixtures/naked/yml/parrots.yml +2 -0
  253. data/test/fixtures/naked/yml/trees.yml +3 -0
  254. data/test/fixtures/nodes.yml +29 -0
  255. data/test/fixtures/other_comments.yml +6 -0
  256. data/test/fixtures/other_dogs.yml +2 -0
  257. data/test/fixtures/other_posts.yml +7 -0
  258. data/test/fixtures/price_estimates.yml +10 -1
  259. data/test/fixtures/trees.yml +3 -0
  260. data/test/migrations/10_urban/9_add_expressions.rb +1 -1
  261. data/test/migrations/decimal/1_give_me_big_numbers.rb +1 -1
  262. data/test/migrations/magic/1_currencies_have_symbols.rb +1 -1
  263. data/test/migrations/missing/1000_people_have_middle_names.rb +2 -2
  264. data/test/migrations/missing/1_people_have_last_names.rb +2 -2
  265. data/test/migrations/missing/3_we_need_reminders.rb +2 -2
  266. data/test/migrations/missing/4_innocent_jointable.rb +2 -2
  267. data/test/migrations/rename/1_we_need_things.rb +2 -2
  268. data/test/migrations/rename/2_rename_things.rb +2 -2
  269. data/test/migrations/to_copy/1_people_have_hobbies.rb +1 -1
  270. data/test/migrations/to_copy/2_people_have_descriptions.rb +1 -1
  271. data/test/migrations/to_copy2/1_create_articles.rb +1 -1
  272. data/test/migrations/to_copy2/2_create_comments.rb +1 -1
  273. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +1 -1
  274. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +1 -1
  275. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +1 -1
  276. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +1 -1
  277. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +1 -1
  278. data/test/migrations/valid/1_valid_people_have_last_names.rb +1 -1
  279. data/test/migrations/valid/2_we_need_reminders.rb +2 -2
  280. data/test/migrations/valid/3_innocent_jointable.rb +2 -2
  281. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +1 -1
  282. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +2 -2
  283. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +2 -2
  284. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +1 -1
  285. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +1 -1
  286. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +1 -1
  287. data/test/migrations/version_check/20131219224947_migration_version_check.rb +1 -1
  288. data/test/models/admin/randomly_named_c1.rb +6 -2
  289. data/test/models/aircraft.rb +1 -0
  290. data/test/models/author.rb +4 -7
  291. data/test/models/bird.rb +1 -1
  292. data/test/models/book.rb +5 -0
  293. data/test/models/bulb.rb +2 -1
  294. data/test/models/car.rb +3 -0
  295. data/test/models/cat.rb +10 -0
  296. data/test/models/chef.rb +1 -0
  297. data/test/models/club.rb +2 -0
  298. data/test/models/comment.rb +17 -5
  299. data/test/models/company.rb +4 -2
  300. data/test/models/company_in_module.rb +1 -1
  301. data/test/models/contact.rb +1 -1
  302. data/test/models/content.rb +40 -0
  303. data/test/models/customer.rb +8 -2
  304. data/test/models/developer.rb +19 -0
  305. data/test/models/face.rb +1 -1
  306. data/test/models/guitar.rb +4 -0
  307. data/test/models/hotel.rb +2 -0
  308. data/test/models/member.rb +1 -0
  309. data/test/models/member_detail.rb +4 -3
  310. data/test/models/mentor.rb +3 -0
  311. data/test/models/mocktail_designer.rb +2 -0
  312. data/test/models/node.rb +5 -0
  313. data/test/models/non_primary_key.rb +2 -0
  314. data/test/models/notification.rb +3 -0
  315. data/test/models/other_dog.rb +5 -0
  316. data/test/models/owner.rb +4 -1
  317. data/test/models/parrot.rb +6 -7
  318. data/test/models/person.rb +0 -1
  319. data/test/models/pet.rb +3 -0
  320. data/test/models/pet_treasure.rb +6 -0
  321. data/test/models/pirate.rb +3 -3
  322. data/test/models/post.rb +18 -9
  323. data/test/models/project.rb +9 -0
  324. data/test/models/randomly_named_c1.rb +1 -1
  325. data/test/models/recipe.rb +3 -0
  326. data/test/models/ship.rb +8 -2
  327. data/test/models/tag.rb +6 -0
  328. data/test/models/topic.rb +2 -8
  329. data/test/models/tree.rb +3 -0
  330. data/test/models/tuning_peg.rb +4 -0
  331. data/test/models/user.rb +14 -0
  332. data/test/models/uuid_item.rb +6 -0
  333. data/test/schema/mysql2_specific_schema.rb +33 -23
  334. data/test/schema/oracle_specific_schema.rb +1 -4
  335. data/test/schema/postgresql_specific_schema.rb +36 -124
  336. data/test/schema/schema.rb +170 -65
  337. data/test/schema/schema.rb.original +1057 -0
  338. data/test/schema/sqlite_specific_schema.rb +1 -5
  339. data/test/support/connection.rb +1 -0
  340. data/test/support/schema_dumping_helper.rb +1 -1
  341. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  342. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  343. metadata +146 -30
  344. data/lib/mswin32/rb19x/ibm_db.so +0 -0
  345. data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
  346. data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
  347. data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
  348. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
  349. data/test/cases/attribute_methods/serialization_test.rb +0 -29
  350. data/test/cases/migration/change_schema_test - Copy.rb +0 -448
  351. data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
  352. data/test/cases/migration/table_and_index_test.rb +0 -24
  353. data/test/cases/relation/where_test2.rb +0 -36
  354. data/test/cases/type/decimal_test.rb +0 -56
  355. data/test/cases/type/unsigned_integer_test.rb +0 -18
  356. data/test/cases/xml_serialization_test.rb +0 -457
  357. data/test/fixtures/naked/csv/accounts.csv +0 -1
  358. data/test/schema/mysql_specific_schema.rb +0 -70
@@ -2,11 +2,11 @@ require "cases/helper"
2
2
  require "cases/migration/helper"
3
3
 
4
4
  class MigratorTest < ActiveRecord::TestCase
5
- self.use_transactional_fixtures = false
5
+ self.use_transactional_tests = false
6
6
 
7
7
  # Use this class to sense if migrations have gone
8
8
  # up or down.
9
- class Sensor < ActiveRecord::Migration
9
+ class Sensor < ActiveRecord::Migration::Current
10
10
  attr_reader :went_up, :went_down
11
11
 
12
12
  def initialize name = self.class.name, version = nil
@@ -123,6 +123,67 @@ class MigratorTest < ActiveRecord::TestCase
123
123
  assert_equal migration_list.last, migrations.first
124
124
  end
125
125
 
126
+ def test_migrations_status
127
+ path = MIGRATIONS_ROOT + "/valid"
128
+
129
+ ActiveRecord::SchemaMigration.create(version: 2)
130
+ ActiveRecord::SchemaMigration.create(version: 10)
131
+
132
+ assert_equal [
133
+ ["down", "001", "Valid people have last names"],
134
+ ["up", "002", "We need reminders"],
135
+ ["down", "003", "Innocent jointable"],
136
+ ["up", "010", "********** NO FILE **********"],
137
+ ], ActiveRecord::Migrator.migrations_status(path)
138
+ end
139
+
140
+ def test_migrations_status_in_subdirectories
141
+ path = MIGRATIONS_ROOT + "/valid_with_subdirectories"
142
+
143
+ ActiveRecord::SchemaMigration.create(version: 2)
144
+ ActiveRecord::SchemaMigration.create(version: 10)
145
+
146
+ assert_equal [
147
+ ["down", "001", "Valid people have last names"],
148
+ ["up", "002", "We need reminders"],
149
+ ["down", "003", "Innocent jointable"],
150
+ ["up", "010", "********** NO FILE **********"],
151
+ ], ActiveRecord::Migrator.migrations_status(path)
152
+ end
153
+
154
+ def test_migrations_status_with_schema_define_in_subdirectories
155
+ path = MIGRATIONS_ROOT + "/valid_with_subdirectories"
156
+ prev_paths = ActiveRecord::Migrator.migrations_paths
157
+ ActiveRecord::Migrator.migrations_paths = path
158
+
159
+ ActiveRecord::Schema.define(version: 3) do
160
+ end
161
+
162
+ assert_equal [
163
+ ["up", "001", "Valid people have last names"],
164
+ ["up", "002", "We need reminders"],
165
+ ["up", "003", "Innocent jointable"],
166
+ ], ActiveRecord::Migrator.migrations_status(path)
167
+ ensure
168
+ ActiveRecord::Migrator.migrations_paths = prev_paths
169
+ end
170
+
171
+ def test_migrations_status_from_two_directories
172
+ paths = [MIGRATIONS_ROOT + "/valid_with_timestamps", MIGRATIONS_ROOT + "/to_copy_with_timestamps"]
173
+
174
+ ActiveRecord::SchemaMigration.create(version: "20100101010101")
175
+ ActiveRecord::SchemaMigration.create(version: "20160528010101")
176
+
177
+ assert_equal [
178
+ ["down", "20090101010101", "People have hobbies"],
179
+ ["down", "20090101010202", "People have descriptions"],
180
+ ["up", "20100101010101", "Valid with timestamps people have last names"],
181
+ ["down", "20100201010101", "Valid with timestamps we need reminders"],
182
+ ["down", "20100301010101", "Valid with timestamps innocent jointable"],
183
+ ["up", "20160528010101", "********** NO FILE **********"],
184
+ ], ActiveRecord::Migrator.migrations_status(paths)
185
+ end
186
+
126
187
  def test_migrator_interleaved_migrations
127
188
  pass_one = [Sensor.new('One', 1)]
128
189
 
@@ -149,7 +210,7 @@ class MigratorTest < ActiveRecord::TestCase
149
210
  def test_up_calls_up
150
211
  migrations = [Sensor.new(nil, 0), Sensor.new(nil, 1), Sensor.new(nil, 2)]
151
212
  ActiveRecord::Migrator.new(:up, migrations).migrate
152
- assert migrations.all? { |m| m.went_up }
213
+ assert migrations.all?(&:went_up)
153
214
  assert migrations.all? { |m| !m.went_down }
154
215
  assert_equal 2, ActiveRecord::Migrator.current_version
155
216
  end
@@ -160,7 +221,7 @@ class MigratorTest < ActiveRecord::TestCase
160
221
  migrations = [Sensor.new(nil, 0), Sensor.new(nil, 1), Sensor.new(nil, 2)]
161
222
  ActiveRecord::Migrator.new(:down, migrations).migrate
162
223
  assert migrations.all? { |m| !m.went_up }
163
- assert migrations.all? { |m| m.went_down }
224
+ assert migrations.all?(&:went_down)
164
225
  assert_equal 0, ActiveRecord::Migrator.current_version
165
226
  end
166
227
 
@@ -237,6 +298,7 @@ class MigratorTest < ActiveRecord::TestCase
237
298
  def test_migrator_verbosity
238
299
  _, migrations = sensors(3)
239
300
 
301
+ ActiveRecord::Migration.verbose = true
240
302
  ActiveRecord::Migrator.new(:up, migrations, 1).migrate
241
303
  assert_not_equal 0, ActiveRecord::Migration.message_count
242
304
 
@@ -249,7 +311,6 @@ class MigratorTest < ActiveRecord::TestCase
249
311
  def test_migrator_verbosity_off
250
312
  _, migrations = sensors(3)
251
313
 
252
- ActiveRecord::Migration.message_count = 0
253
314
  ActiveRecord::Migration.verbose = false
254
315
  ActiveRecord::Migrator.new(:up, migrations, 1).migrate
255
316
  assert_equal 0, ActiveRecord::Migration.message_count
@@ -290,6 +351,27 @@ class MigratorTest < ActiveRecord::TestCase
290
351
  assert_equal [[:up, 1], [:up, 2], [:up, 3]], calls
291
352
  end
292
353
 
354
+ def test_migrator_output_when_running_multiple_migrations
355
+ _, migrator = migrator_class(3)
356
+
357
+ result = migrator.migrate("valid")
358
+ assert_equal(3, result.count)
359
+
360
+ # Nothing migrated from duplicate run
361
+ result = migrator.migrate("valid")
362
+ assert_equal(0, result.count)
363
+
364
+ result = migrator.rollback("valid")
365
+ assert_equal(1, result.count)
366
+ end
367
+
368
+ def test_migrator_output_when_running_single_migration
369
+ _, migrator = migrator_class(1)
370
+ result = migrator.run(:up, "valid", 1)
371
+
372
+ assert_equal(1, result.version)
373
+ end
374
+
293
375
  def test_migrator_rollback
294
376
  _, migrator = migrator_class(3)
295
377
 
@@ -312,10 +394,11 @@ class MigratorTest < ActiveRecord::TestCase
312
394
  def test_migrator_db_has_no_schema_migrations_table
313
395
  _, migrator = migrator_class(3)
314
396
 
315
- ActiveRecord::Base.connection.execute("DROP TABLE schema_migrations")
316
- assert_not ActiveRecord::Base.connection.table_exists?('schema_migrations')
397
+ ActiveRecord::Base.connection.drop_table "schema_migrations"
398
+ #, if_exists: true
399
+ ActiveSupport::Deprecation.silence { assert_not ActiveRecord::Base.connection.table_exists?('schema_migrations') }
317
400
  migrator.migrate("valid", 1)
318
- assert ActiveRecord::Base.connection.table_exists?('schema_migrations')
401
+ ActiveSupport::Deprecation.silence { assert ActiveRecord::Base.connection.table_exists?('schema_migrations') }
319
402
  end
320
403
 
321
404
  def test_migrator_forward
@@ -61,8 +61,6 @@ class TouchTest < ActiveRecord::TestCase
61
61
 
62
62
  # Make sure Mixin.record_timestamps gets reset, even if this test fails,
63
63
  # so that other tests do not fail because Mixin.record_timestamps == false
64
- rescue Exception => e
65
- raise e
66
64
  ensure
67
65
  Mixin.record_timestamps = true
68
66
  end
@@ -63,17 +63,16 @@ class ModulesTest < ActiveRecord::TestCase
63
63
  def test_assign_ids
64
64
  firm = MyApplication::Business::Firm.first
65
65
 
66
- assert_nothing_raised NameError, "Should be able to resolve all class constants via reflection" do
66
+ assert_nothing_raised do
67
67
  firm.client_ids = [MyApplication::Business::Client.first.id]
68
68
  end
69
69
  end
70
70
 
71
- # need to add an eager loading condition to force the eager loading model into
72
- # the old join model, to test that. See http://dev.rubyonrails.org/ticket/9640
71
+ # An eager loading condition to force the eager loading model into the old join model.
73
72
  def test_eager_loading_in_modules
74
73
  clients = []
75
74
 
76
- assert_nothing_raised NameError, "Should be able to resolve all class constants via reflection" do
75
+ assert_nothing_raised do
77
76
  clients << MyApplication::Business::Client.references(:accounts).merge!(:includes => {:firm => :account}, :where => 'accounts.id IS NOT NULL').find(3)
78
77
  clients << MyApplication::Business::Client.includes(:firm => :account).find(3)
79
78
  end
@@ -199,6 +199,7 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
199
199
 
200
200
  def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes
201
201
  with_timezone_config default: :utc, aware_attributes: true, zone: -28800 do
202
+ Topic.reset_column_information
202
203
  attributes = {
203
204
  "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
204
205
  "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
@@ -209,6 +210,22 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
209
210
  assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on.time
210
211
  assert_equal Time.zone, topic.written_on.time_zone
211
212
  end
213
+ ensure
214
+ Topic.reset_column_information
215
+ end
216
+
217
+ def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes_and_invalid_time_params
218
+ with_timezone_config aware_attributes: true do
219
+ Topic.reset_column_information
220
+ attributes = {
221
+ "written_on(1i)" => "2004", "written_on(2i)" => "", "written_on(3i)" => ""
222
+ }
223
+ topic = Topic.find(1)
224
+ topic.attributes = attributes
225
+ assert_nil topic.written_on
226
+ end
227
+ ensure
228
+ Topic.reset_column_information
212
229
  end
213
230
 
214
231
  def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes_false
@@ -227,6 +244,7 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
227
244
  def test_multiparameter_attributes_on_time_with_skip_time_zone_conversion_for_attributes
228
245
  with_timezone_config default: :utc, aware_attributes: true, zone: -28800 do
229
246
  Topic.skip_time_zone_conversion_for_attributes = [:written_on]
247
+ Topic.reset_column_information
230
248
  attributes = {
231
249
  "written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
232
250
  "written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
@@ -238,21 +256,25 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
238
256
  end
239
257
  ensure
240
258
  Topic.skip_time_zone_conversion_for_attributes = []
259
+ Topic.reset_column_information
241
260
  end
242
261
 
243
262
  # Oracle does not have a TIME datatype.
244
263
  unless current_adapter?(:OracleAdapter)
245
264
  def test_multiparameter_attributes_on_time_only_column_with_time_zone_aware_attributes_does_not_do_time_zone_conversion
246
265
  with_timezone_config default: :utc, aware_attributes: true, zone: -28800 do
266
+ Topic.reset_column_information
247
267
  attributes = {
248
268
  "bonus_time(1i)" => "2000", "bonus_time(2i)" => "1", "bonus_time(3i)" => "1",
249
269
  "bonus_time(4i)" => "16", "bonus_time(5i)" => "24"
250
270
  }
251
271
  topic = Topic.find(1)
252
272
  topic.attributes = attributes
253
- assert_equal Time.utc(2000, 1, 1, 16, 24, 0), topic.bonus_time
254
- assert topic.bonus_time.utc?
273
+ assert_equal Time.zone.local(2000, 1, 1, 16, 24, 0), topic.bonus_time
274
+ assert_not topic.bonus_time.utc?
255
275
  end
276
+ ensure
277
+ Topic.reset_column_information
256
278
  end
257
279
  end
258
280
 
@@ -4,7 +4,7 @@ require 'models/bird'
4
4
  require 'models/course'
5
5
 
6
6
  class MultipleDbTest < ActiveRecord::TestCase
7
- self.use_transactional_fixtures = false
7
+ self.use_transactional_tests = false
8
8
 
9
9
  def setup
10
10
  @courses = create_fixtures("courses") { Course.retrieve_connection }
@@ -24,6 +24,13 @@ class MultipleDbTest < ActiveRecord::TestCase
24
24
  assert_equal(ActiveRecord::Base.connection, Entrant.connection)
25
25
  end
26
26
 
27
+ def test_swapping_the_connection
28
+ old_spec_name, Course.connection_specification_name = Course.connection_specification_name, "primary"
29
+ assert_equal(Entrant.connection, Course.connection)
30
+ ensure
31
+ Course.connection_specification_name = old_spec_name
32
+ end
33
+
27
34
  def test_find
28
35
  c1 = Course.find(1)
29
36
  assert_equal "Ruby Development", c1.name
@@ -89,8 +96,8 @@ class MultipleDbTest < ActiveRecord::TestCase
89
96
  end
90
97
 
91
98
  def test_connection
92
- assert_equal Entrant.arel_engine.connection, Bird.arel_engine.connection
93
- assert_not_equal Entrant.arel_engine.connection, Course.arel_engine.connection
99
+ assert_equal Entrant.arel_engine.connection.object_id, Bird.arel_engine.connection.object_id
100
+ assert_not_equal Entrant.arel_engine.connection.object_id, Course.arel_engine.connection.object_id
94
101
  end
95
102
 
96
103
  unless in_memory_db?
@@ -104,7 +111,7 @@ class MultipleDbTest < ActiveRecord::TestCase
104
111
  def test_associations_should_work_when_model_has_no_connection
105
112
  begin
106
113
  ActiveRecord::Base.remove_connection
107
- assert_nothing_raised ActiveRecord::ConnectionNotEstablished do
114
+ assert_nothing_raised do
108
115
  College.first.courses.first
109
116
  end
110
117
  ensure
@@ -13,7 +13,7 @@ require 'active_support/hash_with_indifferent_access'
13
13
 
14
14
  class TestNestedAttributesInGeneral < ActiveRecord::TestCase
15
15
  teardown do
16
- Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc { |attributes| attributes.empty? }
16
+ Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc(&:empty?)
17
17
  end
18
18
 
19
19
  def test_base_should_have_an_empty_nested_attributes_options
@@ -61,6 +61,13 @@ class TestNestedAttributesInGeneral < ActiveRecord::TestCase
61
61
  assert_equal "No association found for name `honesty'. Has it been defined yet?", exception.message
62
62
  end
63
63
 
64
+ def test_should_raise_an_UnknownAttributeError_for_non_existing_nested_attributes
65
+ exception = assert_raise ActiveModel::UnknownAttributeError do
66
+ Pirate.new(:ship_attributes => { :sail => true })
67
+ end
68
+ assert_equal "unknown attribute 'sail' for Ship.", exception.message
69
+ end
70
+
64
71
  def test_should_disable_allow_destroy_by_default
65
72
  Pirate.accepts_nested_attributes_for :ship
66
73
 
@@ -69,7 +76,7 @@ class TestNestedAttributesInGeneral < ActiveRecord::TestCase
69
76
 
70
77
  pirate.update(ship_attributes: { '_destroy' => true, :id => ship.id })
71
78
 
72
- assert_nothing_raised(ActiveRecord::RecordNotFound) { pirate.ship.reload }
79
+ assert_nothing_raised { pirate.ship.reload }
73
80
  end
74
81
 
75
82
  def test_a_model_should_respond_to_underscore_destroy_and_return_if_it_is_marked_for_destruction
@@ -173,7 +180,7 @@ class TestNestedAttributesInGeneral < ActiveRecord::TestCase
173
180
 
174
181
  pirate = Pirate.new(:catchphrase => "Stop wastin' me time")
175
182
  pirate.ship_attributes = { :id => "" }
176
- assert_nothing_raised(ActiveRecord::RecordNotFound) { pirate.save! }
183
+ assert_nothing_raised { pirate.save! }
177
184
  end
178
185
 
179
186
  def test_first_and_array_index_zero_methods_return_the_same_value_when_nested_attributes_are_set_to_update_existing_record
@@ -286,10 +293,11 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
286
293
  end
287
294
 
288
295
  def test_should_modify_an_existing_record_if_there_is_a_matching_composite_id
289
- @ship.stubs(:id).returns('ABC1X')
290
- @pirate.ship_attributes = { :id => @ship.id, :name => 'Davy Jones Gold Dagger' }
296
+ @ship.stub(:id, 'ABC1X') do
297
+ @pirate.ship_attributes = { :id => @ship.id, :name => 'Davy Jones Gold Dagger' }
291
298
 
292
- assert_equal 'Davy Jones Gold Dagger', @pirate.ship.name
299
+ assert_equal 'Davy Jones Gold Dagger', @pirate.ship.name
300
+ end
293
301
  end
294
302
 
295
303
  def test_should_destroy_an_existing_record_if_there_is_a_matching_id_and_destroy_is_truthy
@@ -313,13 +321,13 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
313
321
  end
314
322
 
315
323
  def test_should_not_destroy_an_existing_record_if_allow_destroy_is_false
316
- Pirate.accepts_nested_attributes_for :ship, :allow_destroy => false, :reject_if => proc { |attributes| attributes.empty? }
324
+ Pirate.accepts_nested_attributes_for :ship, :allow_destroy => false, :reject_if => proc(&:empty?)
317
325
 
318
326
  @pirate.update(ship_attributes: { id: @pirate.ship.id, _destroy: '1' })
319
327
 
320
328
  assert_equal @ship, @pirate.reload.ship
321
329
 
322
- Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc { |attributes| attributes.empty? }
330
+ Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc(&:empty?)
323
331
  end
324
332
 
325
333
  def test_should_also_work_with_a_HashWithIndifferentAccess
@@ -470,10 +478,11 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
470
478
  end
471
479
 
472
480
  def test_should_modify_an_existing_record_if_there_is_a_matching_composite_id
473
- @pirate.stubs(:id).returns('ABC1X')
474
- @ship.pirate_attributes = { :id => @pirate.id, :catchphrase => 'Arr' }
481
+ @pirate.stub(:id, 'ABC1X') do
482
+ @ship.pirate_attributes = { :id => @pirate.id, :catchphrase => 'Arr' }
475
483
 
476
- assert_equal 'Arr', @ship.pirate.catchphrase
484
+ assert_equal 'Arr', @ship.pirate.catchphrase
485
+ end
477
486
  end
478
487
 
479
488
  def test_should_destroy_an_existing_record_if_there_is_a_matching_id_and_destroy_is_truthy
@@ -502,17 +511,17 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
502
511
  def test_should_not_destroy_an_existing_record_if_destroy_is_not_truthy
503
512
  [nil, '0', 0, 'false', false].each do |not_truth|
504
513
  @ship.update(pirate_attributes: { id: @ship.pirate.id, _destroy: not_truth })
505
- assert_nothing_raised(ActiveRecord::RecordNotFound) { @ship.pirate.reload }
514
+ assert_nothing_raised { @ship.pirate.reload }
506
515
  end
507
516
  end
508
517
 
509
518
  def test_should_not_destroy_an_existing_record_if_allow_destroy_is_false
510
- Ship.accepts_nested_attributes_for :pirate, :allow_destroy => false, :reject_if => proc { |attributes| attributes.empty? }
519
+ Ship.accepts_nested_attributes_for :pirate, :allow_destroy => false, :reject_if => proc(&:empty?)
511
520
 
512
521
  @ship.update(pirate_attributes: { id: @ship.pirate.id, _destroy: '1' })
513
- assert_nothing_raised(ActiveRecord::RecordNotFound) { @ship.pirate.reload }
522
+ assert_nothing_raised { @ship.pirate.reload }
514
523
  ensure
515
- Ship.accepts_nested_attributes_for :pirate, :allow_destroy => true, :reject_if => proc { |attributes| attributes.empty? }
524
+ Ship.accepts_nested_attributes_for :pirate, :allow_destroy => true, :reject_if => proc(&:empty?)
516
525
  end
517
526
 
518
527
  def test_should_work_with_update_as_well
@@ -527,7 +536,7 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
527
536
  pirate = @ship.pirate
528
537
 
529
538
  @ship.attributes = { :pirate_attributes => { :id => pirate.id, '_destroy' => true } }
530
- assert_nothing_raised(ActiveRecord::RecordNotFound) { Pirate.find(pirate.id) }
539
+ assert_nothing_raised { Pirate.find(pirate.id) }
531
540
  @ship.save
532
541
  assert_raise(ActiveRecord::RecordNotFound) { Pirate.find(pirate.id) }
533
542
  end
@@ -580,6 +589,13 @@ module NestedAttributesOnACollectionAssociationTests
580
589
  assert_respond_to @pirate, association_setter
581
590
  end
582
591
 
592
+ def test_should_raise_an_UnknownAttributeError_for_non_existing_nested_attributes_for_has_many
593
+ exception = assert_raise ActiveModel::UnknownAttributeError do
594
+ @pirate.parrots_attributes = [{ peg_leg: true }]
595
+ end
596
+ assert_equal "unknown attribute 'peg_leg' for Parrot.", exception.message
597
+ end
598
+
583
599
  def test_should_save_only_one_association_on_create
584
600
  pirate = Pirate.create!({
585
601
  :catchphrase => 'Arr',
@@ -651,17 +667,19 @@ module NestedAttributesOnACollectionAssociationTests
651
667
  end
652
668
 
653
669
  def test_should_take_a_hash_with_composite_id_keys_and_assign_the_attributes_to_the_associated_models
654
- @child_1.stubs(:id).returns('ABC1X')
655
- @child_2.stubs(:id).returns('ABC2X')
656
-
657
- @pirate.attributes = {
658
- association_getter => [
659
- { :id => @child_1.id, :name => 'Grace OMalley' },
660
- { :id => @child_2.id, :name => 'Privateers Greed' }
661
- ]
662
- }
670
+ @child_1.stub(:id, 'ABC1X') do
671
+ @child_2.stub(:id, 'ABC2X') do
672
+
673
+ @pirate.attributes = {
674
+ association_getter => [
675
+ { :id => @child_1.id, :name => 'Grace OMalley' },
676
+ { :id => @child_2.id, :name => 'Privateers Greed' }
677
+ ]
678
+ }
663
679
 
664
- assert_equal ['Grace OMalley', 'Privateers Greed'], [@child_1.name, @child_2.name]
680
+ assert_equal ['Grace OMalley', 'Privateers Greed'], [@child_1.name, @child_2.name]
681
+ end
682
+ end
665
683
  end
666
684
 
667
685
  def test_should_raise_RecordNotFound_if_an_id_is_given_but_doesnt_return_a_record
@@ -671,6 +689,16 @@ module NestedAttributesOnACollectionAssociationTests
671
689
  assert_equal "Couldn't find #{@child_1.class.name} with ID=1234567890 for Pirate with ID=#{@pirate.id}", exception.message
672
690
  end
673
691
 
692
+ def test_should_raise_RecordNotFound_if_an_id_belonging_to_a_different_record_is_given
693
+ other_pirate = Pirate.create! catchphrase: 'Ahoy!'
694
+ other_child = other_pirate.send(@association_name).create! name: 'Buccaneers Servant'
695
+
696
+ exception = assert_raise ActiveRecord::RecordNotFound do
697
+ @pirate.attributes = { association_getter => [{ id: other_child.id }] }
698
+ end
699
+ assert_equal "Couldn't find #{@child_1.class.name} with ID=#{other_child.id} for Pirate with ID=#{@pirate.id}", exception.message
700
+ end
701
+
674
702
  def test_should_automatically_build_new_associated_models_for_each_entry_in_a_hash_where_the_id_is_missing
675
703
  @pirate.send(@association_name).destroy_all
676
704
  @pirate.reload.attributes = {
@@ -685,7 +713,7 @@ module NestedAttributesOnACollectionAssociationTests
685
713
  end
686
714
 
687
715
  def test_should_not_assign_destroy_key_to_a_record
688
- assert_nothing_raised ActiveRecord::UnknownAttributeError do
716
+ assert_nothing_raised do
689
717
  @pirate.send(association_setter, { 'foo' => { '_destroy' => '0' }})
690
718
  end
691
719
  end
@@ -720,8 +748,8 @@ module NestedAttributesOnACollectionAssociationTests
720
748
  end
721
749
 
722
750
  def test_should_raise_an_argument_error_if_something_else_than_a_hash_is_passed
723
- assert_nothing_raised(ArgumentError) { @pirate.send(association_setter, {}) }
724
- assert_nothing_raised(ArgumentError) { @pirate.send(association_setter, Hash.new) }
751
+ assert_nothing_raised { @pirate.send(association_setter, {}) }
752
+ assert_nothing_raised { @pirate.send(association_setter, Hash.new) }
725
753
 
726
754
  exception = assert_raise ArgumentError do
727
755
  @pirate.send(association_setter, "foo")
@@ -796,7 +824,7 @@ module NestedAttributesOnACollectionAssociationTests
796
824
 
797
825
  def test_can_use_symbols_as_object_identifier
798
826
  @pirate.attributes = { :parrots_attributes => { :foo => { :name => 'Lovely Day' }, :bar => { :name => 'Blown Away' } } }
799
- assert_nothing_raised(NoMethodError) { @pirate.save! }
827
+ assert_nothing_raised { @pirate.save! }
800
828
  end
801
829
 
802
830
  def test_numeric_column_changes_from_zero_to_no_empty_string
@@ -868,7 +896,7 @@ end
868
896
 
869
897
  module NestedAttributesLimitTests
870
898
  def teardown
871
- Pirate.accepts_nested_attributes_for :parrots, :allow_destroy => true, :reject_if => proc { |attributes| attributes.empty? }
899
+ Pirate.accepts_nested_attributes_for :parrots, :allow_destroy => true, :reject_if => proc(&:empty?)
872
900
  end
873
901
 
874
902
  def test_limit_with_less_records
@@ -956,7 +984,7 @@ class TestNestedAttributesWithNonStandardPrimaryKeys < ActiveRecord::TestCase
956
984
  end
957
985
 
958
986
  class TestHasOneAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRecord::TestCase
959
- self.use_transactional_fixtures = false unless supports_savepoints?
987
+ self.use_transactional_tests = false unless supports_savepoints?
960
988
 
961
989
  def setup
962
990
  @pirate = Pirate.create!(:catchphrase => "My baby takes tha mornin' train!")
@@ -996,7 +1024,7 @@ class TestHasOneAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRe
996
1024
  end
997
1025
 
998
1026
  class TestHasManyAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRecord::TestCase
999
- self.use_transactional_fixtures = false unless supports_savepoints?
1027
+ self.use_transactional_tests = false unless supports_savepoints?
1000
1028
 
1001
1029
  def setup
1002
1030
  @ship = Ship.create!(:name => "The good ship Dollypop")