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
@@ -5,9 +5,7 @@ module ActiveRecord
5
5
  module ClassMethods
6
6
  def repair_validations(*model_classes)
7
7
  teardown do
8
- model_classes.each do |k|
9
- k.clear_validators!
10
- end
8
+ model_classes.each(&:clear_validators!)
11
9
  end
12
10
  end
13
11
  end
@@ -15,9 +13,7 @@ module ActiveRecord
15
13
  def repair_validations(*model_classes)
16
14
  yield if block_given?
17
15
  ensure
18
- model_classes.each do |k|
19
- k.clear_validators!
20
- end
16
+ model_classes.each(&:clear_validators!)
21
17
  end
22
18
  end
23
19
  end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  require "cases/helper"
3
2
  require 'models/topic'
4
3
  require 'models/reply'
@@ -53,6 +52,13 @@ class ValidationsTest < ActiveRecord::TestCase
53
52
  assert r.valid?(:special_case)
54
53
  end
55
54
 
55
+ def test_invalid_using_multiple_contexts
56
+ r = WrongReply.new(:title => 'Wrong Create')
57
+ assert r.invalid?([:special_case, :create])
58
+ assert_equal "Invalid", r.errors[:author_name].join
59
+ assert_equal "is Wrong Create", r.errors[:title].join
60
+ end
61
+
56
62
  def test_validate
57
63
  r = WrongReply.new
58
64
 
@@ -124,7 +130,7 @@ class ValidationsTest < ActiveRecord::TestCase
124
130
  def test_validates_acceptance_of_with_non_existent_table
125
131
  Object.const_set :IncorporealModel, Class.new(ActiveRecord::Base)
126
132
 
127
- assert_nothing_raised ActiveRecord::StatementInvalid do
133
+ assert_nothing_raised do
128
134
  IncorporealModel.validates_acceptance_of(:incorporeal_column)
129
135
  end
130
136
  end
@@ -150,16 +156,39 @@ class ValidationsTest < ActiveRecord::TestCase
150
156
  end
151
157
 
152
158
  def test_numericality_validation_with_mutation
153
- Topic.class_eval do
154
- attribute :wibble, ActiveRecord::Type::String.new
159
+ klass = Class.new(Topic) do
160
+ attribute :wibble, :string
155
161
  validates_numericality_of :wibble, only_integer: true
156
162
  end
157
163
 
158
- topic = Topic.new(wibble: '123-4567')
164
+ topic = klass.new(wibble: '123-4567')
159
165
  topic.wibble.gsub!('-', '')
160
166
 
161
167
  assert topic.valid?
162
- ensure
163
- Topic.reset_column_information
168
+ end
169
+
170
+ def test_numericality_validation_checks_against_raw_value
171
+ klass = Class.new(Topic) do
172
+ def self.model_name
173
+ ActiveModel::Name.new(self, nil, "Topic")
174
+ end
175
+ attribute :wibble, :decimal, scale: 2, precision: 9
176
+ validates_numericality_of :wibble, greater_than_or_equal_to: BigDecimal.new("97.18")
177
+ end
178
+
179
+ assert_not klass.new(wibble: "97.179").valid?
180
+ assert_not klass.new(wibble: 97.179).valid?
181
+ assert_not klass.new(wibble: BigDecimal.new("97.179")).valid?
182
+ end
183
+
184
+ def test_acceptance_validator_doesnt_require_db_connection
185
+ klass = Class.new(ActiveRecord::Base) do
186
+ self.table_name = 'posts'
187
+ end
188
+ klass.reset_column_information
189
+
190
+ assert_no_queries do
191
+ klass.validates_acceptance_of(:foo)
192
+ end
164
193
  end
165
194
  end
@@ -1,7 +1,9 @@
1
1
  require "cases/helper"
2
2
  require "models/book"
3
+ require "support/schema_dumping_helper"
3
4
 
4
5
  module ViewBehavior
6
+ include SchemaDumpingHelper
5
7
  extend ActiveSupport::Concern
6
8
 
7
9
  included do
@@ -31,10 +33,19 @@ module ViewBehavior
31
33
  assert_equal ["Ruby for Rails"], books.map(&:name)
32
34
  end
33
35
 
36
+ def test_views
37
+ assert_equal [Ebook.table_name], @connection.views
38
+ end
39
+
40
+ def test_view_exists
41
+ view_name = Ebook.table_name
42
+ assert @connection.view_exists?(view_name), "'#{view_name}' view should exist"
43
+ end
44
+
34
45
  def test_table_exists
