ibm_db 3.0.4-x86-mingw32 → 3.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 (463) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +4 -1
  3. data/LICENSE +1 -1
  4. data/MANIFEST +14 -14
  5. data/README +225 -225
  6. data/ext/Makefile.nt32 +181 -181
  7. data/ext/Makefile.nt32.191 +212 -212
  8. data/ext/extconf.rb +291 -291
  9. data/ext/ibm_db.c +11887 -11884
  10. data/ext/ruby_ibm_db.h +241 -241
  11. data/ext/ruby_ibm_db_cli.c +866 -866
  12. data/ext/ruby_ibm_db_cli.h +500 -500
  13. data/init.rb +41 -41
  14. data/lib/IBM_DB.rb +27 -27
  15. data/lib/active_record/connection_adapters/ibm_db_adapter.rb +3177 -3177
  16. data/lib/active_record/connection_adapters/ibmdb_adapter.rb +1 -1
  17. data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
  18. data/lib/mswin32/ibm_db.rb +122 -122
  19. data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
  20. data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
  21. data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
  22. data/test/active_record/connection_adapters/fake_adapter.rb +46 -46
  23. data/test/assets/example.log +1 -1
  24. data/test/assets/test.txt +1 -1
  25. data/test/cases/adapter_test.rb +276 -261
  26. data/test/cases/aggregations_test.rb +158 -158
  27. data/test/cases/ar_schema_test.rb +161 -161
  28. data/test/cases/associations/association_scope_test.rb +21 -21
  29. data/test/cases/associations/belongs_to_associations_test.rb +1029 -1029
  30. data/test/cases/associations/callbacks_test.rb +192 -192
  31. data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
  32. data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -26
  33. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
  34. data/test/cases/associations/eager_load_nested_include_test.rb +128 -128
  35. data/test/cases/associations/eager_singularization_test.rb +148 -148
  36. data/test/cases/associations/eager_test.rb +1429 -1411
  37. data/test/cases/associations/extension_test.rb +82 -82
  38. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +972 -932
  39. data/test/cases/associations/has_many_associations_test.rb +2182 -2162
  40. data/test/cases/associations/has_many_through_associations_test.rb +1204 -1204
  41. data/test/cases/associations/has_one_associations_test.rb +610 -610
  42. data/test/cases/associations/has_one_through_associations_test.rb +380 -380
  43. data/test/cases/associations/inner_join_association_test.rb +139 -139
  44. data/test/cases/associations/inverse_associations_test.rb +706 -693
  45. data/test/cases/associations/join_model_test.rb +754 -754
  46. data/test/cases/associations/nested_through_associations_test.rb +579 -579
  47. data/test/cases/associations/required_test.rb +82 -82
  48. data/test/cases/associations_test.rb +380 -380
  49. data/test/cases/attribute_decorators_test.rb +125 -125
  50. data/test/cases/attribute_methods/read_test.rb +60 -60
  51. data/test/cases/attribute_methods/serialization_test.rb +29 -29
  52. data/test/cases/attribute_methods_test.rb +952 -952
  53. data/test/cases/attribute_set_test.rb +210 -200
  54. data/test/cases/attribute_test.rb +180 -180
  55. data/test/cases/attributes_test.rb +136 -136
  56. data/test/cases/autosave_association_test.rb +1595 -1595
  57. data/test/cases/base_test.rb +1664 -1638
  58. data/test/cases/batches_test.rb +212 -212
  59. data/test/cases/binary_test.rb +52 -52
  60. data/test/cases/bind_parameter_test.rb +100 -100
  61. data/test/cases/calculations_test.rb +646 -646
  62. data/test/cases/callbacks_test.rb +543 -543
  63. data/test/cases/clone_test.rb +40 -40
  64. data/test/cases/coders/yaml_column_test.rb +63 -63
  65. data/test/cases/column_alias_test.rb +17 -17
  66. data/test/cases/column_definition_test.rb +123 -123
  67. data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -54
  68. data/test/cases/connection_adapters/connection_handler_test.rb +53 -53
  69. data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
  70. data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -293
  71. data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -65
  72. data/test/cases/connection_adapters/quoting_test.rb +13 -13
  73. data/test/cases/connection_adapters/schema_cache_test.rb +56 -56
  74. data/test/cases/connection_adapters/type_lookup_test.rb +110 -110
  75. data/test/cases/connection_management_test.rb +122 -122
  76. data/test/cases/connection_pool_test.rb +346 -346
  77. data/test/cases/connection_specification/resolver_test.rb +116 -116
  78. data/test/cases/core_test.rb +112 -112
  79. data/test/cases/counter_cache_test.rb +209 -209
  80. data/test/cases/custom_locking_test.rb +17 -17
  81. data/test/cases/database_statements_test.rb +19 -19
  82. data/test/cases/date_time_test.rb +61 -61
  83. data/test/cases/defaults_test.rb +223 -223
  84. data/test/cases/dirty_test.rb +785 -775
  85. data/test/cases/disconnected_test.rb +28 -28
  86. data/test/cases/dup_test.rb +157 -157
  87. data/test/cases/enum_test.rb +290 -290
  88. data/test/cases/explain_subscriber_test.rb +64 -64
  89. data/test/cases/explain_test.rb +76 -76
  90. data/test/cases/finder_respond_to_test.rb +60 -60
  91. data/test/cases/finder_test.rb +1169 -1166
  92. data/test/cases/fixture_set/file_test.rb +138 -138
  93. data/test/cases/fixtures_test.rb +908 -897
  94. data/test/cases/forbidden_attributes_protection_test.rb +99 -99
  95. data/test/cases/habtm_destroy_order_test.rb +61 -61
  96. data/test/cases/helper.rb +210 -210
  97. data/test/cases/hot_compatibility_test.rb +54 -54
  98. data/test/cases/i18n_test.rb +45 -45
  99. data/test/cases/inheritance_test.rb +375 -375
  100. data/test/cases/integration_test.rb +139 -139
  101. data/test/cases/invalid_connection_test.rb +22 -22
  102. data/test/cases/invalid_date_test.rb +32 -32
  103. data/test/cases/invertible_migration_test.rb +295 -295
  104. data/test/cases/json_serialization_test.rb +302 -302
  105. data/test/cases/locking_test.rb +477 -477
  106. data/test/cases/log_subscriber_test.rb +136 -136
  107. data/test/cases/migration/change_schema_test - Copy.rb +448 -448
  108. data/test/cases/migration/change_schema_test.rb +512 -472
  109. data/test/cases/migration/change_table_test.rb +224 -224
  110. data/test/cases/migration/column_attributes_test.rb +192 -192
  111. data/test/cases/migration/column_positioning_test.rb +56 -56
  112. data/test/cases/migration/columns_test.rb +304 -304
  113. data/test/cases/migration/command_recorder_test.rb +305 -305
  114. data/test/cases/migration/create_join_table_test.rb +148 -148
  115. data/test/cases/migration/foreign_key_test - Changed.rb +325 -325
  116. data/test/cases/migration/foreign_key_test.rb +328 -360
  117. data/test/cases/migration/helper.rb +39 -39
  118. data/test/cases/migration/index_test.rb +216 -216
  119. data/test/cases/migration/logger_test.rb +36 -36
  120. data/test/cases/migration/pending_migrations_test.rb +53 -53
  121. data/test/cases/migration/references_foreign_key_test.rb +169 -214
  122. data/test/cases/migration/references_index_test.rb +101 -101
  123. data/test/cases/migration/references_statements_test.rb +116 -116
  124. data/test/cases/migration/rename_table_test.rb +93 -93
  125. data/test/cases/migration/table_and_index_test.rb +24 -24
  126. data/test/cases/migration_test.rb +959 -959
  127. data/test/cases/migrator_test.rb +388 -388
  128. data/test/cases/mixin_test.rb +70 -70
  129. data/test/cases/modules_test.rb +173 -173
  130. data/test/cases/multiparameter_attributes_test.rb +350 -350
  131. data/test/cases/multiple_db_test.rb +115 -115
  132. data/test/cases/nested_attributes_test.rb +1070 -1057
  133. data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
  134. data/test/cases/persistence_test.rb +909 -909
  135. data/test/cases/pooled_connections_test.rb +81 -81
  136. data/test/cases/primary_keys_test.rb +237 -237
  137. data/test/cases/query_cache_test.rb +326 -326
  138. data/test/cases/quoting_test.rb +156 -156
  139. data/test/cases/readonly_test.rb +118 -118
  140. data/test/cases/reaper_test.rb +85 -85
  141. data/test/cases/reflection_test.rb +463 -454
  142. data/test/cases/relation/delegation_test.rb +68 -68
  143. data/test/cases/relation/merging_test.rb +161 -161
  144. data/test/cases/relation/mutation_test.rb +165 -165
  145. data/test/cases/relation/predicate_builder_test.rb +14 -14
  146. data/test/cases/relation/where_chain_test.rb +181 -181
  147. data/test/cases/relation/where_test.rb +300 -300
  148. data/test/cases/relation/where_test2.rb +36 -36
  149. data/test/cases/relation_test.rb +319 -297
  150. data/test/cases/relations_test.rb +1815 -1815
  151. data/test/cases/reload_models_test.rb +22 -22
  152. data/test/cases/result_test.rb +80 -80
  153. data/test/cases/sanitize_test.rb +83 -83
  154. data/test/cases/schema_dumper_test.rb +463 -463
  155. data/test/cases/scoping/default_scoping_test.rb +454 -454
  156. data/test/cases/scoping/named_scoping_test.rb +524 -524
  157. data/test/cases/scoping/relation_scoping_test.rb +357 -357
  158. data/test/cases/serialization_test.rb +104 -104
  159. data/test/cases/serialized_attribute_test.rb +277 -277
  160. data/test/cases/statement_cache_test.rb +98 -98
  161. data/test/cases/store_test.rb +194 -194
  162. data/test/cases/tasks/database_tasks_test.rb +398 -396
  163. data/test/cases/tasks/mysql_rake_test.rb +324 -311
  164. data/test/cases/tasks/postgresql_rake_test.rb +250 -245
  165. data/test/cases/tasks/sqlite_rake_test.rb +193 -193
  166. data/test/cases/test_case.rb +123 -123
  167. data/test/cases/timestamp_test.rb +467 -468
  168. data/test/cases/transaction_callbacks_test.rb +452 -452
  169. data/test/cases/transaction_isolation_test.rb +106 -106
  170. data/test/cases/transactions_test.rb +817 -817
  171. data/test/cases/type/decimal_test.rb +56 -51
  172. data/test/cases/type/integer_test.rb +121 -121
  173. data/test/cases/type/string_test.rb +36 -36
  174. data/test/cases/type/type_map_test.rb +177 -177
  175. data/test/cases/type/unsigned_integer_test.rb +18 -18
  176. data/test/cases/types_test.rb +141 -141
  177. data/test/cases/unconnected_test.rb +33 -33
  178. data/test/cases/validations/association_validation_test.rb +86 -86
  179. data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
  180. data/test/cases/validations/i18n_validation_test.rb +90 -90
  181. data/test/cases/validations/length_validation_test.rb +47 -47
  182. data/test/cases/validations/presence_validation_test.rb +68 -68
  183. data/test/cases/validations/uniqueness_validation_test.rb +457 -434
  184. data/test/cases/validations_repair_helper.rb +23 -23
  185. data/test/cases/validations_test.rb +165 -165
  186. data/test/cases/view_test.rb +119 -113
  187. data/test/cases/xml_serialization_test.rb +457 -457
  188. data/test/cases/yaml_serialization_test.rb +126 -86
  189. data/test/config.rb +5 -5
  190. data/test/config.yml +154 -154
  191. data/test/connections/native_ibm_db/connection.rb +43 -43
  192. data/test/fixtures/accounts.yml +29 -29
  193. data/test/fixtures/admin/accounts.yml +2 -2
  194. data/test/fixtures/admin/randomly_named_a9.yml +7 -7
  195. data/test/fixtures/admin/randomly_named_b0.yml +7 -7
  196. data/test/fixtures/admin/users.yml +10 -10
  197. data/test/fixtures/author_addresses.yml +17 -17
  198. data/test/fixtures/author_favorites.yml +3 -3
  199. data/test/fixtures/authors.yml +23 -23
  200. data/test/fixtures/binaries.yml +133 -133
  201. data/test/fixtures/books.yml +11 -11
  202. data/test/fixtures/bulbs.yml +5 -5
  203. data/test/fixtures/cars.yml +9 -9
  204. data/test/fixtures/categories.yml +19 -19
  205. data/test/fixtures/categories/special_categories.yml +9 -9
  206. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
  207. data/test/fixtures/categories_ordered.yml +7 -7
  208. data/test/fixtures/categories_posts.yml +31 -31
  209. data/test/fixtures/categorizations.yml +23 -23
  210. data/test/fixtures/clubs.yml +8 -8
  211. data/test/fixtures/collections.yml +3 -3
  212. data/test/fixtures/colleges.yml +3 -3
  213. data/test/fixtures/comments.yml +65 -65
  214. data/test/fixtures/companies.yml +67 -67
  215. data/test/fixtures/computers.yml +10 -10
  216. data/test/fixtures/courses.yml +8 -8
  217. data/test/fixtures/customers.yml +25 -25
  218. data/test/fixtures/dashboards.yml +6 -6
  219. data/test/fixtures/developers.yml +21 -21
  220. data/test/fixtures/developers_projects.yml +16 -16
  221. data/test/fixtures/dog_lovers.yml +7 -7
  222. data/test/fixtures/dogs.yml +4 -4
  223. data/test/fixtures/doubloons.yml +3 -3
  224. data/test/fixtures/edges.yml +5 -5
  225. data/test/fixtures/entrants.yml +14 -14
  226. data/test/fixtures/essays.yml +6 -6
  227. data/test/fixtures/faces.yml +11 -11
  228. data/test/fixtures/fk_test_has_fk.yml +3 -3
  229. data/test/fixtures/fk_test_has_pk.yml +1 -1
  230. data/test/fixtures/friendships.yml +4 -4
  231. data/test/fixtures/funny_jokes.yml +10 -10
  232. data/test/fixtures/interests.yml +33 -33
  233. data/test/fixtures/items.yml +3 -3
  234. data/test/fixtures/jobs.yml +7 -7
  235. data/test/fixtures/legacy_things.yml +3 -3
  236. data/test/fixtures/mateys.yml +4 -4
  237. data/test/fixtures/member_details.yml +8 -8
  238. data/test/fixtures/member_types.yml +6 -6
  239. data/test/fixtures/members.yml +11 -11
  240. data/test/fixtures/memberships.yml +34 -34
  241. data/test/fixtures/men.yml +5 -5
  242. data/test/fixtures/minimalistics.yml +2 -2
  243. data/test/fixtures/minivans.yml +5 -5
  244. data/test/fixtures/mixed_case_monkeys.yml +6 -6
  245. data/test/fixtures/mixins.yml +29 -29
  246. data/test/fixtures/movies.yml +7 -7
  247. data/test/fixtures/naked/csv/accounts.csv +1 -1
  248. data/test/fixtures/naked/yml/accounts.yml +1 -1
  249. data/test/fixtures/naked/yml/companies.yml +1 -1
  250. data/test/fixtures/naked/yml/courses.yml +1 -1
  251. data/test/fixtures/organizations.yml +5 -5
  252. data/test/fixtures/other_topics.yml +42 -42
  253. data/test/fixtures/owners.yml +9 -9
  254. data/test/fixtures/parrots.yml +27 -27
  255. data/test/fixtures/parrots_pirates.yml +7 -7
  256. data/test/fixtures/people.yml +24 -24
  257. data/test/fixtures/peoples_treasures.yml +3 -3
  258. data/test/fixtures/pets.yml +19 -19
  259. data/test/fixtures/pirates.yml +12 -12
  260. data/test/fixtures/posts.yml +80 -80
  261. data/test/fixtures/price_estimates.yml +7 -7
  262. data/test/fixtures/products.yml +4 -4
  263. data/test/fixtures/projects.yml +7 -7
  264. data/test/fixtures/randomly_named_a9.yml +7 -7
  265. data/test/fixtures/ratings.yml +14 -14
  266. data/test/fixtures/readers.yml +11 -11
  267. data/test/fixtures/references.yml +17 -17
  268. data/test/fixtures/reserved_words/distinct.yml +5 -5
  269. data/test/fixtures/reserved_words/distinct_select.yml +11 -11
  270. data/test/fixtures/reserved_words/group.yml +14 -14
  271. data/test/fixtures/reserved_words/select.yml +8 -8
  272. data/test/fixtures/reserved_words/values.yml +7 -7
  273. data/test/fixtures/ships.yml +6 -6
  274. data/test/fixtures/speedometers.yml +8 -8
  275. data/test/fixtures/sponsors.yml +12 -12
  276. data/test/fixtures/string_key_objects.yml +7 -7
  277. data/test/fixtures/subscribers.yml +10 -10
  278. data/test/fixtures/subscriptions.yml +12 -12
  279. data/test/fixtures/taggings.yml +78 -78
  280. data/test/fixtures/tags.yml +11 -11
  281. data/test/fixtures/tasks.yml +7 -7
  282. data/test/fixtures/teapots.yml +3 -3
  283. data/test/fixtures/to_be_linked/accounts.yml +2 -2
  284. data/test/fixtures/to_be_linked/users.yml +10 -10
  285. data/test/fixtures/topics.yml +49 -49
  286. data/test/fixtures/toys.yml +14 -14
  287. data/test/fixtures/traffic_lights.yml +9 -9
  288. data/test/fixtures/treasures.yml +10 -10
  289. data/test/fixtures/uuid_children.yml +3 -3
  290. data/test/fixtures/uuid_parents.yml +2 -2
  291. data/test/fixtures/variants.yml +4 -4
  292. data/test/fixtures/vegetables.yml +19 -19
  293. data/test/fixtures/vertices.yml +3 -3
  294. data/test/fixtures/warehouse_things.yml +2 -2
  295. data/test/fixtures/zines.yml +5 -5
  296. data/test/ibm_db_test.rb +24 -24
  297. data/test/migrations/10_urban/9_add_expressions.rb +11 -11
  298. data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
  299. data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
  300. data/test/migrations/missing/1000_people_have_middle_names.rb +8 -8
  301. data/test/migrations/missing/1_people_have_last_names.rb +8 -8
  302. data/test/migrations/missing/3_we_need_reminders.rb +11 -11
  303. data/test/migrations/missing/4_innocent_jointable.rb +11 -11
  304. data/test/migrations/rename/1_we_need_things.rb +10 -10
  305. data/test/migrations/rename/2_rename_things.rb +8 -8
  306. data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
  307. data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
  308. data/test/migrations/to_copy2/1_create_articles.rb +7 -7
  309. data/test/migrations/to_copy2/2_create_comments.rb +7 -7
  310. data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
  311. data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
  312. data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
  313. data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
  314. data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
  315. data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
  316. data/test/migrations/valid/2_we_need_reminders.rb +11 -11
  317. data/test/migrations/valid/3_innocent_jointable.rb +11 -11
  318. data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
  319. data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +11 -11
  320. data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +11 -11
  321. data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
  322. data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
  323. data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
  324. data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
  325. data/test/models/admin.rb +4 -4
  326. data/test/models/admin/account.rb +2 -2
  327. data/test/models/admin/randomly_named_c1.rb +3 -3
  328. data/test/models/admin/user.rb +40 -40
  329. data/test/models/aircraft.rb +4 -4
  330. data/test/models/arunit2_model.rb +3 -3
  331. data/test/models/author.rb +212 -212
  332. data/test/models/auto_id.rb +4 -4
  333. data/test/models/autoloadable/extra_firm.rb +2 -2
  334. data/test/models/binary.rb +1 -1
  335. data/test/models/bird.rb +12 -12
  336. data/test/models/book.rb +18 -18
  337. data/test/models/boolean.rb +2 -2
  338. data/test/models/bulb.rb +51 -51
  339. data/test/models/cake_designer.rb +3 -3
  340. data/test/models/car.rb +26 -26
  341. data/test/models/carrier.rb +2 -2
  342. data/test/models/categorization.rb +19 -19
  343. data/test/models/category.rb +35 -35
  344. data/test/models/chef.rb +7 -3
  345. data/test/models/citation.rb +3 -3
  346. data/test/models/club.rb +23 -23
  347. data/test/models/college.rb +10 -10
  348. data/test/models/column.rb +3 -3
  349. data/test/models/column_name.rb +3 -3
  350. data/test/models/comment.rb +64 -64
  351. data/test/models/company.rb +228 -225
  352. data/test/models/company_in_module.rb +98 -98
  353. data/test/models/computer.rb +3 -3
  354. data/test/models/contact.rb +41 -41
  355. data/test/models/contract.rb +20 -20
  356. data/test/models/country.rb +7 -7
  357. data/test/models/course.rb +6 -6
  358. data/test/models/customer.rb +77 -77
  359. data/test/models/customer_carrier.rb +14 -14
  360. data/test/models/dashboard.rb +3 -3
  361. data/test/models/default.rb +2 -2
  362. data/test/models/department.rb +4 -4
  363. data/test/models/developer.rb +255 -252
  364. data/test/models/dog.rb +5 -5
  365. data/test/models/dog_lover.rb +5 -5
  366. data/test/models/doubloon.rb +12 -12
  367. data/test/models/drink_designer.rb +3 -3
  368. data/test/models/edge.rb +5 -5
  369. data/test/models/electron.rb +5 -5
  370. data/test/models/engine.rb +4 -4
  371. data/test/models/entrant.rb +3 -3
  372. data/test/models/essay.rb +5 -5
  373. data/test/models/event.rb +2 -2
  374. data/test/models/eye.rb +37 -37
  375. data/test/models/face.rb +9 -9
  376. data/test/models/friendship.rb +6 -6
  377. data/test/models/guid.rb +1 -1
  378. data/test/models/hotel.rb +9 -6
  379. data/test/models/image.rb +3 -3
  380. data/test/models/interest.rb +5 -5
  381. data/test/models/invoice.rb +4 -4
  382. data/test/models/item.rb +7 -7
  383. data/test/models/job.rb +7 -7
  384. data/test/models/joke.rb +7 -7
  385. data/test/models/keyboard.rb +3 -3
  386. data/test/models/legacy_thing.rb +3 -3
  387. data/test/models/lesson.rb +11 -11
  388. data/test/models/line_item.rb +3 -3
  389. data/test/models/liquid.rb +4 -4
  390. data/test/models/man.rb +11 -11
  391. data/test/models/matey.rb +4 -4
  392. data/test/models/member.rb +41 -41
  393. data/test/models/member_detail.rb +7 -7
  394. data/test/models/member_type.rb +3 -3
  395. data/test/models/membership.rb +35 -35
  396. data/test/models/minimalistic.rb +2 -2
  397. data/test/models/minivan.rb +9 -9
  398. data/test/models/mixed_case_monkey.rb +3 -3
  399. data/test/models/molecule.rb +6 -6
  400. data/test/models/movie.rb +5 -5
  401. data/test/models/order.rb +4 -4
  402. data/test/models/organization.rb +14 -14
  403. data/test/models/owner.rb +34 -34
  404. data/test/models/parrot.rb +29 -29
  405. data/test/models/person.rb +143 -143
  406. data/test/models/personal_legacy_thing.rb +4 -4
  407. data/test/models/pet.rb +15 -15
  408. data/test/models/pirate.rb +92 -92
  409. data/test/models/possession.rb +3 -3
  410. data/test/models/post.rb +264 -264
  411. data/test/models/price_estimate.rb +4 -4
  412. data/test/models/professor.rb +5 -5
  413. data/test/models/project.rb +31 -29
  414. data/test/models/publisher.rb +2 -2
  415. data/test/models/publisher/article.rb +4 -4
  416. data/test/models/publisher/magazine.rb +3 -3
  417. data/test/models/randomly_named_c1.rb +3 -3
  418. data/test/models/rating.rb +4 -4
  419. data/test/models/reader.rb +23 -23
  420. data/test/models/record.rb +2 -2
  421. data/test/models/reference.rb +22 -22
  422. data/test/models/reply.rb +61 -61
  423. data/test/models/ship.rb +33 -33
  424. data/test/models/ship_part.rb +7 -7
  425. data/test/models/shop.rb +17 -17
  426. data/test/models/shop_account.rb +6 -6
  427. data/test/models/speedometer.rb +6 -6
  428. data/test/models/sponsor.rb +7 -7
  429. data/test/models/string_key_object.rb +3 -3
  430. data/test/models/student.rb +4 -4
  431. data/test/models/subject.rb +16 -16
  432. data/test/models/subscriber.rb +8 -8
  433. data/test/models/subscription.rb +4 -4
  434. data/test/models/tag.rb +7 -7
  435. data/test/models/tagging.rb +13 -13
  436. data/test/models/task.rb +5 -5
  437. data/test/models/topic.rb +124 -124
  438. data/test/models/toy.rb +6 -6
  439. data/test/models/traffic_light.rb +4 -4
  440. data/test/models/treasure.rb +14 -14
  441. data/test/models/treaty.rb +7 -7
  442. data/test/models/tyre.rb +11 -11
  443. data/test/models/uuid_child.rb +3 -3
  444. data/test/models/uuid_parent.rb +3 -3
  445. data/test/models/vegetables.rb +24 -24
  446. data/test/models/vehicle.rb +6 -6
  447. data/test/models/vertex.rb +9 -9
  448. data/test/models/warehouse_thing.rb +5 -5
  449. data/test/models/wheel.rb +3 -3
  450. data/test/models/without_table.rb +3 -3
  451. data/test/models/zine.rb +3 -3
  452. data/test/schema/mysql2_specific_schema.rb +58 -58
  453. data/test/schema/mysql_specific_schema.rb +70 -70
  454. data/test/schema/oracle_specific_schema.rb +43 -43
  455. data/test/schema/postgresql_specific_schema.rb +202 -202
  456. data/test/schema/schema.rb +952 -938
  457. data/test/schema/sqlite_specific_schema.rb +21 -21
  458. data/test/support/config.rb +43 -43
  459. data/test/support/connection.rb +22 -22
  460. data/test/support/connection_helper.rb +14 -14
  461. data/test/support/ddl_helper.rb +8 -8
  462. data/test/support/schema_dumping_helper.rb +20 -20
  463. metadata +2 -2
