ibm_db 3.0.5-x86-mingw32 → 4.0.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (586) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +4 -0
  3. data/LICENSE +1 -1
  4. data/MANIFEST +14 -14
  5. data/ParameterizedQueries README +6 -6
  6. data/README +208 -225
  7. data/ext/Makefile.nt32 +181 -181
  8. data/ext/Makefile.nt32.191 +212 -212
  9. data/ext/extconf.rb +291 -291
  10. data/ext/ibm_db.c +11887 -11887
  11. data/ext/ruby_ibm_db.h +241 -241
  12. data/ext/ruby_ibm_db_cli.c +866 -866
  13. data/ext/ruby_ibm_db_cli.h +500 -500
  14. data/init.rb +41 -41
  15. data/lib/IBM_DB.rb +27 -27
  16. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3452 -3177
  17. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -2
  18. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  19. data/lib/mswin32/ibm_db.rb +91 -123
  20. data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
  21. data/test/active_record/connection_adapters/fake_adapter.rb +49 -46
  22. data/test/assets/example.log +1 -1
  23. data/test/assets/test.txt +1 -1
  24. data/test/cases/adapter_test.rb +351 -276
  25. data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
  26. data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
  27. data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
  28. data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
  29. data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
  30. data/test/cases/adapters/mysql2/connection_test.rb +210 -0
  31. data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
  32. data/test/cases/adapters/mysql2/enum_test.rb +26 -0
  33. data/test/cases/adapters/mysql2/explain_test.rb +21 -0
  34. data/test/cases/adapters/mysql2/json_test.rb +195 -0
  35. data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
  36. data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
  37. data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
  38. data/test/cases/adapters/mysql2/schema_test.rb +126 -0
  39. data/test/cases/adapters/mysql2/sp_test.rb +36 -0
  40. data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
  41. data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
  42. data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
  43. data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
  44. data/test/cases/adapters/postgresql/array_test.rb +339 -0
  45. data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
  46. data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
  47. data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
  48. data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
  49. data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
  50. data/test/cases/adapters/postgresql/citext_test.rb +78 -0
  51. data/test/cases/adapters/postgresql/collation_test.rb +53 -0
  52. data/test/cases/adapters/postgresql/composite_test.rb +132 -0
  53. data/test/cases/adapters/postgresql/connection_test.rb +257 -0
  54. data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
  55. data/test/cases/adapters/postgresql/domain_test.rb +47 -0
  56. data/test/cases/adapters/postgresql/enum_test.rb +91 -0
  57. data/test/cases/adapters/postgresql/explain_test.rb +20 -0
  58. data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
  59. data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
  60. data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
  61. data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
  62. data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
  63. data/test/cases/adapters/postgresql/integer_test.rb +25 -0
  64. data/test/cases/adapters/postgresql/json_test.rb +237 -0
  65. data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
  66. data/test/cases/adapters/postgresql/money_test.rb +96 -0
  67. data/test/cases/adapters/postgresql/network_test.rb +94 -0
  68. data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
  69. data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
  70. data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
  71. data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
  72. data/test/cases/adapters/postgresql/range_test.rb +343 -0
  73. data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
  74. data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
  75. data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
  76. data/test/cases/adapters/postgresql/schema_test.rb +597 -0
  77. data/test/cases/adapters/postgresql/serial_test.rb +154 -0
  78. data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
  79. data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
  80. data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
  81. data/test/cases/adapters/postgresql/utils_test.rb +62 -0
  82. data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
  83. data/test/cases/adapters/postgresql/xml_test.rb +54 -0
  84. data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
  85. data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
  86. data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
  87. data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
  88. data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
  89. data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
  90. data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
  91. data/test/cases/aggregations_test.rb +168 -158
  92. data/test/cases/ar_schema_test.rb +146 -161
  93. data/test/cases/associations/association_scope_test.rb +16 -21
  94. data/test/cases/associations/belongs_to_associations_test.rb +1141 -1029
  95. data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
  96. data/test/cases/associations/callbacks_test.rb +190 -192
  97. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  98. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  99. data/test/cases/associations/eager_load_nested_include_test.rb +126 -128
  100. data/test/cases/associations/eager_singularization_test.rb +148 -148
  101. data/test/cases/associations/eager_test.rb +1514 -1429
  102. data/test/cases/associations/extension_test.rb +87 -82
  103. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -972
  104. data/test/cases/associations/has_many_associations_test.rb +2501 -2182
  105. data/test/cases/associations/has_many_through_associations_test.rb +1271 -1204
  106. data/test/cases/associations/has_one_associations_test.rb +707 -610
  107. data/test/cases/associations/has_one_through_associations_test.rb +383 -380
  108. data/test/cases/associations/inner_join_association_test.rb +139 -139
  109. data/test/cases/associations/inverse_associations_test.rb +733 -706
  110. data/test/cases/associations/join_model_test.rb +777 -754
  111. data/test/cases/associations/left_outer_join_association_test.rb +88 -0
  112. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  113. data/test/cases/associations/required_test.rb +102 -82
  114. data/test/cases/associations_test.rb +385 -380
  115. data/test/cases/attribute_decorators_test.rb +125 -125
  116. data/test/cases/attribute_methods/read_test.rb +60 -60
  117. data/test/cases/attribute_methods_test.rb +1009 -952
  118. data/test/cases/attribute_set_test.rb +270 -210
  119. data/test/cases/attribute_test.rb +246 -180
  120. data/test/cases/attributes_test.rb +253 -136
  121. data/test/cases/autosave_association_test.rb +1708 -1595
  122. data/test/cases/base_test.rb +1713 -1664
  123. data/test/cases/batches_test.rb +489 -212
  124. data/test/cases/binary_test.rb +44 -52
  125. data/test/cases/bind_parameter_test.rb +110 -100
  126. data/test/cases/cache_key_test.rb +25 -0
  127. data/test/cases/calculations_test.rb +798 -646
  128. data/test/cases/callbacks_test.rb +636 -543
  129. data/test/cases/clone_test.rb +40 -40
  130. data/test/cases/coders/json_test.rb +15 -0
  131. data/test/cases/coders/yaml_column_test.rb +63 -63
  132. data/test/cases/collection_cache_key_test.rb +115 -0
  133. data/test/cases/column_alias_test.rb +17 -17
  134. data/test/cases/column_definition_test.rb +92 -123
  135. data/test/cases/comment_test.rb +143 -0
  136. data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -54
  137. data/test/cases/connection_adapters/connection_handler_test.rb +160 -53
  138. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  139. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +255 -293
  140. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -65
  141. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  142. data/test/cases/connection_adapters/schema_cache_test.rb +61 -56
  143. data/test/cases/connection_adapters/type_lookup_test.rb +118 -110
  144. data/test/cases/connection_management_test.rb +112 -122
  145. data/test/cases/connection_pool_test.rb +521 -346
  146. data/test/cases/connection_specification/resolver_test.rb +131 -116
  147. data/test/cases/core_test.rb +112 -112
  148. data/test/cases/counter_cache_test.rb +214 -209
  149. data/test/cases/custom_locking_test.rb +17 -17
  150. data/test/cases/database_statements_test.rb +34 -19
  151. data/test/cases/{invalid_date_test.rb → date_test.rb} +44 -32
  152. data/test/cases/date_time_precision_test.rb +106 -0
  153. data/test/cases/date_time_test.rb +61 -61
  154. data/test/cases/defaults_test.rb +218 -223
  155. data/test/cases/dirty_test.rb +763 -785
  156. data/test/cases/disconnected_test.rb +30 -28
  157. data/test/cases/dup_test.rb +157 -157
  158. data/test/cases/enum_test.rb +444 -290
  159. data/test/cases/errors_test.rb +16 -0
  160. data/test/cases/explain_subscriber_test.rb +64 -64
  161. data/test/cases/explain_test.rb +87 -76
  162. data/test/cases/finder_respond_to_test.rb +60 -60
  163. data/test/cases/finder_test.rb +1294 -1169
  164. data/test/cases/fixture_set/file_test.rb +156 -138
  165. data/test/cases/fixtures_test.rb +988 -908
  166. data/test/cases/forbidden_attributes_protection_test.rb +165 -99
  167. data/test/cases/habtm_destroy_order_test.rb +61 -61
  168. data/test/cases/helper.rb +204 -210
  169. data/test/cases/hot_compatibility_test.rb +142 -54
  170. data/test/cases/i18n_test.rb +45 -45
  171. data/test/cases/inheritance_test.rb +606 -375
  172. data/test/cases/integration_test.rb +155 -139
  173. data/test/cases/invalid_connection_test.rb +24 -22
  174. data/test/cases/invertible_migration_test.rb +387 -295
  175. data/test/cases/json_serialization_test.rb +311 -302
  176. data/test/cases/locking_test.rb +493 -477
  177. data/test/cases/log_subscriber_test.rb +225 -136
  178. data/test/cases/migration/change_schema_test.rb +458 -512
  179. data/test/cases/migration/change_table_test.rb +256 -224
  180. data/test/cases/migration/column_attributes_test.rb +176 -192
  181. data/test/cases/migration/column_positioning_test.rb +56 -56
  182. data/test/cases/migration/columns_test.rb +310 -304
  183. data/test/cases/migration/command_recorder_test.rb +350 -305
  184. data/test/cases/migration/compatibility_test.rb +118 -0
  185. data/test/cases/migration/create_join_table_test.rb +157 -148
  186. data/test/cases/migration/foreign_key_test.rb +360 -328
  187. data/test/cases/migration/helper.rb +39 -39
  188. data/test/cases/migration/index_test.rb +218 -216
  189. data/test/cases/migration/logger_test.rb +36 -36
  190. data/test/cases/migration/pending_migrations_test.rb +52 -53
  191. data/test/cases/migration/references_foreign_key_test.rb +216 -169
  192. data/test/cases/migration/references_index_test.rb +101 -101
  193. data/test/cases/migration/references_statements_test.rb +136 -116
  194. data/test/cases/migration/rename_table_test.rb +93 -93
  195. data/test/cases/migration_test.rb +1157 -959
  196. data/test/cases/migrator_test.rb +470 -388
  197. data/test/cases/mixin_test.rb +68 -70
  198. data/test/cases/modules_test.rb +172 -173
  199. data/test/cases/multiparameter_attributes_test.rb +372 -350
  200. data/test/cases/multiple_db_test.rb +122 -115
  201. data/test/cases/nested_attributes_test.rb +1098 -1070
  202. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  203. data/test/cases/persistence_test.rb +1001 -909
  204. data/test/cases/pooled_connections_test.rb +81 -81
  205. data/test/cases/primary_keys_test.rb +376 -237
  206. data/test/cases/query_cache_test.rb +446 -326
  207. data/test/cases/quoting_test.rb +202 -156
  208. data/test/cases/readonly_test.rb +119 -118
  209. data/test/cases/reaper_test.rb +85 -85
  210. data/test/cases/reflection_test.rb +509 -463
  211. data/test/cases/relation/delegation_test.rb +63 -68
  212. data/test/cases/relation/merging_test.rb +157 -161
  213. data/test/cases/relation/mutation_test.rb +183 -165
  214. data/test/cases/relation/or_test.rb +92 -0
  215. data/test/cases/relation/predicate_builder_test.rb +16 -14
  216. data/test/cases/relation/record_fetch_warning_test.rb +40 -0
  217. data/test/cases/relation/where_chain_test.rb +105 -181
  218. data/test/cases/relation/where_clause_test.rb +182 -0
  219. data/test/cases/relation/where_test.rb +322 -300
  220. data/test/cases/relation_test.rb +328 -319
  221. data/test/cases/relations_test.rb +2026 -1815
  222. data/test/cases/reload_models_test.rb +22 -22
  223. data/test/cases/result_test.rb +90 -80
  224. data/test/cases/sanitize_test.rb +176 -83
  225. data/test/cases/schema_dumper_test.rb +457 -463
  226. data/test/cases/schema_loading_test.rb +52 -0
  227. data/test/cases/scoping/default_scoping_test.rb +528 -454
  228. data/test/cases/scoping/named_scoping_test.rb +561 -524
  229. data/test/cases/scoping/relation_scoping_test.rb +400 -357
  230. data/test/cases/secure_token_test.rb +32 -0
  231. data/test/cases/serialization_test.rb +104 -104
  232. data/test/cases/serialized_attribute_test.rb +364 -277
  233. data/test/cases/statement_cache_test.rb +136 -98
  234. data/test/cases/store_test.rb +195 -194
  235. data/test/cases/suppressor_test.rb +63 -0
  236. data/test/cases/tasks/database_tasks_test.rb +462 -398
  237. data/test/cases/tasks/mysql_rake_test.rb +345 -324
  238. data/test/cases/tasks/postgresql_rake_test.rb +304 -250
  239. data/test/cases/tasks/sqlite_rake_test.rb +220 -193
  240. data/test/cases/test_case.rb +131 -123
  241. data/test/cases/test_fixtures_test.rb +36 -0
  242. data/test/cases/time_precision_test.rb +102 -0
  243. data/test/cases/timestamp_test.rb +501 -467
  244. data/test/cases/touch_later_test.rb +121 -0
  245. data/test/cases/transaction_callbacks_test.rb +518 -452
  246. data/test/cases/transaction_isolation_test.rb +106 -106
  247. data/test/cases/transactions_test.rb +834 -817
  248. data/test/cases/type/adapter_specific_registry_test.rb +133 -0
  249. data/test/cases/type/date_time_test.rb +14 -0
  250. data/test/cases/type/integer_test.rb +27 -121
  251. data/test/cases/type/string_test.rb +22 -36
  252. data/test/cases/type/type_map_test.rb +177 -177
  253. data/test/cases/type_test.rb +39 -0
  254. data/test/cases/types_test.rb +24 -141
  255. data/test/cases/unconnected_test.rb +33 -33
  256. data/test/cases/validations/absence_validation_test.rb +73 -0
  257. data/test/cases/validations/association_validation_test.rb +97 -86
  258. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  259. data/test/cases/validations/i18n_validation_test.rb +86 -90
  260. data/test/cases/validations/length_validation_test.rb +79 -47
  261. data/test/cases/validations/presence_validation_test.rb +103 -68
  262. data/test/cases/validations/uniqueness_validation_test.rb +548 -457
  263. data/test/cases/validations_repair_helper.rb +19 -23
  264. data/test/cases/validations_test.rb +194 -165
  265. data/test/cases/view_test.rb +216 -119
  266. data/test/cases/yaml_serialization_test.rb +121 -126
  267. data/test/config.example.yml +97 -0
  268. data/test/config.rb +5 -5
  269. data/test/fixtures/accounts.yml +29 -29
  270. data/test/fixtures/admin/accounts.yml +2 -2
  271. data/test/fixtures/admin/users.yml +10 -10
  272. data/test/fixtures/author_addresses.original +11 -0
  273. data/test/fixtures/author_addresses.yml +17 -17
  274. data/test/fixtures/author_favorites.yml +3 -3
  275. data/test/fixtures/authors.original +17 -0
  276. data/test/fixtures/authors.yml +23 -23
  277. data/test/fixtures/bad_posts.yml +9 -0
  278. data/test/fixtures/binaries.yml +133 -133
  279. data/test/fixtures/books.yml +31 -11
  280. data/test/fixtures/bulbs.yml +5 -5
  281. data/test/fixtures/cars.yml +9 -9
  282. data/test/fixtures/categories.yml +19 -19
  283. data/test/fixtures/categories/special_categories.yml +9 -9
  284. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
  285. data/test/fixtures/categories_ordered.yml +7 -7
  286. data/test/fixtures/categories_posts.yml +31 -31
  287. data/test/fixtures/categorizations.yml +23 -23
  288. data/test/fixtures/clubs.yml +8 -8
  289. data/test/fixtures/collections.yml +3 -3
  290. data/test/fixtures/colleges.yml +3 -3
  291. data/test/fixtures/comments.yml +65 -65
  292. data/test/fixtures/companies.yml +67 -67
  293. data/test/fixtures/computers.yml +10 -10
  294. data/test/fixtures/content.yml +3 -0
  295. data/test/fixtures/content_positions.yml +3 -0
  296. data/test/fixtures/courses.yml +8 -8
  297. data/test/fixtures/customers.yml +25 -25
  298. data/test/fixtures/dashboards.yml +6 -6
  299. data/test/fixtures/dead_parrots.yml +5 -0
  300. data/test/fixtures/developers.yml +22 -22
  301. data/test/fixtures/developers_projects.yml +16 -16
  302. data/test/fixtures/dog_lovers.yml +7 -7
  303. data/test/fixtures/dogs.yml +4 -4
  304. data/test/fixtures/doubloons.yml +3 -3
  305. data/test/fixtures/edges.yml +5 -5
  306. data/test/fixtures/entrants.yml +14 -14
  307. data/test/fixtures/essays.yml +6 -6
  308. data/test/fixtures/faces.yml +11 -11
  309. data/test/fixtures/fk_test_has_fk.yml +3 -3
  310. data/test/fixtures/fk_test_has_pk.yml +1 -1
  311. data/test/fixtures/friendships.yml +4 -4
  312. data/test/fixtures/funny_jokes.yml +10 -10
  313. data/test/fixtures/interests.yml +33 -33
  314. data/test/fixtures/items.yml +3 -3
  315. data/test/fixtures/jobs.yml +7 -7
  316. data/test/fixtures/legacy_things.yml +3 -3
  317. data/test/fixtures/live_parrots.yml +4 -0
  318. data/test/fixtures/mateys.yml +4 -4
  319. data/test/fixtures/member_details.yml +8 -8
  320. data/test/fixtures/member_types.yml +6 -6
  321. data/test/fixtures/members.yml +11 -11
  322. data/test/fixtures/memberships.yml +34 -34
  323. data/test/fixtures/men.yml +5 -5
  324. data/test/fixtures/minimalistics.yml +2 -2
  325. data/test/fixtures/minivans.yml +5 -5
  326. data/test/fixtures/mixed_case_monkeys.yml +6 -6
  327. data/test/fixtures/mixins.yml +29 -29
  328. data/test/fixtures/movies.yml +7 -7
  329. data/test/fixtures/naked/yml/accounts.yml +1 -1
  330. data/test/fixtures/naked/yml/companies.yml +1 -1
  331. data/test/fixtures/naked/yml/courses.yml +1 -1
  332. data/test/fixtures/naked/yml/parrots.yml +2 -0
  333. data/test/fixtures/naked/yml/trees.yml +3 -0
  334. data/test/fixtures/nodes.yml +29 -0
  335. data/test/fixtures/organizations.yml +5 -5
  336. data/test/fixtures/other_comments.yml +6 -0
  337. data/test/fixtures/other_dogs.yml +2 -0
  338. data/test/fixtures/other_posts.yml +7 -0
  339. data/test/fixtures/other_topics.yml +42 -42
  340. data/test/fixtures/owners.yml +9 -9
  341. data/test/fixtures/parrots.yml +27 -27
  342. data/test/fixtures/parrots_pirates.yml +7 -7
  343. data/test/fixtures/people.yml +24 -24
  344. data/test/fixtures/peoples_treasures.yml +3 -3
  345. data/test/fixtures/pets.yml +19 -19
  346. data/test/fixtures/pirates.yml +15 -12
  347. data/test/fixtures/posts.yml +80 -80
  348. data/test/fixtures/price_estimates.yml +16 -7
  349. data/test/fixtures/products.yml +4 -4
  350. data/test/fixtures/projects.yml +7 -7
  351. data/test/fixtures/ratings.yml +14 -14
  352. data/test/fixtures/readers.yml +11 -11
  353. data/test/fixtures/references.yml +17 -17
  354. data/test/fixtures/reserved_words/distinct.yml +5 -5
  355. data/test/fixtures/reserved_words/distinct_select.yml +11 -11
  356. data/test/fixtures/reserved_words/group.yml +14 -14
  357. data/test/fixtures/reserved_words/select.yml +8 -8
  358. data/test/fixtures/reserved_words/values.yml +7 -7
  359. data/test/fixtures/ships.yml +6 -6
  360. data/test/fixtures/speedometers.yml +8 -8
  361. data/test/fixtures/sponsors.yml +12 -12
  362. data/test/fixtures/string_key_objects.yml +7 -7
  363. data/test/fixtures/subscribers.yml +10 -10
  364. data/test/fixtures/subscriptions.yml +12 -12
  365. data/test/fixtures/taggings.yml +78 -78
  366. data/test/fixtures/tags.yml +11 -11
  367. data/test/fixtures/tasks.yml +7 -7
  368. data/test/fixtures/teapots.yml +3 -3
  369. data/test/fixtures/to_be_linked/accounts.yml +2 -2
  370. data/test/fixtures/to_be_linked/users.yml +10 -10
  371. data/test/fixtures/topics.yml +49 -49
  372. data/test/fixtures/toys.yml +14 -14
  373. data/test/fixtures/traffic_lights.yml +9 -9
  374. data/test/fixtures/treasures.yml +10 -10
  375. data/test/fixtures/trees.yml +3 -0
  376. data/test/fixtures/uuid_children.yml +3 -3
  377. data/test/fixtures/uuid_parents.yml +2 -2
  378. data/test/fixtures/variants.yml +4 -4
  379. data/test/fixtures/vegetables.yml +19 -19
  380. data/test/fixtures/vertices.yml +3 -3
  381. data/test/fixtures/warehouse_things.yml +2 -2
  382. data/test/fixtures/zines.yml +5 -5
  383. data/test/migrations/10_urban/9_add_expressions.rb +11 -11
  384. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
  385. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
  386. data/test/migrations/missing/1000_people_have_middle_names.rb +9 -9
  387. data/test/migrations/missing/1_people_have_last_names.rb +9 -9
  388. data/test/migrations/missing/3_we_need_reminders.rb +12 -12
  389. data/test/migrations/missing/4_innocent_jointable.rb +12 -12
  390. data/test/migrations/rename/1_we_need_things.rb +11 -11
  391. data/test/migrations/rename/2_rename_things.rb +9 -9
  392. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
  393. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
  394. data/test/migrations/to_copy2/1_create_articles.rb +7 -7
  395. data/test/migrations/to_copy2/2_create_comments.rb +7 -7
  396. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
  397. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
  398. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
  399. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
  400. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
  401. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
  402. data/test/migrations/valid/2_we_need_reminders.rb +12 -12
  403. data/test/migrations/valid/3_innocent_jointable.rb +12 -12
  404. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
  405. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -12
  406. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -12
  407. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
  408. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
  409. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
  410. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
  411. data/test/models/admin.rb +5 -5
  412. data/test/models/admin/account.rb +3 -3
  413. data/test/models/admin/randomly_named_c1.rb +6 -2
  414. data/test/models/admin/user.rb +40 -40
  415. data/test/models/aircraft.rb +5 -4
  416. data/test/models/arunit2_model.rb +3 -3
  417. data/test/models/author.rb +209 -212
  418. data/test/models/auto_id.rb +4 -4
  419. data/test/models/autoloadable/extra_firm.rb +2 -2
  420. data/test/models/binary.rb +2 -2
  421. data/test/models/bird.rb +12 -12
  422. data/test/models/book.rb +23 -18
  423. data/test/models/boolean.rb +2 -2
  424. data/test/models/bulb.rb +52 -51
  425. data/test/models/cake_designer.rb +3 -3
  426. data/test/models/car.rb +29 -26
  427. data/test/models/carrier.rb +2 -2
  428. data/test/models/cat.rb +10 -0
  429. data/test/models/categorization.rb +19 -19
  430. data/test/models/category.rb +35 -35
  431. data/test/models/chef.rb +8 -7
  432. data/test/models/citation.rb +3 -3
  433. data/test/models/club.rb +25 -23
  434. data/test/models/college.rb +10 -10
  435. data/test/models/column.rb +3 -3
  436. data/test/models/column_name.rb +3 -3
  437. data/test/models/comment.rb +76 -64
  438. data/test/models/company.rb +230 -228
  439. data/test/models/company_in_module.rb +98 -98
  440. data/test/models/computer.rb +3 -3
  441. data/test/models/contact.rb +41 -41
  442. data/test/models/content.rb +40 -0
  443. data/test/models/contract.rb +20 -20
  444. data/test/models/country.rb +7 -7
  445. data/test/models/course.rb +6 -6
  446. data/test/models/customer.rb +83 -77
  447. data/test/models/customer_carrier.rb +14 -14
  448. data/test/models/dashboard.rb +3 -3
  449. data/test/models/default.rb +2 -2
  450. data/test/models/department.rb +4 -4
  451. data/test/models/developer.rb +274 -255
  452. data/test/models/dog.rb +5 -5
  453. data/test/models/dog_lover.rb +5 -5
  454. data/test/models/doubloon.rb +12 -12
  455. data/test/models/drink_designer.rb +3 -3
  456. data/test/models/edge.rb +5 -5
  457. data/test/models/electron.rb +5 -5
  458. data/test/models/engine.rb +4 -4
  459. data/test/models/entrant.rb +3 -3
  460. data/test/models/essay.rb +5 -5
  461. data/test/models/event.rb +3 -3
  462. data/test/models/eye.rb +37 -37
  463. data/test/models/face.rb +9 -9
  464. data/test/models/friendship.rb +6 -6
  465. data/test/models/guid.rb +2 -2
  466. data/test/models/guitar.rb +4 -0
  467. data/test/models/hotel.rb +11 -9
  468. data/test/models/image.rb +3 -3
  469. data/test/models/interest.rb +5 -5
  470. data/test/models/invoice.rb +4 -4
  471. data/test/models/item.rb +7 -7
  472. data/test/models/job.rb +7 -7
  473. data/test/models/joke.rb +7 -7
  474. data/test/models/keyboard.rb +3 -3
  475. data/test/models/legacy_thing.rb +3 -3
  476. data/test/models/lesson.rb +11 -11
  477. data/test/models/line_item.rb +3 -3
  478. data/test/models/liquid.rb +4 -4
  479. data/test/models/man.rb +11 -11
  480. data/test/models/matey.rb +4 -4
  481. data/test/models/member.rb +42 -41
  482. data/test/models/member_detail.rb +8 -7
  483. data/test/models/member_type.rb +3 -3
  484. data/test/models/membership.rb +35 -35
  485. data/test/models/mentor.rb +3 -0
  486. data/test/models/minimalistic.rb +2 -2
  487. data/test/models/minivan.rb +9 -9
  488. data/test/models/mixed_case_monkey.rb +3 -3
  489. data/test/models/mocktail_designer.rb +2 -0
  490. data/test/models/molecule.rb +6 -6
  491. data/test/models/movie.rb +5 -5
  492. data/test/models/node.rb +5 -0
  493. data/test/models/non_primary_key.rb +2 -0
  494. data/test/models/notification.rb +3 -0
  495. data/test/models/order.rb +4 -4
  496. data/test/models/organization.rb +14 -14
  497. data/test/models/other_dog.rb +5 -0
  498. data/test/models/owner.rb +37 -34
  499. data/test/models/parrot.rb +28 -29
  500. data/test/models/person.rb +142 -143
  501. data/test/models/personal_legacy_thing.rb +4 -4
  502. data/test/models/pet.rb +18 -15
  503. data/test/models/pet_treasure.rb +6 -0
  504. data/test/models/pirate.rb +92 -92
  505. data/test/models/possession.rb +3 -3
  506. data/test/models/post.rb +273 -264
  507. data/test/models/price_estimate.rb +4 -4
  508. data/test/models/professor.rb +5 -5
  509. data/test/models/project.rb +40 -31
  510. data/test/models/publisher.rb +2 -2
  511. data/test/models/publisher/article.rb +4 -4
  512. data/test/models/publisher/magazine.rb +3 -3
  513. data/test/models/randomly_named_c1.rb +1 -1
  514. data/test/models/rating.rb +4 -4
  515. data/test/models/reader.rb +23 -23
  516. data/test/models/recipe.rb +3 -0
  517. data/test/models/record.rb +2 -2
  518. data/test/models/reference.rb +22 -22
  519. data/test/models/reply.rb +61 -61
  520. data/test/models/ship.rb +39 -33
  521. data/test/models/ship_part.rb +8 -8
  522. data/test/models/shop.rb +17 -17
  523. data/test/models/shop_account.rb +6 -6
  524. data/test/models/speedometer.rb +6 -6
  525. data/test/models/sponsor.rb +7 -7
  526. data/test/models/string_key_object.rb +3 -3
  527. data/test/models/student.rb +4 -4
  528. data/test/models/subject.rb +16 -16
  529. data/test/models/subscriber.rb +8 -8
  530. data/test/models/subscription.rb +4 -4
  531. data/test/models/tag.rb +13 -7
  532. data/test/models/tagging.rb +13 -13
  533. data/test/models/task.rb +5 -5
  534. data/test/models/topic.rb +118 -124
  535. data/test/models/toy.rb +6 -6
  536. data/test/models/traffic_light.rb +4 -4
  537. data/test/models/treasure.rb +14 -14
  538. data/test/models/treaty.rb +7 -7
  539. data/test/models/tree.rb +3 -0
  540. data/test/models/tuning_peg.rb +4 -0
  541. data/test/models/tyre.rb +11 -11
  542. data/test/models/user.rb +14 -0
  543. data/test/models/uuid_child.rb +3 -3
  544. data/test/models/uuid_item.rb +6 -0
  545. data/test/models/uuid_parent.rb +3 -3
  546. data/test/models/vegetables.rb +24 -24
  547. data/test/models/vehicle.rb +6 -6
  548. data/test/models/vertex.rb +9 -9
  549. data/test/models/warehouse_thing.rb +5 -5
  550. data/test/models/wheel.rb +3 -3
  551. data/test/models/without_table.rb +3 -3
  552. data/test/models/zine.rb +3 -3
  553. data/test/schema/mysql2_specific_schema.rb +68 -58
  554. data/test/schema/oracle_specific_schema.rb +40 -43
  555. data/test/schema/postgresql_specific_schema.rb +114 -202
  556. data/test/schema/schema.rb +1057 -952
  557. data/test/schema/schema.rb.original +1057 -0
  558. data/test/schema/sqlite_specific_schema.rb +18 -22
  559. data/test/support/config.rb +43 -43
  560. data/test/support/connection.rb +23 -22
  561. data/test/support/connection_helper.rb +14 -14
  562. data/test/support/ddl_helper.rb +8 -8
  563. data/test/support/schema_dumping_helper.rb +20 -20
  564. data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
  565. data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
  566. metadata +129 -28
  567. data/lib/mswin32/rb19x/ibm_db.so +0 -0
  568. data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
  569. data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
  570. data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
  571. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
  572. data/test/cases/attribute_methods/serialization_test.rb +0 -29
  573. data/test/cases/migration/change_schema_test - Copy.rb +0 -448
  574. data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
  575. data/test/cases/migration/table_and_index_test.rb +0 -24
  576. data/test/cases/relation/where_test2.rb +0 -36
  577. data/test/cases/type/decimal_test.rb +0 -56
  578. data/test/cases/type/unsigned_integer_test.rb +0 -18
  579. data/test/cases/xml_serialization_test.rb +0 -457
  580. data/test/connections/native_ibm_db/connection.rb +0 -44
  581. data/test/fixtures/naked/csv/accounts.csv +0 -1
  582. data/test/schema/i5/ibm_db_specific_schema.rb +0 -137
  583. data/test/schema/ids/ibm_db_specific_schema.rb +0 -140
  584. data/test/schema/luw/ibm_db_specific_schema.rb +0 -137
  585. data/test/schema/mysql_specific_schema.rb +0 -70
  586. data/test/schema/zOS/ibm_db_specific_schema.rb +0 -208