35
46
  view_name = Ebook.table_name
36
47
  # TODO: switch this assertion around once we changed #tables to not return views.
37
- assert @connection.table_exists?(view_name), "'#{view_name}' table should exist"
48
+ ActiveSupport::Deprecation.silence { assert @connection.table_exists?(view_name), "'#{view_name}' table should exist" }
38
49
  end
39
50
 
40
51
  def test_views_ara_valid_data_sources
@@ -59,6 +70,11 @@ module ViewBehavior
59
70
  end
60
71
  assert_nil model.primary_key
61
72
  end
73
+
74
+ def test_does_not_dump_view_as_table
75
+ schema = dump_table_schema "ebooks"
76
+ assert_no_match %r{create_table "ebooks"}, schema
77
+ end
62
78
  end
63
79
 
64
80
  if ActiveRecord::Base.connection.supports_views?
@@ -71,11 +87,12 @@ class ViewWithPrimaryKeyTest < ActiveRecord::TestCase
71
87
  end
72
88
 
73
89
  def drop_view(name)
74
- @connection.execute "DROP VIEW #{name}" if @connection.table_exists? name
90
+ @connection.execute "DROP VIEW #{name}" if @connection.view_exists? name
75
91
  end
76
92
  end
77
93
 
78
94
  class ViewWithoutPrimaryKeyTest < ActiveRecord::TestCase
95
+ include SchemaDumpingHelper
79
96
  fixtures :books
80
97
 
81
98
  class Paperback < ActiveRecord::Base; end
@@ -89,7 +106,7 @@ class ViewWithoutPrimaryKeyTest < ActiveRecord::TestCase
89
106
  end
90
107
 
91
108
  teardown do
92
- @connection.execute "DROP VIEW paperbacks" if @connection.table_exists? "paperbacks"
109
+ @connection.execute "DROP VIEW paperbacks" if @connection.view_exists? "paperbacks"
93
110
  end
94
111
 
95
112
  def test_reading
@@ -97,9 +114,19 @@ class ViewWithoutPrimaryKeyTest < ActiveRecord::TestCase
97
114
  assert_equal ["Agile Web Development with Rails"], books.map(&:name)
98
115
  end
99
116
 
117
+ def test_views
118
+ assert_equal [Paperback.table_name], @connection.views
119
+ end
120
+
121
+ def test_view_exists
122
+ view_name = Paperback.table_name
123
+ assert @connection.view_exists?(view_name), "'#{view_name}' view should exist"
124
+ end
125
+
100
126
  def test_table_exists
101
127
  view_name = Paperback.table_name
102
- assert @connection.table_exists?(view_name), "'#{view_name}' table should exist"
128
+ # TODO: switch this assertion around once we changed #tables to not return views.
129
+ ActiveSupport::Deprecation.silence { assert @connection.table_exists?(view_name), "'#{view_name}' table should exist" }
103
130
  end
104
131
 
105
132
  def test_column_definitions
@@ -108,12 +135,82 @@ class ViewWithoutPrimaryKeyTest < ActiveRecord::TestCase
108
135
  end
109
136
 
110
137
  def test_attributes