@@ -1,300 +1,300 @@
1
- require "cases/helper"
2
- require "models/author"
3
- require "models/binary"
4
- require "models/cake_designer"
5
- require "models/category"
6
- require "models/chef"
7
- require "models/comment"
8
- require "models/edge"
9
- require "models/essay"
10
- require "models/post"
11
- require "models/price_estimate"
12
- require "models/topic"
13
- require "models/treasure"
14
- require "models/vertex"
15
-
16
- module ActiveRecord
17
- class WhereTest < ActiveRecord::TestCase
18
- fixtures :posts, :edges, :authors, :binaries, :essays, :author_addresses
19
-
20
- def test_where_copies_bind_params
21
- author = authors(:david)
22
- posts = author.posts.where('posts.id != 1')
23
- joined = Post.where(id: posts)
24
-
25
- assert_operator joined.length, :>, 0
26
-
27
- joined.each { |post|
28
- assert_equal author, post.author
29
- assert_not_equal 1, post.id
30
- }
31
- end
32
-
33
- def test_where_copies_arel_bind_params
34
- chef = Chef.create!
35
- CakeDesigner.create!(chef: chef)
36
-
37
- cake_designers = CakeDesigner.joins(:chef).where(chefs: { id: chef.id })
38
- chefs = Chef.where(employable: cake_designers)
39
-
40
- assert_equal [chef], chefs.to_a
41
- end
42
-
43
- def test_rewhere_on_root
44
- assert_equal posts(:welcome), Post.rewhere(title: 'Welcome to the weblog').first
45
- end
46
-
47
- def test_belongs_to_shallow_where
48
- author = Author.new
49
- author.id = 1
50
-
51
- assert_equal Post.where(author_id: 1).to_sql, Post.where(author: author).to_sql
52
- end
53
-
54
- def test_belongs_to_nil_where
55
- assert_equal Post.where(author_id: nil).to_sql, Post.where(author: nil).to_sql
56
- end
57
-
58
- def test_belongs_to_array_value_where
59
- assert_equal Post.where(author_id: [1,2]).to_sql, Post.where(author: [1,2]).to_sql
60
- end
61
-
62
- def test_belongs_to_nested_relation_where
63
- expected = Post.where(author_id: Author.where(id: [1,2])).to_sql
64
- actual = Post.where(author: Author.where(id: [1,2])).to_sql
65
-
66
- assert_equal expected, actual
67
- end
68
-
69
- def test_belongs_to_nested_where
70
- parent = Comment.new
71
- parent.id = 1
72
-
73
- expected = Post.where(comments: { parent_id: 1 }).joins(:comments)
74
- actual = Post.where(comments: { parent: parent }).joins(:comments)
75
-
76
- assert_equal expected.to_sql, actual.to_sql
77
- end
78
-
79
- def test_belongs_to_nested_where_with_relation
80
- author = authors(:david)
81
-
82
- expected = Author.where(id: author ).joins(:posts)
83
- actual = Author.where(posts: { author_id: Author.where(id: author.id) }).joins(:posts)
84
-
85
- assert_equal expected.to_a, actual.to_a
86
- end
87
-
88
- def test_polymorphic_shallow_where
89
- treasure = Treasure.new
90
- treasure.id = 1
91
-
92
- expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: 1)
93
- actual = PriceEstimate.where(estimate_of: treasure)
94
-
95
- assert_equal expected.to_sql, actual.to_sql
96
- end
97
-
98
- def test_polymorphic_nested_array_where
99
- treasure = Treasure.new
100
- treasure.id = 1
101
- hidden = HiddenTreasure.new
102
- hidden.id = 2
103
-
104
- expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: [treasure, hidden])
105
- actual = PriceEstimate.where(estimate_of: [treasure, hidden])
106
-
107
- assert_equal expected.to_sql, actual.to_sql
108
- end
109
-
110
- def test_polymorphic_empty_array_where
111
- treasure = Treasure.new
112
- treasure.id = 1
113
- hidden = HiddenTreasure.new
114
- hidden.id = 2
115
-
116
- expected = PriceEstimate.where("1=0")
117
- actual = PriceEstimate.where(estimate_of: [])
118
-
119
- assert_equal expected.to_a, actual.to_a
120
- end
121
-
122
- def test_polymorphic_nested_relation_where
123
- expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: Treasure.where(id: [1,2]))
124
- actual = PriceEstimate.where(estimate_of: Treasure.where(id: [1,2]))
125
-
126
- assert_equal expected.to_sql, actual.to_sql
127
- end
128
-
129
- def test_polymorphic_sti_shallow_where
130
- treasure = HiddenTreasure.new
131
- treasure.id = 1
132
-
133
- expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: 1)
134
- actual = PriceEstimate.where(estimate_of: treasure)
135
-
136
- assert_equal expected.to_sql, actual.to_sql
137
- end
138
-
139
- def test_polymorphic_nested_where
140
- thing = Post.new
141
- thing.id = 1
142
-
143
- expected = Treasure.where(price_estimates: { thing_type: 'Post', thing_id: 1 }).joins(:price_estimates)
144
- actual = Treasure.where(price_estimates: { thing: thing }).joins(:price_estimates)
145
-
146
- assert_equal expected.to_sql, actual.to_sql
147
- end
148
-
149
- def test_polymorphic_sti_nested_where
150
- treasure = HiddenTreasure.new
151
- treasure.id = 1
152
-
153
- expected = Treasure.where(price_estimates: { estimate_of_type: 'Treasure', estimate_of_id: 1 }).joins(:price_estimates)
154
- actual = Treasure.where(price_estimates: { estimate_of: treasure }).joins(:price_estimates)
155
-
156
- assert_equal expected.to_sql, actual.to_sql
157
- end
158
-
159
- def test_decorated_polymorphic_where
160
- treasure_decorator = Struct.new(:model) do
161
- def self.method_missing(method, *args, &block)
162
- Treasure.send(method, *args, &block)
163
- end
164
-
165
- def is_a?(klass)
166
- model.is_a?(klass)
167
- end
168
-
169
- def method_missing(method, *args, &block)
170
- model.send(method, *args, &block)
171
- end
172
- end
173
-
174
- treasure = Treasure.new
175
- treasure.id = 1
176
- decorated_treasure = treasure_decorator.new(treasure)
177
-
178
- expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: 1)
179
- actual = PriceEstimate.where(estimate_of: decorated_treasure)
180
-
181
- assert_equal expected.to_sql, actual.to_sql
182
- end
183
-
184
- def test_aliased_attribute
185
- expected = Topic.where(heading: 'The First Topic')
186
- actual = Topic.where(title: 'The First Topic')
187
-
188
- assert_equal expected.to_sql, actual.to_sql
189
- end
190
-
191
- def test_where_error
192
- assert_raises(ActiveRecord::StatementInvalid) do
193
- Post.where(:id => { 'posts.author_id' => 10 }).first
194
- end
195
- end
196
-
197
- def test_where_with_table_name
198
- post = Post.first
199
- assert_equal post, Post.where(:posts => { 'id' => post.id }).first
200
- end
201
-
202
- def test_where_with_table_name_and_empty_hash
203
- assert_equal 0, Post.where(:posts => {}).count
204
- end
205
-
206
- def test_where_with_table_name_and_empty_array
207
- assert_equal 0, Post.where(:id => []).count
208
- end
209
-
210
- def test_where_with_table_name_and_nested_empty_array
211
- assert_deprecated do
212
- assert_equal [], Post.where(:id => [[]]).to_a
213
- end
214
- end
215
-
216
- def test_where_with_empty_hash_and_no_foreign_key
217
- assert_equal 0, Edge.where(:sink => {}).count
218
- end
219
-
220
- def test_where_with_blank_conditions
221
- [[], {}, nil, ""].each do |blank|
222
- assert_equal 4, Edge.where(blank).order("sink_id").to_a.size
223
- end
224
- end
225
-
226
- def test_where_with_integer_for_string_column
227
- count = Post.where(:title => 0).count
228
- assert_equal 0, count
229
- end
230
-
231
- def test_where_with_float_for_string_column
232
- count = Post.where(:title => 0.0).count
233
- assert_equal 0, count
234
- end
235
-
236
- unless current_adapter?(:IBM_DBAdapter)
237
- def test_where_with_boolean_for_string_column
238
- count = Post.where(:title => false).count
239
- assert_equal 0, count
240
- end
241
- end
242
-
243
- def test_where_with_decimal_for_string_column
244
- count = Post.where(:title => BigDecimal.new(0)).count
245
- assert_equal 0, count
246
- end
247
-
248
- def test_where_with_duration_for_string_column
249
- count = Post.where(:title => 0.seconds).count
250
- assert_equal 0, count
251
- end
252
- unless current_adapter?(:IBM_DBAdapter)
253
- def test_where_with_integer_for_binary_column
254
- count = Binary.where(:data => 0).count
255
- assert_equal 0, count
256
- end
257
- end
258
-
259
- def test_where_on_association_with_custom_primary_key
260
- author = authors(:david)
261
- essay = Essay.where(writer: author).first
262
-
263
- assert_equal essays(:david_modest_proposal), essay
264
- end
265
-
266
- def test_where_on_association_with_custom_primary_key_with_relation
267
- author = authors(:david)
268
- essay = Essay.where(writer: Author.where(id: author.id)).first
269
-
270
- assert_equal essays(:david_modest_proposal), essay
271
- end
272
-
273
- def test_where_on_association_with_relation_performs_subselect_not_two_queries
274
- author = authors(:david)
275
-
276
- assert_queries(1) do
277
- Essay.where(writer: Author.where(id: author.id)).to_a
278
- end
279
- end
280
-
281
- def test_where_on_association_with_custom_primary_key_with_array_of_base
282
- author = authors(:david)
283
- essay = Essay.where(writer: [author]).first
284
-
285
- assert_equal essays(:david_modest_proposal), essay
286
- end
287
-
288
- def test_where_on_association_with_custom_primary_key_with_array_of_ids
289
- essay = Essay.where(writer: ["David"]).first
290
-
291
- assert_equal essays(:david_modest_proposal), essay
292
- end
293
-
294
- def test_where_on_non_polymorphic_association_with_custom_primary_key
295
- essay = Essay.where(category: [Category.new(name: "General")]).first
296
-
297
- assert_equal essays(:david_modest_proposal), essay
298
- end
299
- end
300
- end
1
+ require "cases/helper"
2
+ require "models/author"
3
+ require "models/binary"
4
+ require "models/cake_designer"
5
+ require "models/category"
6
+ require "models/chef"
7
+ require "models/comment"
8
+ require "models/edge"
9
+ require "models/essay"
10
+ require "models/post"
11
+ require "models/price_estimate"
12
+ require "models/topic"
13
+ require "models/treasure"
14
+ require "models/vertex"
15
+
16
+ module ActiveRecord
17
+ class WhereTest < ActiveRecord::TestCase
18
+ fixtures :posts, :edges, :authors, :binaries, :essays, :author_addresses
19
+
20
+ def test_where_copies_bind_params
21
+ author = authors(:david)
22
+ posts = author.posts.where('posts.id != 1')
23
+ joined = Post.where(id: posts)
24
+
25
+ assert_operator joined.length, :>, 0
26
+
27
+ joined.each { |post|
28
+ assert_equal author, post.author
29
+ assert_not_equal 1, post.id
30
+ }
31
+ end
32
+
33
+ def test_where_copies_arel_bind_params
34
+ chef = Chef.create!
35
+ CakeDesigner.create!(chef: chef)
36
+
37
+ cake_designers = CakeDesigner.joins(:chef).where(chefs: { id: chef.id })
38
+ chefs = Chef.where(employable: cake_designers)
39
+
40
+ assert_equal [chef], chefs.to_a
41
+ end
42
+
43
+ def test_rewhere_on_root
44
+ assert_equal posts(:welcome), Post.rewhere(title: 'Welcome to the weblog').first
45
+ end
46
+
47
+ def test_belongs_to_shallow_where
48
+ author = Author.new
49
+ author.id = 1
50
+
51
+ assert_equal Post.where(author_id: 1).to_sql, Post.where(author: author).to_sql
52
+ end
53
+
54
+ def test_belongs_to_nil_where
55
+ assert_equal Post.where(author_id: nil).to_sql, Post.where(author: nil).to_sql
56
+ end
57
+
58
+ def test_belongs_to_array_value_where
59
+ assert_equal Post.where(author_id: [1,2]).to_sql, Post.where(author: [1,2]).to_sql
60
+ end
61
+
62
+ def test_belongs_to_nested_relation_where
63
+ expected = Post.where(author_id: Author.where(id: [1,2])).to_sql
64
+ actual = Post.where(author: Author.where(id: [1,2])).to_sql
65
+
66
+ assert_equal expected, actual
67
+ end
68
+
69
+ def test_belongs_to_nested_where
70
+ parent = Comment.new
71
+ parent.id = 1
72
+
73
+ expected = Post.where(comments: { parent_id: 1 }).joins(:comments)
74
+ actual = Post.where(comments: { parent: parent }).joins(:comments)
75
+
76
+ assert_equal expected.to_sql, actual.to_sql
77
+ end
78
+
79
+ def test_belongs_to_nested_where_with_relation
80
+ author = authors(:david)
81
+
82
+ expected = Author.where(id: author ).joins(:posts)
83
+ actual = Author.where(posts: { author_id: Author.where(id: author.id) }).joins(:posts)
84
+
85
+ assert_equal expected.to_a, actual.to_a
86
+ end
87
+
88
+ def test_polymorphic_shallow_where
89
+ treasure = Treasure.new
90
+ treasure.id = 1
91
+
92
+ expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: 1)
93
+ actual = PriceEstimate.where(estimate_of: treasure)
94
+
95
+ assert_equal expected.to_sql, actual.to_sql
96
+ end
97
+
98
+ def test_polymorphic_nested_array_where
99
+ treasure = Treasure.new
100
+ treasure.id = 1
101
+ hidden = HiddenTreasure.new
102
+ hidden.id = 2
103
+
104
+ expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: [treasure, hidden])
105
+ actual = PriceEstimate.where(estimate_of: [treasure, hidden])
106
+
107
+ assert_equal expected.to_sql, actual.to_sql
108
+ end
109
+
110
+ def test_polymorphic_empty_array_where
111
+ treasure = Treasure.new
112
+ treasure.id = 1
113
+ hidden = HiddenTreasure.new
114
+ hidden.id = 2
115
+
116
+ expected = PriceEstimate.where("1=0")
117
+ actual = PriceEstimate.where(estimate_of: [])
118
+
119
+ assert_equal expected.to_a, actual.to_a
120
+ end
121
+
122
+ def test_polymorphic_nested_relation_where
123
+ expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: Treasure.where(id: [1,2]))
124
+ actual = PriceEstimate.where(estimate_of: Treasure.where(id: [1,2]))
125
+
126
+ assert_equal expected.to_sql, actual.to_sql
127
+ end
128
+
129
+ def test_polymorphic_sti_shallow_where
130
+ treasure = HiddenTreasure.new
131
+ treasure.id = 1
132
+
133
+ expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: 1)
134
+ actual = PriceEstimate.where(estimate_of: treasure)
135
+
136
+ assert_equal expected.to_sql, actual.to_sql
137
+ end
138
+
139
+ def test_polymorphic_nested_where
140
+ thing = Post.new
141
+ thing.id = 1
142
+
143
+ expected = Treasure.where(price_estimates: { thing_type: 'Post', thing_id: 1 }).joins(:price_estimates)
144
+ actual = Treasure.where(price_estimates: { thing: thing }).joins(:price_estimates)
145
+
146
+ assert_equal expected.to_sql, actual.to_sql
147
+ end
148
+
149
+ def test_polymorphic_sti_nested_where
150
+ treasure = HiddenTreasure.new
151
+ treasure.id = 1
152
+
153
+ expected = Treasure.where(price_estimates: { estimate_of_type: 'Treasure', estimate_of_id: 1 }).joins(:price_estimates)
154
+ actual = Treasure.where(price_estimates: { estimate_of: treasure }).joins(:price_estimates)
155
+
156
+ assert_equal expected.to_sql, actual.to_sql
157
+ end
158
+
159
+ def test_decorated_polymorphic_where
160
+ treasure_decorator = Struct.new(:model) do
161
+ def self.method_missing(method, *args, &block)
162
+ Treasure.send(method, *args, &block)
163
+ end
164
+
165
+ def is_a?(klass)
166
+ model.is_a?(klass)
167
+ end
168
+
169
+ def method_missing(method, *args, &block)
170
+ model.send(method, *args, &block)
171
+ end
172
+ end
173
+
174
+ treasure = Treasure.new
175
+ treasure.id = 1
176
+ decorated_treasure = treasure_decorator.new(treasure)
177
+
178
+ expected = PriceEstimate.where(estimate_of_type: 'Treasure', estimate_of_id: 1)
179
+ actual = PriceEstimate.where(estimate_of: decorated_treasure)
180
+
181
+ assert_equal expected.to_sql, actual.to_sql
182
+ end
183
+
184
+ def test_aliased_attribute
185
+ expected = Topic.where(heading: 'The First Topic')
186
+ actual = Topic.where(title: 'The First Topic')
187
+
188
+ assert_equal expected.to_sql, actual.to_sql
189
+ end
190
+
191
+ def test_where_error
192
+ assert_raises(ActiveRecord::StatementInvalid) do
193
+ Post.where(:id => { 'posts.author_id' => 10 }).first
194
+ end
195
+ end
196
+
197
+ def test_where_with_table_name
198
+ post = Post.first
199
+ assert_equal post, Post.where(:posts => { 'id' => post.id }).first
200
+ end
201
+
202
+ def test_where_with_table_name_and_empty_hash
203
+ assert_equal 0, Post.where(:posts => {}).count
204
+ end
205
+
206
+ def test_where_with_table_name_and_empty_array
207
+ assert_equal 0, Post.where(:id => []).count
208
+ end
209
+
210
+ def test_where_with_table_name_and_nested_empty_array
211
+ assert_deprecated do
212
+ assert_equal [], Post.where(:id => [[]]).to_a
213
+ end
214
+ end
215
+
216
+ def test_where_with_empty_hash_and_no_foreign_key
217
+ assert_equal 0, Edge.where(:sink => {}).count
218
+ end
219
+
220
+ def test_where_with_blank_conditions
221
+ [[], {}, nil, ""].each do |blank|
222
+ assert_equal 4, Edge.where(blank).order("sink_id").to_a.size
223
+ end
224
+ end
225
+
226
+ def test_where_with_integer_for_string_column
227
+ count = Post.where(:title => 0).count
228
+ assert_equal 0, count
229
+ end
230
+
231
+ def test_where_with_float_for_string_column
232
+ count = Post.where(:title => 0.0).count
233
+ assert_equal 0, count
234
+ end
235
+
236
+ unless current_adapter?(:IBM_DBAdapter)
237
+ def test_where_with_boolean_for_string_column
238
+ count = Post.where(:title => false).count
239
+ assert_equal 0, count
240
+ end
241
+ end
242
+
243
+ def test_where_with_decimal_for_string_column
244
+ count = Post.where(:title => BigDecimal.new(0)).count
245
+ assert_equal 0, count
246
+ end
247
+
248
+ def test_where_with_duration_for_string_column
249
+ count = Post.where(:title => 0.seconds).count
250
+ assert_equal 0, count
251
+ end
252
+ unless current_adapter?(:IBM_DBAdapter)
253
+ def test_where_with_integer_for_binary_column
254
+ count = Binary.where(:data => 0).count
255
+ assert_equal 0, count
256
+ end
257
+ end
258
+
259
+ def test_where_on_association_with_custom_primary_key
260
+ author = authors(:david)
261
+ essay = Essay.where(writer: author).first
262
+
263
+ assert_equal essays(:david_modest_proposal), essay
264
+ end
265
+
266
+ def test_where_on_association_with_custom_primary_key_with_relation
267
+ author = authors(:david)
268
+ essay = Essay.where(writer: Author.where(id: author.id)).first
269
+
270
+ assert_equal essays(:david_modest_proposal), essay
271
+ end
272
+
273
+ def test_where_on_association_with_relation_performs_subselect_not_two_queries
274
+ author = authors(:david)
275
+
276
+ assert_queries(1) do
277
+ Essay.where(writer: Author.where(id: author.id)).to_a
278
+ end
279
+ end
280
+
281
+ def test_where_on_association_with_custom_primary_key_with_array_of_base
282
+ author = authors(:david)
283
+ essay = Essay.where(writer: [author]).first
284
+
285
+ assert_equal essays(:david_modest_proposal), essay
286
+ end
287
+
288
+ def test_where_on_association_with_custom_primary_key_with_array_of_ids
289
+ essay = Essay.where(writer: ["David"]).first
290
+
291
+ assert_equal essays(:david_modest_proposal), essay
292
+ end
293
+
294
+ def test_where_on_non_polymorphic_association_with_custom_primary_key
295
+ essay = Essay.where(category: [Category.new(name: "General")]).first
296
+
297
+ assert_equal essays(:david_modest_proposal), essay
298
+ end
299
+ end
300
+ end