@@ -1,40 +1,40 @@
1
- require "cases/helper"
2
- require 'models/topic'
3
-
4
- module ActiveRecord
5
- class CloneTest < ActiveRecord::TestCase
6
- fixtures :topics
7
-
8
- def test_persisted
9
- topic = Topic.first
10
- cloned = topic.clone
11
- assert topic.persisted?, 'topic persisted'
12
- assert cloned.persisted?, 'topic persisted'
13
- assert !cloned.new_record?, 'topic is not new'
14
- end
15
-
16
- def test_stays_frozen
17
- topic = Topic.first
18
- topic.freeze
19
-
20
- cloned = topic.clone
21
- assert cloned.persisted?, 'topic persisted'
22
- assert !cloned.new_record?, 'topic is not new'
23
- assert cloned.frozen?, 'topic should be frozen'
24
- end
25
-
26
- def test_shallow
27
- topic = Topic.first
28
- cloned = topic.clone
29
- topic.author_name = 'Aaron'
30
- assert_equal 'Aaron', cloned.author_name
31
- end
32
-
33
- def test_freezing_a_cloned_model_does_not_freeze_clone
34
- cloned = Topic.new
35
- clone = cloned.clone
36
- cloned.freeze
37
- assert_not clone.frozen?
38
- end
39
- end
40
- end
1
+ require "cases/helper"
2
+ require 'models/topic'
3
+
4
+ module ActiveRecord
5
+ class CloneTest < ActiveRecord::TestCase
6
+ fixtures :topics
7
+
8
+ def test_persisted
9
+ topic = Topic.first
10
+ cloned = topic.clone
11
+ assert topic.persisted?, 'topic persisted'
12
+ assert cloned.persisted?, 'topic persisted'
13
+ assert !cloned.new_record?, 'topic is not new'
14
+ end
15
+
16
+ def test_stays_frozen
17
+ topic = Topic.first
18
+ topic.freeze
19
+
20
+ cloned = topic.clone
21
+ assert cloned.persisted?, 'topic persisted'
22
+ assert !cloned.new_record?, 'topic is not new'
23
+ assert cloned.frozen?, 'topic should be frozen'
24
+ end
25
+
26
+ def test_shallow
27
+ topic = Topic.first
28
+ cloned = topic.clone
29
+ topic.author_name = 'Aaron'
30
+ assert_equal 'Aaron', cloned.author_name
31
+ end
32
+
33
+ def test_freezing_a_cloned_model_does_not_freeze_clone
34
+ cloned = Topic.new
35
+ clone = cloned.clone
36
+ cloned.freeze
37
+ assert_not clone.frozen?
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,15 @@
1
+ require "cases/helper"
2
+
3
+ module ActiveRecord
4
+ module Coders
5
+ class JSONTest < ActiveRecord::TestCase
6
+ def test_returns_nil_if_empty_string_given
7
+ assert_nil JSON.load("")
8
+ end
9
+
10
+ def test_returns_nil_if_nil_given
11
+ assert_nil JSON.load(nil)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,63 +1,63 @@
1
-
2
- require "cases/helper"
3
-
4
- module ActiveRecord
5
- module Coders
6
- class YAMLColumnTest < ActiveRecord::TestCase
7
- def test_initialize_takes_class
8
- coder = YAMLColumn.new(Object)
9
- assert_equal Object, coder.object_class
10
- end
11
-
12
- def test_type_mismatch_on_different_classes_on_dump
13
- coder = YAMLColumn.new(Array)
14
- assert_raises(SerializationTypeMismatch) do
15
- coder.dump("a")
16
- end
17
- end
18
-
19
- def test_type_mismatch_on_different_classes
20
- coder = YAMLColumn.new(Array)
21
- assert_raises(SerializationTypeMismatch) do
22
- coder.load "--- foo"
23
- end
24
- end
25
-
26
- def test_nil_is_ok
27
- coder = YAMLColumn.new
28
- assert_nil coder.load "--- "
29
- end
30
-
31
- def test_returns_new_with_different_class
32
- coder = YAMLColumn.new SerializationTypeMismatch
33
- assert_equal SerializationTypeMismatch, coder.load("--- ").class
34
- end
35
-
36
- def test_returns_string_unless_starts_with_dash
37
- coder = YAMLColumn.new
38
- assert_equal 'foo', coder.load("foo")
39
- end
40
-
41
- def test_load_handles_other_classes
42
- coder = YAMLColumn.new
43
- assert_equal [], coder.load([])
44
- end
45
-
46
- def test_load_doesnt_swallow_yaml_exceptions
47
- coder = YAMLColumn.new
48
- bad_yaml = '--- {'
49
- assert_raises(Psych::SyntaxError) do
50
- coder.load(bad_yaml)
51
- end
52
- end
53
-
54
- def test_load_doesnt_handle_undefined_class_or_module
55
- coder = YAMLColumn.new
56
- missing_class_yaml = '--- !ruby/object:DoesNotExistAndShouldntEver {}\n'
57
- assert_raises(ArgumentError) do
58
- coder.load(missing_class_yaml)
59
- end
60
- end
61
- end
62
- end
63
- end
1
+
2
+ require "cases/helper"
3
+
4
+ module ActiveRecord
5
+ module Coders
6
+ class YAMLColumnTest < ActiveRecord::TestCase
7
+ def test_initialize_takes_class
8
+ coder = YAMLColumn.new(Object)
9
+ assert_equal Object, coder.object_class
10
+ end
11
+
12
+ def test_type_mismatch_on_different_classes_on_dump
13
+ coder = YAMLColumn.new(Array)
14
+ assert_raises(SerializationTypeMismatch) do
15
+ coder.dump("a")
16
+ end
17
+ end
18
+
19
+ def test_type_mismatch_on_different_classes
20
+ coder = YAMLColumn.new(Array)
21
+ assert_raises(SerializationTypeMismatch) do
22
+ coder.load "--- foo"
23
+ end
24
+ end
25
+
26
+ def test_nil_is_ok
27
+ coder = YAMLColumn.new
28
+ assert_nil coder.load "--- "
29
+ end
30
+
31
+ def test_returns_new_with_different_class
32
+ coder = YAMLColumn.new SerializationTypeMismatch
33
+ assert_equal SerializationTypeMismatch, coder.load("--- ").class
34
+ end
35
+
36
+ def test_returns_string_unless_starts_with_dash
37
+ coder = YAMLColumn.new
38
+ assert_equal 'foo', coder.load("foo")
39
+ end
40
+
41
+ def test_load_handles_other_classes
42
+ coder = YAMLColumn.new
43
+ assert_equal [], coder.load([])
44
+ end
45
+
46
+ def test_load_doesnt_swallow_yaml_exceptions
47
+ coder = YAMLColumn.new
48
+ bad_yaml = '--- {'
49
+ assert_raises(Psych::SyntaxError) do
50
+ coder.load(bad_yaml)
51
+ end
52
+ end
53
+
54
+ def test_load_doesnt_handle_undefined_class_or_module
55
+ coder = YAMLColumn.new
56
+ missing_class_yaml = '--- !ruby/object:DoesNotExistAndShouldntEver {}\n'
57
+ assert_raises(ArgumentError) do
58
+ coder.load(missing_class_yaml)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,115 @@
1
+ require "cases/helper"
2
+ require "models/computer"
3
+ require "models/developer"
4
+ require "models/project"
5
+ require "models/topic"
6
+ require "models/post"
7
+ require "models/comment"
8
+
9
+ module ActiveRecord
10
+ class CollectionCacheKeyTest < ActiveRecord::TestCase
11
+ fixtures :developers, :projects, :developers_projects, :topics, :comments, :posts
12
+
13
+ test "collection_cache_key on model" do
14
+ assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, Developer.collection_cache_key)
15
+ end
16
+
17
+ test "cache_key for relation" do
18
+ developers = Developer.where(salary: 100000).order(updated_at: :desc)
19
+ last_developer_timestamp = developers.first.updated_at
20
+
21
+ assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, developers.cache_key)
22
+
23
+ /\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/ =~ developers.cache_key
24
+
25
+ assert_equal Digest::MD5.hexdigest(developers.to_sql), $1
26
+ assert_equal developers.count.to_s, $2
27
+ assert_equal last_developer_timestamp.to_s(ActiveRecord::Base.cache_timestamp_format), $3
28
+ end
29
+
30
+ test "cache_key for relation with limit" do
31
+ developers = Developer.where(salary: 100000).order(updated_at: :desc).limit(5)
32
+ last_developer_timestamp = developers.first.updated_at
33
+
34
+ assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, developers.cache_key)
35
+
36
+ /\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/ =~ developers.cache_key
37
+
38
+ assert_equal Digest::MD5.hexdigest(developers.to_sql), $1
39
+ assert_equal developers.count.to_s, $2
40
+ assert_equal last_developer_timestamp.to_s(ActiveRecord::Base.cache_timestamp_format), $3
41
+ end
42
+
43
+ test "cache_key for loaded relation" do
44
+ developers = Developer.where(salary: 100000).order(updated_at: :desc).limit(5).load
45
+ last_developer_timestamp = developers.first.updated_at
46
+
47
+ assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, developers.cache_key)
48
+
49
+ /\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/ =~ developers.cache_key
50
+
51
+ assert_equal Digest::MD5.hexdigest(developers.to_sql), $1
52
+ assert_equal developers.count.to_s, $2
53
+ assert_equal last_developer_timestamp.to_s(ActiveRecord::Base.cache_timestamp_format), $3
54
+ end
55
+
56
+ test "it triggers at most one query" do
57
+ developers = Developer.where(name: "David")
58
+
59
+ assert_queries(1) { developers.cache_key }
60
+ assert_queries(0) { developers.cache_key }
61
+ end
62
+
63
+ test "it doesn't trigger any query if the relation is already loaded" do
64
+ developers = Developer.where(name: "David").load
65
+ assert_queries(0) { developers.cache_key }
66
+ end
67
+
68
+ test "relation cache_key changes when the sql query changes" do
69
+ developers = Developer.where(name: "David")
70
+ other_relation = Developer.where(name: "David").where("1 = 1")
71
+
72
+ assert_not_equal developers.cache_key, other_relation.cache_key
73
+ end
74
+
75
+ test "cache_key for empty relation" do
76
+ developers = Developer.where(name: "Non Existent Developer")
77
+ assert_match(/\Adevelopers\/query-(\h+)-0\Z/, developers.cache_key)
78
+ end
79
+
80
+ test "cache_key with custom timestamp column" do
81
+ topics = Topic.where("title like ?", "%Topic%")
82
+ last_topic_timestamp = topics(:fifth).written_on.utc.to_s(:usec)
83
+ assert_match(last_topic_timestamp, topics.cache_key(:written_on))
84
+ end
85
+
86
+ test "cache_key with unknown timestamp column" do
87
+ topics = Topic.where("title like ?", "%Topic%")
88
+ assert_raises(ActiveRecord::StatementInvalid) { topics.cache_key(:published_at) }
89
+ end
90
+
91
+ test "collection proxy provides a cache_key" do
92
+ developers = projects(:active_record).developers
93
+ assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, developers.cache_key)
94
+ end
95
+
96
+ test "cache_key for loaded collection with zero size" do
97
+ Comment.delete_all
98
+ posts = Post.includes(:comments)
99
+ empty_loaded_collection = posts.first.comments
100
+
101
+ assert_match(/\Acomments\/query-(\h+)-0\Z/, empty_loaded_collection.cache_key)
102
+ end
103
+
104
+ test "cache_key for queries with offset which return 0 rows" do
105
+ developers = Developer.offset(20)
106
+ assert_match(/\Adevelopers\/query-(\h+)-0\Z/, developers.cache_key)
107
+ end
108
+
109
+ test "cache_key with a relation having selected columns" do
110
+ developers = Developer.select(:salary)
111
+
112
+ assert_match(/\Adevelopers\/query-(\h+)-(\d+)-(\d+)\Z/, developers.cache_key)
113
+ end
114
+ end
115
+ end
@@ -1,17 +1,17 @@
1
- require "cases/helper"
2
- require 'models/topic'
3
-
4
- class TestColumnAlias < ActiveRecord::TestCase
5
- fixtures :topics
6
-
7
- QUERY = if 'Oracle' == ActiveRecord::Base.connection.adapter_name
8
- 'SELECT id AS pk FROM topics WHERE ROWNUM < 2'
9
- else
10
- 'SELECT id AS pk FROM topics'
11
- end
12
-
13
- def test_column_alias
14
- records = Topic.connection.select_all(QUERY)
15
- assert_equal 'pk', records[0].keys[0]
16
- end
17
- end
1
+ require "cases/helper"
2
+ require 'models/topic'
3
+
4
+ class TestColumnAlias < ActiveRecord::TestCase
5
+ fixtures :topics
6
+
7
+ QUERY = if 'Oracle' == ActiveRecord::Base.connection.adapter_name
8
+ 'SELECT id AS pk FROM topics WHERE ROWNUM < 2'
9
+ else
10
+ 'SELECT id AS pk FROM topics'
11
+ end
12
+
13
+ def test_column_alias
14
+ records = Topic.connection.select_all(QUERY)
15
+ assert_equal 'pk', records[0].keys[0]
16
+ end
17
+ end
@@ -1,123 +1,92 @@
1
- require "cases/helper"
2
-
3
- module ActiveRecord
4
- module ConnectionAdapters
5
- class ColumnDefinitionTest < ActiveRecord::TestCase
6
- def setup
7
- @adapter = AbstractAdapter.new(nil)
8
- def @adapter.native_database_types
9
- {:string => "varchar"}
10
- end
11
- @viz = @adapter.schema_creation
12
- end
13
-
14
- # Avoid column definitions in create table statements like:
15
- # `title` varchar(255) DEFAULT NULL
16
- def test_should_not_include_default_clause_when_default_is_null
17
- column = Column.new("title", nil, Type::String.new(limit: 20))
18
- column_def = ColumnDefinition.new(
19
- column.name, "string",
20
- column.limit, column.precision, column.scale, column.default, column.null)
21
- assert_equal "title varchar(20)", @viz.accept(column_def)
22
- end
23
-
24
- def test_should_include_default_clause_when_default_is_present
25
- column = Column.new("title", "Hello", Type::String.new(limit: 20))
26
- column_def = ColumnDefinition.new(
27
- column.name, "string",
28
- column.limit, column.precision, column.scale, column.default, column.null)
29
- assert_equal %Q{title varchar(20) DEFAULT 'Hello'}, @viz.accept(column_def)
30
- end
31
-
32
- def test_should_specify_not_null_if_null_option_is_false
33
- column = Column.new("title", "Hello", Type::String.new(limit: 20), "varchar(20)", false)
34
- column_def = ColumnDefinition.new(
35
- column.name, "string",
36
- column.limit, column.precision, column.scale, column.default, column.null)
37
- assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, @viz.accept(column_def)
38
- end
39
-
40
- if current_adapter?(:MysqlAdapter)
41
- def test_should_set_default_for_mysql_binary_data_types
42
- binary_column = MysqlAdapter::Column.new("title", "a", Type::Binary.new, "binary(1)")
43
- assert_equal "a", binary_column.default
44
-
45
- varbinary_column = MysqlAdapter::Column.new("title", "a", Type::Binary.new, "varbinary(1)")
46
- assert_equal "a", varbinary_column.default
47
- end
48
-
49
- def test_should_not_set_default_for_blob_and_text_data_types
50
- assert_raise ArgumentError do
51
- MysqlAdapter::Column.new("title", "a", Type::Binary.new, "blob")
52
- end
53
-
54
- assert_raise ArgumentError do
55
- MysqlAdapter::Column.new("title", "Hello", Type::Text.new)
56
- end
57
-
58
- text_column = MysqlAdapter::Column.new("title", nil, Type::Text.new)
59
- assert_equal nil, text_column.default
60
-
61
- not_null_text_column = MysqlAdapter::Column.new("title", nil, Type::Text.new, "text", false)
62
- assert_equal "", not_null_text_column.default
63
- end
64
-
65
- def test_has_default_should_return_false_for_blob_and_text_data_types
66
- blob_column = MysqlAdapter::Column.new("title", nil, Type::Binary.new, "blob")
67
- assert !blob_column.has_default?
68
-
69
- text_column = MysqlAdapter::Column.new("title", nil, Type::Text.new)
70
- assert !text_column.has_default?
71
- end
72
- end
73
-
74
- if current_adapter?(:Mysql2Adapter)
75
- def test_should_set_default_for_mysql_binary_data_types
76
- binary_column = Mysql2Adapter::Column.new("title", "a", Type::Binary.new, "binary(1)")
77
- assert_equal "a", binary_column.default
78
-
79
- varbinary_column = Mysql2Adapter::Column.new("title", "a", Type::Binary.new, "varbinary(1)")
80
- assert_equal "a", varbinary_column.default
81
- end
82
-
83
- def test_should_not_set_default_for_blob_and_text_data_types
84
- assert_raise ArgumentError do
85
- Mysql2Adapter::Column.new("title", "a", Type::Binary.new, "blob")
86
- end
87
-
88
- assert_raise ArgumentError do
89
- Mysql2Adapter::Column.new("title", "Hello", Type::Text.new)
90
- end
91
-
92
- text_column = Mysql2Adapter::Column.new("title", nil, Type::Text.new)
93
- assert_equal nil, text_column.default
94
-
95
- not_null_text_column = Mysql2Adapter::Column.new("title", nil, Type::Text.new, "text", false)
96
- assert_equal "", not_null_text_column.default
97
- end
98
-
99
- def test_has_default_should_return_false_for_blob_and_text_data_types
100
- blob_column = Mysql2Adapter::Column.new("title", nil, Type::Binary.new, "blob")
101
- assert !blob_column.has_default?
102
-
103
- text_column = Mysql2Adapter::Column.new("title", nil, Type::Text.new)
104
- assert !text_column.has_default?
105
- end
106
- end
107
-
108
- if current_adapter?(:PostgreSQLAdapter)
109
- def test_bigint_column_should_map_to_integer
110
- oid = PostgreSQLAdapter::OID::Integer.new
111
- bigint_column = PostgreSQLColumn.new('number', nil, oid, "bigint")
112
- assert_equal :integer, bigint_column.type
113
- end
114
-
115
- def test_smallint_column_should_map_to_integer
116
- oid = PostgreSQLAdapter::OID::Integer.new
117
- smallint_column = PostgreSQLColumn.new('number', nil, oid, "smallint")
118
- assert_equal :integer, smallint_column.type
119
- end
120
- end
121
- end
122
- end
123
- end
1
+ require "cases/helper"
2
+
3
+ module ActiveRecord
4
+ module ConnectionAdapters
5
+ class ColumnDefinitionTest < ActiveRecord::TestCase
6
+ def setup
7
+ @adapter = AbstractAdapter.new(nil)
8
+ def @adapter.native_database_types
9
+ {:string => "varchar"}
10
+ end
11
+ @viz = @adapter.schema_creation
12
+ end
13
+
14
+ # Avoid column definitions in create table statements like:
15
+ # `title` varchar(255) DEFAULT NULL
16
+ def test_should_not_include_default_clause_when_default_is_null
17
+ column = Column.new("title", nil, SqlTypeMetadata.new(limit: 20))
18
+ column_def = ColumnDefinition.new(
19
+ column.name, "string",
20
+ column.limit, column.precision, column.scale, column.default, column.null)
21
+ assert_equal "title varchar(20)", @viz.accept(column_def)
22
+ end
23
+
24
+ def test_should_include_default_clause_when_default_is_present
25
+ column = Column.new("title", "Hello", SqlTypeMetadata.new(limit: 20))
26
+ column_def = ColumnDefinition.new(
27
+ column.name, "string",
28
+ column.limit, column.precision, column.scale, column.default, column.null)
29
+ assert_equal %Q{title varchar(20) DEFAULT 'Hello'}, @viz.accept(column_def)
30
+ end
31
+
32
+ def test_should_specify_not_null_if_null_option_is_false
33
+ type_metadata = SqlTypeMetadata.new(limit: 20)
34
+ column = Column.new("title", "Hello", type_metadata, false)
35
+ column_def = ColumnDefinition.new(
36
+ column.name, "string",
37
+ column.limit, column.precision, column.scale, column.default, column.null)
38
+ assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, @viz.accept(column_def)
39
+ end
40
+
41
+ if current_adapter?(:Mysql2Adapter)
42
+ def test_should_set_default_for_mysql_binary_data_types
43
+ type = SqlTypeMetadata.new(type: :binary, sql_type: "binary(1)")
44
+ binary_column = MySQL::Column.new("title", "a", type)
45
+ assert_equal "a", binary_column.default
46
+
47
+ type = SqlTypeMetadata.new(type: :binary, sql_type: "varbinary")
48
+ varbinary_column = MySQL::Column.new("title", "a", type)
49
+ assert_equal "a", varbinary_column.default
50
+ end
51
+
52
+ def test_should_be_empty_string_default_for_mysql_binary_data_types
53
+ type = SqlTypeMetadata.new(type: :binary, sql_type: "binary(1)")
54
+ binary_column = MySQL::Column.new("title", "", type, false)
55
+ assert_equal "", binary_column.default
56
+
57
+ type = SqlTypeMetadata.new(type: :binary, sql_type: "varbinary")
58
+ varbinary_column = MySQL::Column.new("title", "", type, false)
59
+ assert_equal "", varbinary_column.default
60
+ end
61
+
62
+ def test_should_not_set_default_for_blob_and_text_data_types
63
+ assert_raise ArgumentError do
64
+ MySQL::Column.new("title", "a", SqlTypeMetadata.new(sql_type: "blob"))
65
+ end
66
+
67
+ text_type = MySQL::TypeMetadata.new(
68
+ SqlTypeMetadata.new(type: :text))
69
+ assert_raise ArgumentError do
70
+ MySQL::Column.new("title", "Hello", text_type)
71
+ end
72
+
73
+ text_column = MySQL::Column.new("title", nil, text_type)
74
+ assert_equal nil, text_column.default
75
+
76
+ not_null_text_column = MySQL::Column.new("title", nil, text_type, false)
77
+ assert_equal "", not_null_text_column.default
78
+ end
79
+
80
+ def test_has_default_should_return_false_for_blob_and_text_data_types
81
+ binary_type = SqlTypeMetadata.new(sql_type: "blob")
82
+ blob_column = MySQL::Column.new("title", nil, binary_type)
83
+ assert !blob_column.has_default?
84
+
85
+ text_type = SqlTypeMetadata.new(type: :text)
86
+ text_column = MySQL::Column.new("title", nil, text_type)
87
+ assert !text_column.has_default?
88
+ end
89
+ end
90
+ end
91
+ end
92
+ end