111
- assert_equal({"name" => "Agile Web Development with Rails", "status" => 0},
138
+ assert_equal({"name" => "Agile Web Development with Rails", "status" => 2},
112
139
  Paperback.first.attributes)
113
140
  end
114
141
 
115
142
  def test_does_not_have_a_primary_key
116
143
  assert_nil Paperback.primary_key
117
144
  end
145
+
146
+ def test_does_not_dump_view_as_table
147
+ schema = dump_table_schema "paperbacks"
148
+ assert_no_match %r{create_table "paperbacks"}, schema
149
+ end
150
+ end
151
+
152
+ # sqlite dose not support CREATE, INSERT, and DELETE for VIEW
153
+ if current_adapter?(:Mysql2Adapter, :PostgreSQLAdapter, :SQLServerAdapter)
154
+ class UpdateableViewTest < ActiveRecord::TestCase
155
+ self.use_transactional_tests = false
156
+ fixtures :books
157
+
158
+ class PrintedBook < ActiveRecord::Base
159
+ self.primary_key = "id"
160
+ end
161
+
162
+ setup do
163
+ @connection = ActiveRecord::Base.connection
164
+ @connection.execute <<-SQL
165
+ CREATE VIEW printed_books
166
+ AS SELECT id, name, status, format FROM books WHERE format = 'paperback'
167
+ SQL
168
+ end
169
+
170
+ teardown do
171
+ @connection.execute "DROP VIEW printed_books" if @connection.view_exists? "printed_books"
172
+ end
173
+
174
+ def test_update_record
175
+ book = PrintedBook.first
176
+ book.name = "AWDwR"
177
+ book.save!
178
+ book.reload
179
+ assert_equal "AWDwR", book.name
180
+ end
181
+
182
+ def test_insert_record
183
+ PrintedBook.create! name: "Rails in Action", status: 0, format: "paperback"
184
+
185
+ new_book = PrintedBook.last
186
+ assert_equal "Rails in Action", new_book.name
187
+ end
188
+
189
+ def test_update_record_to_fail_view_conditions
190
+ book = PrintedBook.first
191
+ book.format = "ebook"
192
+ book.save!
193
+
194
+ assert_raises ActiveRecord::RecordNotFound do
195
+ book.reload
196
+ end
197
+ end
198
+ end
199
+ end # end fo `if current_adapter?(:Mysql2Adapter, :PostgreSQLAdapter, :SQLServerAdapter)`
200
+ end # end fo `if ActiveRecord::Base.connection.supports_views?`
201
+
202
+ if ActiveRecord::Base.connection.respond_to?(:supports_materialized_views?) &&
203
+ ActiveRecord::Base.connection.supports_materialized_views?
204
+ class MaterializedViewTest < ActiveRecord::PostgreSQLTestCase
205
+ include ViewBehavior
206
+
207
+ private
208
+ def create_view(name, query)
209
+ @connection.execute "CREATE MATERIALIZED VIEW #{name} AS #{query}"
210
+ end
211
+
212
+ def drop_view(name)
213
+ @connection.execute "DROP MATERIALIZED VIEW #{name}" if @connection.view_exists? name
214
+ end
118
215
  end
119
216
  end
@@ -5,7 +5,7 @@ require 'models/post'
5
5
  require 'models/author'
6
6
 
7
7
  class YamlSerializationTest < ActiveRecord::TestCase
8
- fixtures :topics, :authors, :posts, :author_addresses
8
+ fixtures :topics, :authors, :posts
9
9
 
10
10
  def test_to_yaml_with_time_with_zone_should_not_raise_exception
11
11
  with_timezone_config aware_attributes: true, zone: "Pacific Time (US & Canada)" do
@@ -92,35 +92,30 @@ class YamlSerializationTest < ActiveRecord::TestCase
92
92
  end
93
93
 
94
94
  def test_deserializing_rails_41_yaml
95
- yaml = <<-YAML.strip_heredoc
96
- --- !ruby/object:Topic
97
- attributes:
98
- id:
99
- title: The First Topic
100
- author_name: David
101
- author_email_address: david@loudthinking.com
102
- written_on: 2003-07-16 14:28:11.223300000 Z
103
- bonus_time: 2000-01-01 14:28:00.000000000 Z
104
- last_read: 2004-04-15
105
- content: |
106
- ---
107
- :omg: :lol
108
- important:
109
- approved: false
110
- replies_count: 1
111
- unique_replies_count: 0
112
- parent_id:
113
- parent_title:
114
- type:
115
- group:
116
- created_at: 2015-03-10 17:05:42.000000000 Z
117
- updated_at: 2015-03-10 17:05:42.000000000 Z
118
- YAML
119
- topic = YAML.load(yaml)
95
+ topic = YAML.load(yaml_fixture("rails_4_1"))
120
96
 
121
97
  assert topic.new_record?
122
98
  assert_equal nil, topic.id
123
99
  assert_equal "The First Topic", topic.title
124
100
  assert_equal({ omg: :lol }, topic.content)
125
101
  end
102
+
103
+ def test_deserializing_rails_4_2_0_yaml
104
+ topic = YAML.load(yaml_fixture("rails_4_2_0"))
105
+
106
+ assert_not topic.new_record?
107
+ assert_equal 1, topic.id
108
+ assert_equal "The First Topic", topic.title
109
+ assert_equal("Have a nice day", topic.content)
110
+ end
111
+
112
+ private
113
+
114
+ def yaml_fixture(file_name)
115
+ path = File.expand_path(
116
+ "../../support/yaml_compatibility_fixtures/#{file_name}.yml",
117
+ __FILE__
118
+ )
119
+ File.read(path)
120
+ end
126
121
  end
@@ -0,0 +1,97 @@
1
+ default_connection: <%= defined?(JRUBY_VERSION) ? 'jdbcsqlite3' : 'sqlite3' %>
2
+
3
+ with_manual_interventions: false
4
+
5
+ connections:
6
+ jdbcderby:
7
+ arunit: activerecord_unittest
8
+ arunit2: activerecord_unittest2
9
+
10
+ jdbch2:
11
+ arunit: activerecord_unittest
12
+ arunit2: activerecord_unittest2
13
+
14
+ jdbchsqldb:
15
+ arunit: activerecord_unittest
16
+ arunit2: activerecord_unittest2
17
+
18
+ jdbcmysql:
19
+ arunit:
20
+ username: rails
21
+ encoding: utf8
22
+ arunit2:
23
+ username: rails
24
+ encoding: utf8
25
+
26
+ jdbcpostgresql:
27
+ arunit:
28
+ username: <%= ENV['user'] || 'rails' %>
29
+ arunit2:
30
+ username: <%= ENV['user'] || 'rails' %>
31
+
32
+ jdbcsqlite3:
33
+ arunit:
34
+ database: <%= FIXTURES_ROOT %>/fixture_database.sqlite3
35
+ timeout: 5000
36
+ arunit2:
37
+ database: <%= FIXTURES_ROOT %>/fixture_database_2.sqlite3
38
+ timeout: 5000
39
+
40
+ db2:
41
+ arunit:
42
+ adapter: ibm_db
43
+ host: localhost
44
+ username: arunit
45
+ password: arunit
46
+ database: arunit
47
+ arunit2:
48
+ adapter: ibm_db
49
+ host: localhost
50
+ username: arunit
51
+ password: arunit
52
+ database: arunit2
53
+
54
+ mysql2:
55
+ arunit:
56
+ username: rails
57
+ encoding: utf8
58
+ collation: utf8_unicode_ci
59
+ arunit2:
60
+ username: rails
61
+ encoding: utf8
62
+
63
+ oracle:
64
+ arunit:
65
+ adapter: oracle_enhanced
66
+ database: <%= ENV['ARUNIT_DB_NAME'] || 'orcl' %>
67
+ username: <%= ENV['ARUNIT_USER_NAME'] || 'arunit' %>
68
+ password: <%= ENV['ARUNIT_PASSWORD'] || 'arunit' %>
69
+ emulate_oracle_adapter: true
70
+ arunit2:
71
+ adapter: oracle_enhanced
72
+ database: <%= ENV['ARUNIT_DB_NAME'] || 'orcl' %>
73
+ username: <%= ENV['ARUNIT2_USER_NAME'] || 'arunit2' %>
74
+ password: <%= ENV['ARUNIT2_PASSWORD'] || 'arunit2' %>
75
+ emulate_oracle_adapter: true
76
+
77
+ postgresql:
78
+ arunit:
79
+ min_messages: warning
80
+ arunit2:
81
+ min_messages: warning
82
+
83
+ sqlite3:
84
+ arunit:
85
+ database: <%= FIXTURES_ROOT %>/fixture_database.sqlite3
86
+ timeout: 5000
87
+ arunit2:
88
+ database: <%= FIXTURES_ROOT %>/fixture_database_2.sqlite3
89
+ timeout: 5000
90
+
91
+ sqlite3_mem:
92
+ arunit:
93
+ adapter: sqlite3
94
+ database: ':memory:'
95
+ arunit2:
96
+ adapter: sqlite3
97
+ database: ':memory:'
@@ -0,0 +1,9 @@
1
+ # Please do not use this fixture without `set_fixture_class` as Post
2
+
3
+ _fixture:
4
+ model_class: BadPostModel
5
+
6
+ bad_welcome:
7
+ author_id: 1
8
+ title: Welcome to the another weblog
9
+ body: It's really nice today
@@ -3,9 +3,29 @@ awdr:
3
3
  id: 1
4
4
  name: "Agile Web Development with Rails"
5
5
  format: "paperback"
6
+ status: :published
7
+ read_status: :read
8
+ language: :english
9
+ author_visibility: :visible
10
+ illustrator_visibility: :visible
11
+ font_size: :medium
6
12
 
7
13
  rfr:
8
14
  author_id: 1
9
15
  id: 2
10
16
  name: "Ruby for Rails"
11
17
  format: "ebook"
18
+ status: "proposed"
19
+ read_status: "reading"
20
+
21
+ ddd:
22
+ author_id: 1
23
+ id: 3
24
+ name: "Domain-Driven Design"
25
+ format: "hardcover"
26
+ status: 2
27
+
28
+ tlg:
29
+ author_id: 1
30
+ id: 4
31
+ name: "Thoughtleadering"