activerecord 2.3.18 → 3.2.22

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of activerecord might be problematic. Click here for more details.

Files changed (454) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +1014 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.rdoc +222 -0
  5. data/examples/performance.rb +100 -126
  6. data/examples/simple.rb +14 -0
  7. data/lib/active_record/aggregations.rb +93 -99
  8. data/lib/active_record/associations/alias_tracker.rb +76 -0
  9. data/lib/active_record/associations/association.rb +247 -0
  10. data/lib/active_record/associations/association_scope.rb +134 -0
  11. data/lib/active_record/associations/belongs_to_association.rb +54 -61
  12. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +17 -59
  13. data/lib/active_record/associations/builder/association.rb +55 -0
  14. data/lib/active_record/associations/builder/belongs_to.rb +88 -0
  15. data/lib/active_record/associations/builder/collection_association.rb +75 -0
  16. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +57 -0
  17. data/lib/active_record/associations/builder/has_many.rb +71 -0
  18. data/lib/active_record/associations/builder/has_one.rb +62 -0
  19. data/lib/active_record/associations/builder/singular_association.rb +32 -0
  20. data/lib/active_record/associations/collection_association.rb +580 -0
  21. data/lib/active_record/associations/collection_proxy.rb +133 -0
  22. data/lib/active_record/associations/has_and_belongs_to_many_association.rb +39 -119
  23. data/lib/active_record/associations/has_many_association.rb +60 -79
  24. data/lib/active_record/associations/has_many_through_association.rb +127 -206
  25. data/lib/active_record/associations/has_one_association.rb +55 -114
  26. data/lib/active_record/associations/has_one_through_association.rb +25 -26
  27. data/lib/active_record/associations/join_dependency/join_association.rb +159 -0
  28. data/lib/active_record/associations/join_dependency/join_base.rb +24 -0
  29. data/lib/active_record/associations/join_dependency/join_part.rb +78 -0
  30. data/lib/active_record/associations/join_dependency.rb +214 -0
  31. data/lib/active_record/associations/join_helper.rb +55 -0
  32. data/lib/active_record/associations/preloader/association.rb +125 -0
  33. data/lib/active_record/associations/preloader/belongs_to.rb +17 -0
  34. data/lib/active_record/associations/preloader/collection_association.rb +24 -0
  35. data/lib/active_record/associations/preloader/has_and_belongs_to_many.rb +60 -0
  36. data/lib/active_record/associations/preloader/has_many.rb +17 -0
  37. data/lib/active_record/associations/preloader/has_many_through.rb +15 -0
  38. data/lib/active_record/associations/preloader/has_one.rb +23 -0
  39. data/lib/active_record/associations/preloader/has_one_through.rb +9 -0
  40. data/lib/active_record/associations/preloader/singular_association.rb +21 -0
  41. data/lib/active_record/associations/preloader/through_association.rb +67 -0
  42. data/lib/active_record/associations/preloader.rb +181 -0
  43. data/lib/active_record/associations/singular_association.rb +64 -0
  44. data/lib/active_record/associations/through_association.rb +87 -0
  45. data/lib/active_record/associations.rb +693 -1337
  46. data/lib/active_record/attribute_assignment.rb +221 -0
  47. data/lib/active_record/attribute_methods/before_type_cast.rb +31 -0
  48. data/lib/active_record/attribute_methods/deprecated_underscore_read.rb +32 -0
  49. data/lib/active_record/attribute_methods/dirty.rb +111 -0
  50. data/lib/active_record/attribute_methods/primary_key.rb +114 -0
  51. data/lib/active_record/attribute_methods/query.rb +39 -0
  52. data/lib/active_record/attribute_methods/read.rb +136 -0
  53. data/lib/active_record/attribute_methods/serialization.rb +120 -0
  54. data/lib/active_record/attribute_methods/time_zone_conversion.rb +65 -0
  55. data/lib/active_record/attribute_methods/write.rb +70 -0
  56. data/lib/active_record/attribute_methods.rb +211 -339
  57. data/lib/active_record/autosave_association.rb +179 -149
  58. data/lib/active_record/base.rb +401 -2907
  59. data/lib/active_record/callbacks.rb +91 -176
  60. data/lib/active_record/coders/yaml_column.rb +41 -0
  61. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +236 -119
  62. data/lib/active_record/connection_adapters/abstract/connection_specification.rb +110 -58
  63. data/lib/active_record/connection_adapters/abstract/database_limits.rb +12 -11
  64. data/lib/active_record/connection_adapters/abstract/database_statements.rb +175 -74
  65. data/lib/active_record/connection_adapters/abstract/query_cache.rb +31 -35
  66. data/lib/active_record/connection_adapters/abstract/quoting.rb +71 -21
  67. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +81 -311
  68. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +194 -78
  69. data/lib/active_record/connection_adapters/abstract_adapter.rb +130 -83
  70. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +676 -0
  71. data/lib/active_record/connection_adapters/column.rb +296 -0
  72. data/lib/active_record/connection_adapters/mysql2_adapter.rb +280 -0
  73. data/lib/active_record/connection_adapters/mysql_adapter.rb +272 -493
  74. data/lib/active_record/connection_adapters/postgresql_adapter.rb +650 -405
  75. data/lib/active_record/connection_adapters/schema_cache.rb +69 -0
  76. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +30 -9
  77. data/lib/active_record/connection_adapters/sqlite_adapter.rb +276 -147
  78. data/lib/active_record/connection_adapters/statement_pool.rb +40 -0
  79. data/lib/active_record/counter_cache.rb +123 -0
  80. data/lib/active_record/dynamic_finder_match.rb +41 -14
  81. data/lib/active_record/dynamic_matchers.rb +84 -0
  82. data/lib/active_record/dynamic_scope_match.rb +13 -15
  83. data/lib/active_record/errors.rb +195 -0
  84. data/lib/active_record/explain.rb +86 -0
  85. data/lib/active_record/explain_subscriber.rb +25 -0
  86. data/lib/active_record/fixtures/file.rb +65 -0
  87. data/lib/active_record/fixtures.rb +695 -770
  88. data/lib/active_record/identity_map.rb +162 -0
  89. data/lib/active_record/inheritance.rb +174 -0
  90. data/lib/active_record/integration.rb +60 -0
  91. data/lib/active_record/locale/en.yml +9 -27
  92. data/lib/active_record/locking/optimistic.rb +76 -73
  93. data/lib/active_record/locking/pessimistic.rb +32 -10
  94. data/lib/active_record/log_subscriber.rb +72 -0
  95. data/lib/active_record/migration/command_recorder.rb +105 -0
  96. data/lib/active_record/migration.rb +415 -205
  97. data/lib/active_record/model_schema.rb +368 -0
  98. data/lib/active_record/nested_attributes.rb +153 -63
  99. data/lib/active_record/observer.rb +27 -103
  100. data/lib/active_record/persistence.rb +376 -0
  101. data/lib/active_record/query_cache.rb +49 -8
  102. data/lib/active_record/querying.rb +58 -0
  103. data/lib/active_record/railtie.rb +131 -0
  104. data/lib/active_record/railties/console_sandbox.rb +6 -0
  105. data/lib/active_record/railties/controller_runtime.rb +49 -0
  106. data/lib/active_record/railties/databases.rake +659 -0
  107. data/lib/active_record/railties/jdbcmysql_error.rb +16 -0
  108. data/lib/active_record/readonly_attributes.rb +26 -0
  109. data/lib/active_record/reflection.rb +269 -120
  110. data/lib/active_record/relation/batches.rb +90 -0
  111. data/lib/active_record/relation/calculations.rb +372 -0
  112. data/lib/active_record/relation/delegation.rb +49 -0
  113. data/lib/active_record/relation/finder_methods.rb +402 -0
  114. data/lib/active_record/relation/predicate_builder.rb +63 -0
  115. data/lib/active_record/relation/query_methods.rb +417 -0
  116. data/lib/active_record/relation/spawn_methods.rb +180 -0
  117. data/lib/active_record/relation.rb +537 -0
  118. data/lib/active_record/result.rb +40 -0
  119. data/lib/active_record/sanitization.rb +194 -0
  120. data/lib/active_record/schema.rb +9 -6
  121. data/lib/active_record/schema_dumper.rb +55 -32
  122. data/lib/active_record/scoping/default.rb +142 -0
  123. data/lib/active_record/scoping/named.rb +200 -0
  124. data/lib/active_record/scoping.rb +152 -0
  125. data/lib/active_record/serialization.rb +8 -91
  126. data/lib/active_record/serializers/xml_serializer.rb +43 -197
  127. data/lib/active_record/session_store.rb +129 -103
  128. data/lib/active_record/store.rb +52 -0
  129. data/lib/active_record/test_case.rb +30 -23
  130. data/lib/active_record/timestamp.rb +95 -52
  131. data/lib/active_record/transactions.rb +212 -66
  132. data/lib/active_record/translation.rb +22 -0
  133. data/lib/active_record/validations/associated.rb +43 -0
  134. data/lib/active_record/validations/uniqueness.rb +180 -0
  135. data/lib/active_record/validations.rb +43 -1106
  136. data/lib/active_record/version.rb +5 -4
  137. data/lib/active_record.rb +121 -48
  138. data/lib/rails/generators/active_record/migration/migration_generator.rb +25 -0
  139. data/lib/rails/generators/active_record/migration/templates/migration.rb +34 -0
  140. data/lib/rails/generators/active_record/migration.rb +15 -0
  141. data/lib/rails/generators/active_record/model/model_generator.rb +47 -0
  142. data/lib/rails/generators/active_record/model/templates/migration.rb +15 -0
  143. data/lib/rails/generators/active_record/model/templates/model.rb +12 -0
  144. data/lib/rails/generators/active_record/model/templates/module.rb +7 -0
  145. data/lib/rails/generators/active_record/observer/observer_generator.rb +15 -0
  146. data/lib/rails/generators/active_record/observer/templates/observer.rb +4 -0
  147. data/lib/rails/generators/active_record/session_migration/session_migration_generator.rb +25 -0
  148. data/lib/rails/generators/active_record/session_migration/templates/migration.rb +12 -0
  149. data/lib/rails/generators/active_record.rb +25 -0
  150. metadata +187 -363
  151. data/CHANGELOG +0 -5904
  152. data/README +0 -351
  153. data/RUNNING_UNIT_TESTS +0 -36
  154. data/Rakefile +0 -268
  155. data/install.rb +0 -30
  156. data/lib/active_record/association_preload.rb +0 -406
  157. data/lib/active_record/associations/association_collection.rb +0 -533
  158. data/lib/active_record/associations/association_proxy.rb +0 -288
  159. data/lib/active_record/batches.rb +0 -85
  160. data/lib/active_record/calculations.rb +0 -321
  161. data/lib/active_record/dirty.rb +0 -183
  162. data/lib/active_record/named_scope.rb +0 -197
  163. data/lib/active_record/serializers/json_serializer.rb +0 -91
  164. data/lib/activerecord.rb +0 -2
  165. data/test/assets/example.log +0 -1
  166. data/test/assets/flowers.jpg +0 -0
  167. data/test/cases/aaa_create_tables_test.rb +0 -24
  168. data/test/cases/active_schema_test_mysql.rb +0 -122
  169. data/test/cases/active_schema_test_postgresql.rb +0 -24
  170. data/test/cases/adapter_test.rb +0 -144
  171. data/test/cases/aggregations_test.rb +0 -167
  172. data/test/cases/ar_schema_test.rb +0 -32
  173. data/test/cases/associations/belongs_to_associations_test.rb +0 -438
  174. data/test/cases/associations/callbacks_test.rb +0 -161
  175. data/test/cases/associations/cascaded_eager_loading_test.rb +0 -131
  176. data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +0 -36
  177. data/test/cases/associations/eager_load_nested_include_test.rb +0 -131
  178. data/test/cases/associations/eager_load_nested_polymorphic_include.rb +0 -19
  179. data/test/cases/associations/eager_singularization_test.rb +0 -145
  180. data/test/cases/associations/eager_test.rb +0 -852
  181. data/test/cases/associations/extension_test.rb +0 -62
  182. data/test/cases/associations/habtm_join_table_test.rb +0 -56
  183. data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +0 -827
  184. data/test/cases/associations/has_many_associations_test.rb +0 -1273
  185. data/test/cases/associations/has_many_through_associations_test.rb +0 -360
  186. data/test/cases/associations/has_one_associations_test.rb +0 -330
  187. data/test/cases/associations/has_one_through_associations_test.rb +0 -209
  188. data/test/cases/associations/inner_join_association_test.rb +0 -93
  189. data/test/cases/associations/inverse_associations_test.rb +0 -566
  190. data/test/cases/associations/join_model_test.rb +0 -712
  191. data/test/cases/associations_test.rb +0 -282
  192. data/test/cases/attribute_methods_test.rb +0 -305
  193. data/test/cases/autosave_association_test.rb +0 -1218
  194. data/test/cases/base_test.rb +0 -2166
  195. data/test/cases/batches_test.rb +0 -81
  196. data/test/cases/binary_test.rb +0 -30
  197. data/test/cases/calculations_test.rb +0 -360
  198. data/test/cases/callbacks_observers_test.rb +0 -38
  199. data/test/cases/callbacks_test.rb +0 -438
  200. data/test/cases/class_inheritable_attributes_test.rb +0 -32
  201. data/test/cases/column_alias_test.rb +0 -17
  202. data/test/cases/column_definition_test.rb +0 -70
  203. data/test/cases/connection_pool_test.rb +0 -25
  204. data/test/cases/connection_test_firebird.rb +0 -8
  205. data/test/cases/connection_test_mysql.rb +0 -65
  206. data/test/cases/copy_table_test_sqlite.rb +0 -80
  207. data/test/cases/counter_cache_test.rb +0 -84
  208. data/test/cases/database_statements_test.rb +0 -12
  209. data/test/cases/datatype_test_postgresql.rb +0 -204
  210. data/test/cases/date_time_test.rb +0 -37
  211. data/test/cases/default_test_firebird.rb +0 -16
  212. data/test/cases/defaults_test.rb +0 -111
  213. data/test/cases/deprecated_finder_test.rb +0 -30
  214. data/test/cases/dirty_test.rb +0 -316
  215. data/test/cases/finder_respond_to_test.rb +0 -76
  216. data/test/cases/finder_test.rb +0 -1098
  217. data/test/cases/fixtures_test.rb +0 -661
  218. data/test/cases/helper.rb +0 -68
  219. data/test/cases/i18n_test.rb +0 -46
  220. data/test/cases/inheritance_test.rb +0 -262
  221. data/test/cases/invalid_date_test.rb +0 -24
  222. data/test/cases/json_serialization_test.rb +0 -219
  223. data/test/cases/lifecycle_test.rb +0 -193
  224. data/test/cases/locking_test.rb +0 -350
  225. data/test/cases/method_scoping_test.rb +0 -704
  226. data/test/cases/migration_test.rb +0 -1649
  227. data/test/cases/migration_test_firebird.rb +0 -124
  228. data/test/cases/mixin_test.rb +0 -96
  229. data/test/cases/modules_test.rb +0 -109
  230. data/test/cases/multiple_db_test.rb +0 -85
  231. data/test/cases/named_scope_test.rb +0 -372
  232. data/test/cases/nested_attributes_test.rb +0 -840
  233. data/test/cases/pk_test.rb +0 -119
  234. data/test/cases/pooled_connections_test.rb +0 -103
  235. data/test/cases/query_cache_test.rb +0 -129
  236. data/test/cases/readonly_test.rb +0 -107
  237. data/test/cases/reflection_test.rb +0 -234
  238. data/test/cases/reload_models_test.rb +0 -22
  239. data/test/cases/repair_helper.rb +0 -50
  240. data/test/cases/reserved_word_test_mysql.rb +0 -176
  241. data/test/cases/sanitize_test.rb +0 -25
  242. data/test/cases/schema_authorization_test_postgresql.rb +0 -75
  243. data/test/cases/schema_dumper_test.rb +0 -211
  244. data/test/cases/schema_test_postgresql.rb +0 -178
  245. data/test/cases/serialization_test.rb +0 -47
  246. data/test/cases/sp_test_mysql.rb +0 -16
  247. data/test/cases/synonym_test_oracle.rb +0 -17
  248. data/test/cases/timestamp_test.rb +0 -75
  249. data/test/cases/transactions_test.rb +0 -543
  250. data/test/cases/unconnected_test.rb +0 -32
  251. data/test/cases/validations_i18n_test.rb +0 -925
  252. data/test/cases/validations_test.rb +0 -1684
  253. data/test/cases/xml_serialization_test.rb +0 -240
  254. data/test/cases/yaml_serialization_test.rb +0 -11
  255. data/test/config.rb +0 -5
  256. data/test/connections/jdbc_jdbcderby/connection.rb +0 -18
  257. data/test/connections/jdbc_jdbch2/connection.rb +0 -18
  258. data/test/connections/jdbc_jdbchsqldb/connection.rb +0 -18
  259. data/test/connections/jdbc_jdbcmysql/connection.rb +0 -26
  260. data/test/connections/jdbc_jdbcpostgresql/connection.rb +0 -26
  261. data/test/connections/jdbc_jdbcsqlite3/connection.rb +0 -25
  262. data/test/connections/native_db2/connection.rb +0 -25
  263. data/test/connections/native_firebird/connection.rb +0 -26
  264. data/test/connections/native_frontbase/connection.rb +0 -27
  265. data/test/connections/native_mysql/connection.rb +0 -25
  266. data/test/connections/native_openbase/connection.rb +0 -21
  267. data/test/connections/native_oracle/connection.rb +0 -27
  268. data/test/connections/native_postgresql/connection.rb +0 -21
  269. data/test/connections/native_sqlite/connection.rb +0 -25
  270. data/test/connections/native_sqlite3/connection.rb +0 -25
  271. data/test/connections/native_sqlite3/in_memory_connection.rb +0 -18
  272. data/test/connections/native_sybase/connection.rb +0 -23
  273. data/test/fixtures/accounts.yml +0 -29
  274. data/test/fixtures/all/developers.yml +0 -0
  275. data/test/fixtures/all/people.csv +0 -0
  276. data/test/fixtures/all/tasks.yml +0 -0
  277. data/test/fixtures/author_addresses.yml +0 -5
  278. data/test/fixtures/author_favorites.yml +0 -4
  279. data/test/fixtures/authors.yml +0 -9
  280. data/test/fixtures/binaries.yml +0 -132
  281. data/test/fixtures/books.yml +0 -7
  282. data/test/fixtures/categories/special_categories.yml +0 -9
  283. data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +0 -4
  284. data/test/fixtures/categories.yml +0 -14
  285. data/test/fixtures/categories_ordered.yml +0 -7
  286. data/test/fixtures/categories_posts.yml +0 -23
  287. data/test/fixtures/categorizations.yml +0 -17
  288. data/test/fixtures/clubs.yml +0 -6
  289. data/test/fixtures/comments.yml +0 -59
  290. data/test/fixtures/companies.yml +0 -56
  291. data/test/fixtures/computers.yml +0 -4
  292. data/test/fixtures/courses.yml +0 -7
  293. data/test/fixtures/customers.yml +0 -26
  294. data/test/fixtures/developers.yml +0 -21
  295. data/test/fixtures/developers_projects.yml +0 -17
  296. data/test/fixtures/edges.yml +0 -6
  297. data/test/fixtures/entrants.yml +0 -14
  298. data/test/fixtures/faces.yml +0 -11
  299. data/test/fixtures/fk_test_has_fk.yml +0 -3
  300. data/test/fixtures/fk_test_has_pk.yml +0 -2
  301. data/test/fixtures/funny_jokes.yml +0 -10
  302. data/test/fixtures/interests.yml +0 -33
  303. data/test/fixtures/items.yml +0 -4
  304. data/test/fixtures/jobs.yml +0 -7
  305. data/test/fixtures/legacy_things.yml +0 -3
  306. data/test/fixtures/mateys.yml +0 -4
  307. data/test/fixtures/member_types.yml +0 -6
  308. data/test/fixtures/members.yml +0 -6
  309. data/test/fixtures/memberships.yml +0 -20
  310. data/test/fixtures/men.yml +0 -5
  311. data/test/fixtures/minimalistics.yml +0 -2
  312. data/test/fixtures/mixed_case_monkeys.yml +0 -6
  313. data/test/fixtures/mixins.yml +0 -29
  314. data/test/fixtures/movies.yml +0 -7
  315. data/test/fixtures/naked/csv/accounts.csv +0 -1
  316. data/test/fixtures/naked/yml/accounts.yml +0 -1
  317. data/test/fixtures/naked/yml/companies.yml +0 -1
  318. data/test/fixtures/naked/yml/courses.yml +0 -1
  319. data/test/fixtures/organizations.yml +0 -5
  320. data/test/fixtures/owners.yml +0 -7
  321. data/test/fixtures/parrots.yml +0 -27
  322. data/test/fixtures/parrots_pirates.yml +0 -7
  323. data/test/fixtures/people.yml +0 -15
  324. data/test/fixtures/pets.yml +0 -14
  325. data/test/fixtures/pirates.yml +0 -9
  326. data/test/fixtures/polymorphic_designs.yml +0 -19
  327. data/test/fixtures/polymorphic_prices.yml +0 -19
  328. data/test/fixtures/posts.yml +0 -52
  329. data/test/fixtures/price_estimates.yml +0 -7
  330. data/test/fixtures/projects.yml +0 -7
  331. data/test/fixtures/readers.yml +0 -9
  332. data/test/fixtures/references.yml +0 -17
  333. data/test/fixtures/reserved_words/distinct.yml +0 -5
  334. data/test/fixtures/reserved_words/distincts_selects.yml +0 -11
  335. data/test/fixtures/reserved_words/group.yml +0 -14
  336. data/test/fixtures/reserved_words/select.yml +0 -8
  337. data/test/fixtures/reserved_words/values.yml +0 -7
  338. data/test/fixtures/ships.yml +0 -5
  339. data/test/fixtures/sponsors.yml +0 -9
  340. data/test/fixtures/subscribers.yml +0 -7
  341. data/test/fixtures/subscriptions.yml +0 -12
  342. data/test/fixtures/taggings.yml +0 -28
  343. data/test/fixtures/tags.yml +0 -7
  344. data/test/fixtures/tasks.yml +0 -7
  345. data/test/fixtures/tees.yml +0 -4
  346. data/test/fixtures/ties.yml +0 -4
  347. data/test/fixtures/topics.yml +0 -42
  348. data/test/fixtures/toys.yml +0 -4
  349. data/test/fixtures/treasures.yml +0 -10
  350. data/test/fixtures/vertices.yml +0 -4
  351. data/test/fixtures/warehouse-things.yml +0 -3
  352. data/test/fixtures/zines.yml +0 -5
  353. data/test/migrations/broken/100_migration_that_raises_exception.rb +0 -10
  354. data/test/migrations/decimal/1_give_me_big_numbers.rb +0 -15
  355. data/test/migrations/duplicate/1_people_have_last_names.rb +0 -9
  356. data/test/migrations/duplicate/2_we_need_reminders.rb +0 -12
  357. data/test/migrations/duplicate/3_foo.rb +0 -7
  358. data/test/migrations/duplicate/3_innocent_jointable.rb +0 -12
  359. data/test/migrations/duplicate_names/20080507052938_chunky.rb +0 -7
  360. data/test/migrations/duplicate_names/20080507053028_chunky.rb +0 -7
  361. data/test/migrations/interleaved/pass_1/3_innocent_jointable.rb +0 -12
  362. data/test/migrations/interleaved/pass_2/1_people_have_last_names.rb +0 -9
  363. data/test/migrations/interleaved/pass_2/3_innocent_jointable.rb +0 -12
  364. data/test/migrations/interleaved/pass_3/1_people_have_last_names.rb +0 -9
  365. data/test/migrations/interleaved/pass_3/2_i_raise_on_down.rb +0 -8
  366. data/test/migrations/interleaved/pass_3/3_innocent_jointable.rb +0 -12
  367. data/test/migrations/missing/1000_people_have_middle_names.rb +0 -9
  368. data/test/migrations/missing/1_people_have_last_names.rb +0 -9
  369. data/test/migrations/missing/3_we_need_reminders.rb +0 -12
  370. data/test/migrations/missing/4_innocent_jointable.rb +0 -12
  371. data/test/migrations/valid/1_people_have_last_names.rb +0 -9
  372. data/test/migrations/valid/2_we_need_reminders.rb +0 -12
  373. data/test/migrations/valid/3_innocent_jointable.rb +0 -12
  374. data/test/models/author.rb +0 -151
  375. data/test/models/auto_id.rb +0 -4
  376. data/test/models/binary.rb +0 -2
  377. data/test/models/bird.rb +0 -9
  378. data/test/models/book.rb +0 -4
  379. data/test/models/categorization.rb +0 -5
  380. data/test/models/category.rb +0 -34
  381. data/test/models/citation.rb +0 -6
  382. data/test/models/club.rb +0 -13
  383. data/test/models/column_name.rb +0 -3
  384. data/test/models/comment.rb +0 -29
  385. data/test/models/company.rb +0 -173
  386. data/test/models/company_in_module.rb +0 -78
  387. data/test/models/computer.rb +0 -3
  388. data/test/models/contact.rb +0 -16
  389. data/test/models/contract.rb +0 -5
  390. data/test/models/course.rb +0 -3
  391. data/test/models/customer.rb +0 -73
  392. data/test/models/default.rb +0 -2
  393. data/test/models/developer.rb +0 -101
  394. data/test/models/edge.rb +0 -5
  395. data/test/models/entrant.rb +0 -3
  396. data/test/models/essay.rb +0 -3
  397. data/test/models/event.rb +0 -3
  398. data/test/models/event_author.rb +0 -8
  399. data/test/models/face.rb +0 -7
  400. data/test/models/guid.rb +0 -2
  401. data/test/models/interest.rb +0 -5
  402. data/test/models/invoice.rb +0 -4
  403. data/test/models/item.rb +0 -7
  404. data/test/models/job.rb +0 -5
  405. data/test/models/joke.rb +0 -3
  406. data/test/models/keyboard.rb +0 -3
  407. data/test/models/legacy_thing.rb +0 -3
  408. data/test/models/line_item.rb +0 -3
  409. data/test/models/man.rb +0 -9
  410. data/test/models/matey.rb +0 -4
  411. data/test/models/member.rb +0 -12
  412. data/test/models/member_detail.rb +0 -5
  413. data/test/models/member_type.rb +0 -3
  414. data/test/models/membership.rb +0 -9
  415. data/test/models/minimalistic.rb +0 -2
  416. data/test/models/mixed_case_monkey.rb +0 -3
  417. data/test/models/movie.rb +0 -5
  418. data/test/models/order.rb +0 -4
  419. data/test/models/organization.rb +0 -6
  420. data/test/models/owner.rb +0 -5
  421. data/test/models/parrot.rb +0 -22
  422. data/test/models/person.rb +0 -16
  423. data/test/models/pet.rb +0 -5
  424. data/test/models/pirate.rb +0 -80
  425. data/test/models/polymorphic_design.rb +0 -3
  426. data/test/models/polymorphic_price.rb +0 -3
  427. data/test/models/post.rb +0 -102
  428. data/test/models/price_estimate.rb +0 -3
  429. data/test/models/project.rb +0 -30
  430. data/test/models/reader.rb +0 -4
  431. data/test/models/reference.rb +0 -4
  432. data/test/models/reply.rb +0 -46
  433. data/test/models/ship.rb +0 -19
  434. data/test/models/ship_part.rb +0 -7
  435. data/test/models/sponsor.rb +0 -4
  436. data/test/models/subject.rb +0 -4
  437. data/test/models/subscriber.rb +0 -8
  438. data/test/models/subscription.rb +0 -4
  439. data/test/models/tag.rb +0 -7
  440. data/test/models/tagging.rb +0 -10
  441. data/test/models/task.rb +0 -3
  442. data/test/models/tee.rb +0 -4
  443. data/test/models/tie.rb +0 -4
  444. data/test/models/topic.rb +0 -80
  445. data/test/models/toy.rb +0 -6
  446. data/test/models/treasure.rb +0 -8
  447. data/test/models/vertex.rb +0 -9
  448. data/test/models/warehouse_thing.rb +0 -5
  449. data/test/models/zine.rb +0 -3
  450. data/test/schema/mysql_specific_schema.rb +0 -31
  451. data/test/schema/postgresql_specific_schema.rb +0 -114
  452. data/test/schema/schema.rb +0 -550
  453. data/test/schema/schema2.rb +0 -6
  454. data/test/schema/sqlite_specific_schema.rb +0 -25
@@ -1,438 +0,0 @@
1
- require "cases/helper"
2
-
3
- class CallbackDeveloper < ActiveRecord::Base
4
- set_table_name 'developers'
5
-
6
- class << self
7
- def callback_string(callback_method)
8
- "history << [#{callback_method.to_sym.inspect}, :string]"
9
- end
10
-
11
- def callback_proc(callback_method)
12
- Proc.new { |model| model.history << [callback_method, :proc] }
13
- end
14
-
15
- def define_callback_method(callback_method)
16
- define_method("#{callback_method}_method") do |model|
17
- model.history << [callback_method, :method]
18
- end
19
- end
20
-
21
- def callback_object(callback_method)
22
- klass = Class.new
23
- klass.send(:define_method, callback_method) do |model|
24
- model.history << [callback_method, :object]
25
- end
26
- klass.new
27
- end
28
- end
29
-
30
- ActiveRecord::Callbacks::CALLBACKS.each do |callback_method|
31
- callback_method_sym = callback_method.to_sym
32
- define_callback_method(callback_method_sym)
33
- send(callback_method, callback_method_sym)
34
- send(callback_method, callback_string(callback_method_sym))
35
- send(callback_method, callback_proc(callback_method_sym))
36
- send(callback_method, callback_object(callback_method_sym))
37
- send(callback_method) { |model| model.history << [callback_method_sym, :block] }
38
- end
39
-
40
- def history
41
- @history ||= []
42
- end
43
-
44
- # after_initialize and after_find are invoked only if instance methods have been defined.
45
- def after_initialize
46
- end
47
-
48
- def after_find
49
- end
50
- end
51
-
52
- class ParentDeveloper < ActiveRecord::Base
53
- set_table_name 'developers'
54
- attr_accessor :after_save_called
55
- before_validation {|record| record.after_save_called = true}
56
- end
57
-
58
- class ChildDeveloper < ParentDeveloper
59
-
60
- end
61
-
62
- class RecursiveCallbackDeveloper < ActiveRecord::Base
63
- set_table_name 'developers'
64
-
65
- before_save :on_before_save
66
- after_save :on_after_save
67
-
68
- attr_reader :on_before_save_called, :on_after_save_called
69
-
70
- def on_before_save
71
- @on_before_save_called ||= 0
72
- @on_before_save_called += 1
73
- save unless @on_before_save_called > 1
74
- end
75
-
76
- def on_after_save
77
- @on_after_save_called ||= 0
78
- @on_after_save_called += 1
79
- save unless @on_after_save_called > 1
80
- end
81
- end
82
-
83
- class ImmutableDeveloper < ActiveRecord::Base
84
- set_table_name 'developers'
85
-
86
- validates_inclusion_of :salary, :in => 50000..200000
87
-
88
- before_save :cancel
89
- before_destroy :cancel
90
-
91
- def cancelled?
92
- @cancelled == true
93
- end
94
-
95
- private
96
- def cancel
97
- @cancelled = true
98
- false
99
- end
100
- end
101
-
102
- class ImmutableMethodDeveloper < ActiveRecord::Base
103
- set_table_name 'developers'
104
-
105
- validates_inclusion_of :salary, :in => 50000..200000
106
-
107
- def cancelled?
108
- @cancelled == true
109
- end
110
-
111
- def before_save
112
- @cancelled = true
113
- false
114
- end
115
-
116
- def before_destroy
117
- @cancelled = true
118
- false
119
- end
120
- end
121
-
122
- class CallbackCancellationDeveloper < ActiveRecord::Base
123
- set_table_name 'developers'
124
-
125
- attr_reader :after_save_called, :after_create_called, :after_update_called, :after_destroy_called
126
- attr_accessor :cancel_before_save, :cancel_before_create, :cancel_before_update, :cancel_before_destroy
127
-
128
- def before_save; !@cancel_before_save; end
129
- def before_create; !@cancel_before_create; end
130
- def before_update; !@cancel_before_update; end
131
- def before_destroy; !@cancel_before_destroy; end
132
-
133
- def after_save; @after_save_called = true; end
134
- def after_update; @after_update_called = true; end
135
- def after_create; @after_create_called = true; end
136
- def after_destroy; @after_destroy_called = true; end
137
- end
138
-
139
- class CallbacksTest < ActiveRecord::TestCase
140
- fixtures :developers
141
-
142
- def test_initialize
143
- david = CallbackDeveloper.new
144
- assert_equal [
145
- [ :after_initialize, :string ],
146
- [ :after_initialize, :proc ],
147
- [ :after_initialize, :object ],
148
- [ :after_initialize, :block ],
149
- ], david.history
150
- end
151
-
152
- def test_find
153
- david = CallbackDeveloper.find(1)
154
- assert_equal [
155
- [ :after_find, :string ],
156
- [ :after_find, :proc ],
157
- [ :after_find, :object ],
158
- [ :after_find, :block ],
159
- [ :after_initialize, :string ],
160
- [ :after_initialize, :proc ],
161
- [ :after_initialize, :object ],
162
- [ :after_initialize, :block ],
163
- ], david.history
164
- end
165
-
166
- def test_new_valid?
167
- david = CallbackDeveloper.new
168
- david.valid?
169
- assert_equal [
170
- [ :after_initialize, :string ],
171
- [ :after_initialize, :proc ],
172
- [ :after_initialize, :object ],
173
- [ :after_initialize, :block ],
174
- [ :before_validation, :string ],
175
- [ :before_validation, :proc ],
176
- [ :before_validation, :object ],
177
- [ :before_validation, :block ],
178
- [ :before_validation_on_create, :string ],
179
- [ :before_validation_on_create, :proc ],
180
- [ :before_validation_on_create, :object ],
181
- [ :before_validation_on_create, :block ],
182
- [ :after_validation, :string ],
183
- [ :after_validation, :proc ],
184
- [ :after_validation, :object ],
185
- [ :after_validation, :block ],
186
- [ :after_validation_on_create, :string ],
187
- [ :after_validation_on_create, :proc ],
188
- [ :after_validation_on_create, :object ],
189
- [ :after_validation_on_create, :block ]
190
- ], david.history
191
- end
192
-
193
- def test_existing_valid?
194
- david = CallbackDeveloper.find(1)
195
- david.valid?
196
- assert_equal [
197
- [ :after_find, :string ],
198
- [ :after_find, :proc ],
199
- [ :after_find, :object ],
200
- [ :after_find, :block ],
201
- [ :after_initialize, :string ],
202
- [ :after_initialize, :proc ],
203
- [ :after_initialize, :object ],
204
- [ :after_initialize, :block ],
205
- [ :before_validation, :string ],
206
- [ :before_validation, :proc ],
207
- [ :before_validation, :object ],
208
- [ :before_validation, :block ],
209
- [ :before_validation_on_update, :string ],
210
- [ :before_validation_on_update, :proc ],
211
- [ :before_validation_on_update, :object ],
212
- [ :before_validation_on_update, :block ],
213
- [ :after_validation, :string ],
214
- [ :after_validation, :proc ],
215
- [ :after_validation, :object ],
216
- [ :after_validation, :block ],
217
- [ :after_validation_on_update, :string ],
218
- [ :after_validation_on_update, :proc ],
219
- [ :after_validation_on_update, :object ],
220
- [ :after_validation_on_update, :block ]
221
- ], david.history
222
- end
223
-
224
- def test_create
225
- david = CallbackDeveloper.create('name' => 'David', 'salary' => 1000000)
226
- assert_equal [
227
- [ :after_initialize, :string ],
228
- [ :after_initialize, :proc ],
229
- [ :after_initialize, :object ],
230
- [ :after_initialize, :block ],
231
- [ :before_validation, :string ],
232
- [ :before_validation, :proc ],
233
- [ :before_validation, :object ],
234
- [ :before_validation, :block ],
235
- [ :before_validation_on_create, :string ],
236
- [ :before_validation_on_create, :proc ],
237
- [ :before_validation_on_create, :object ],
238
- [ :before_validation_on_create, :block ],
239
- [ :after_validation, :string ],
240
- [ :after_validation, :proc ],
241
- [ :after_validation, :object ],
242
- [ :after_validation, :block ],
243
- [ :after_validation_on_create, :string ],
244
- [ :after_validation_on_create, :proc ],
245
- [ :after_validation_on_create, :object ],
246
- [ :after_validation_on_create, :block ],
247
- [ :before_save, :string ],
248
- [ :before_save, :proc ],
249
- [ :before_save, :object ],
250
- [ :before_save, :block ],
251
- [ :before_create, :string ],
252
- [ :before_create, :proc ],
253
- [ :before_create, :object ],
254
- [ :before_create, :block ],
255
- [ :after_create, :string ],
256
- [ :after_create, :proc ],
257
- [ :after_create, :object ],
258
- [ :after_create, :block ],
259
- [ :after_save, :string ],
260
- [ :after_save, :proc ],
261
- [ :after_save, :object ],
262
- [ :after_save, :block ]
263
- ], david.history
264
- end
265
-
266
- def test_save
267
- david = CallbackDeveloper.find(1)
268
- david.save
269
- assert_equal [
270
- [ :after_find, :string ],
271
- [ :after_find, :proc ],
272
- [ :after_find, :object ],
273
- [ :after_find, :block ],
274
- [ :after_initialize, :string ],
275
- [ :after_initialize, :proc ],
276
- [ :after_initialize, :object ],
277
- [ :after_initialize, :block ],
278
- [ :before_validation, :string ],
279
- [ :before_validation, :proc ],
280
- [ :before_validation, :object ],
281
- [ :before_validation, :block ],
282
- [ :before_validation_on_update, :string ],
283
- [ :before_validation_on_update, :proc ],
284
- [ :before_validation_on_update, :object ],
285
- [ :before_validation_on_update, :block ],
286
- [ :after_validation, :string ],
287
- [ :after_validation, :proc ],
288
- [ :after_validation, :object ],
289
- [ :after_validation, :block ],
290
- [ :after_validation_on_update, :string ],
291
- [ :after_validation_on_update, :proc ],
292
- [ :after_validation_on_update, :object ],
293
- [ :after_validation_on_update, :block ],
294
- [ :before_save, :string ],
295
- [ :before_save, :proc ],
296
- [ :before_save, :object ],
297
- [ :before_save, :block ],
298
- [ :before_update, :string ],
299
- [ :before_update, :proc ],
300
- [ :before_update, :object ],
301
- [ :before_update, :block ],
302
- [ :after_update, :string ],
303
- [ :after_update, :proc ],
304
- [ :after_update, :object ],
305
- [ :after_update, :block ],
306
- [ :after_save, :string ],
307
- [ :after_save, :proc ],
308
- [ :after_save, :object ],
309
- [ :after_save, :block ]
310
- ], david.history
311
- end
312
-
313
- def test_destroy
314
- david = CallbackDeveloper.find(1)
315
- david.destroy
316
- assert_equal [
317
- [ :after_find, :string ],
318
- [ :after_find, :proc ],
319
- [ :after_find, :object ],
320
- [ :after_find, :block ],
321
- [ :after_initialize, :string ],
322
- [ :after_initialize, :proc ],
323
- [ :after_initialize, :object ],
324
- [ :after_initialize, :block ],
325
- [ :before_destroy, :string ],
326
- [ :before_destroy, :proc ],
327
- [ :before_destroy, :object ],
328
- [ :before_destroy, :block ],
329
- [ :after_destroy, :string ],
330
- [ :after_destroy, :proc ],
331
- [ :after_destroy, :object ],
332
- [ :after_destroy, :block ]
333
- ], david.history
334
- end
335
-
336
- def test_delete
337
- david = CallbackDeveloper.find(1)
338
- CallbackDeveloper.delete(david.id)
339
- assert_equal [
340
- [ :after_find, :string ],
341
- [ :after_find, :proc ],
342
- [ :after_find, :object ],
343
- [ :after_find, :block ],
344
- [ :after_initialize, :string ],
345
- [ :after_initialize, :proc ],
346
- [ :after_initialize, :object ],
347
- [ :after_initialize, :block ],
348
- ], david.history
349
- end
350
-
351
- def test_before_save_returning_false
352
- david = ImmutableDeveloper.find(1)
353
- assert david.valid?
354
- assert !david.save
355
- assert_raise(ActiveRecord::RecordNotSaved) { david.save! }
356
-
357
- david = ImmutableDeveloper.find(1)
358
- david.salary = 10_000_000
359
- assert !david.valid?
360
- assert !david.save
361
- assert_raise(ActiveRecord::RecordInvalid) { david.save! }
362
-
363
- someone = CallbackCancellationDeveloper.find(1)
364
- someone.cancel_before_save = true
365
- assert someone.valid?
366
- assert !someone.save
367
- assert_save_callbacks_not_called(someone)
368
- end
369
-
370
- def test_before_create_returning_false
371
- someone = CallbackCancellationDeveloper.new
372
- someone.cancel_before_create = true
373
- assert someone.valid?
374
- assert !someone.save
375
- assert_save_callbacks_not_called(someone)
376
- end
377
-
378
- def test_before_update_returning_false
379
- someone = CallbackCancellationDeveloper.find(1)
380
- someone.cancel_before_update = true
381
- assert someone.valid?
382
- assert !someone.save
383
- assert_save_callbacks_not_called(someone)
384
- end
385
-
386
- def test_before_destroy_returning_false
387
- david = ImmutableDeveloper.find(1)
388
- assert !david.destroy
389
- assert_not_nil ImmutableDeveloper.find_by_id(1)
390
-
391
- someone = CallbackCancellationDeveloper.find(1)
392
- someone.cancel_before_destroy = true
393
- assert !someone.destroy
394
- assert !someone.after_destroy_called
395
- end
396
-
397
- def assert_save_callbacks_not_called(someone)
398
- assert !someone.after_save_called
399
- assert !someone.after_create_called
400
- assert !someone.after_update_called
401
- end
402
- private :assert_save_callbacks_not_called
403
-
404
- def test_zzz_callback_returning_false # must be run last since we modify CallbackDeveloper
405
- david = CallbackDeveloper.find(1)
406
- CallbackDeveloper.before_validation proc { |model| model.history << [:before_validation, :returning_false]; return false }
407
- CallbackDeveloper.before_validation proc { |model| model.history << [:before_validation, :should_never_get_here] }
408
- david.save
409
- assert_equal [
410
- [ :after_find, :string ],
411
- [ :after_find, :proc ],
412
- [ :after_find, :object ],
413
- [ :after_find, :block ],
414
- [ :after_initialize, :string ],
415
- [ :after_initialize, :proc ],
416
- [ :after_initialize, :object ],
417
- [ :after_initialize, :block ],
418
- [ :before_validation, :string ],
419
- [ :before_validation, :proc ],
420
- [ :before_validation, :object ],
421
- [ :before_validation, :block ],
422
- [ :before_validation, :returning_false ]
423
- ], david.history
424
- end
425
-
426
- def test_inheritence_of_callbacks
427
- parent = ParentDeveloper.new
428
- assert !parent.after_save_called
429
- parent.save
430
- assert parent.after_save_called
431
-
432
- child = ChildDeveloper.new
433
- assert !child.after_save_called
434
- child.save
435
- assert child.after_save_called
436
- end
437
-
438
- end
@@ -1,32 +0,0 @@
1
- require 'test/unit'
2
- require "cases/helper"
3
- require 'active_support/core_ext/class/inheritable_attributes'
4
-
5
- class A
6
- include ClassInheritableAttributes
7
- end
8
-
9
- class B < A
10
- write_inheritable_array "first", [ :one, :two ]
11
- end
12
-
13
- class C < A
14
- write_inheritable_array "first", [ :three ]
15
- end
16
-
17
- class D < B
18
- write_inheritable_array "first", [ :four ]
19
- end
20
-
21
-
22
- class ClassInheritableAttributesTest < ActiveRecord::TestCase
23
- def test_first_level
24
- assert_equal [ :one, :two ], B.read_inheritable_attribute("first")
25
- assert_equal [ :three ], C.read_inheritable_attribute("first")
26
- end
27
-
28
- def test_second_level
29
- assert_equal [ :one, :two, :four ], D.read_inheritable_attribute("first")
30
- assert_equal [ :one, :two ], B.read_inheritable_attribute("first")
31
- end
32
- end
@@ -1,17 +0,0 @@
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,70 +0,0 @@
1
- require "cases/helper"
2
-
3
- class ColumnDefinitionTest < ActiveRecord::TestCase
4
- def setup
5
- @adapter = ActiveRecord::ConnectionAdapters::AbstractAdapter.new(nil)
6
- def @adapter.native_database_types
7
- {:string => "varchar"}
8
- end
9
- end
10
-
11
- # Avoid column definitions in create table statements like:
12
- # `title` varchar(255) DEFAULT NULL
13
- def test_should_not_include_default_clause_when_default_is_null
14
- column = ActiveRecord::ConnectionAdapters::Column.new("title", nil, "varchar(20)")
15
- column_def = ActiveRecord::ConnectionAdapters::ColumnDefinition.new(
16
- @adapter, column.name, "string",
17
- column.limit, column.precision, column.scale, column.default, column.null)
18
- assert_equal "title varchar(20)", column_def.to_sql
19
- end
20
-
21
- def test_should_include_default_clause_when_default_is_present
22
- column = ActiveRecord::ConnectionAdapters::Column.new("title", "Hello", "varchar(20)")
23
- column_def = ActiveRecord::ConnectionAdapters::ColumnDefinition.new(
24
- @adapter, column.name, "string",
25
- column.limit, column.precision, column.scale, column.default, column.null)
26
- assert_equal %Q{title varchar(20) DEFAULT 'Hello'}, column_def.to_sql
27
- end
28
-
29
- def test_should_specify_not_null_if_null_option_is_false
30
- column = ActiveRecord::ConnectionAdapters::Column.new("title", "Hello", "varchar(20)", false)
31
- column_def = ActiveRecord::ConnectionAdapters::ColumnDefinition.new(
32
- @adapter, column.name, "string",
33
- column.limit, column.precision, column.scale, column.default, column.null)
34
- assert_equal %Q{title varchar(20) DEFAULT 'Hello' NOT NULL}, column_def.to_sql
35
- end
36
-
37
- if current_adapter?(:MysqlAdapter)
38
- def test_should_set_default_for_mysql_binary_data_types
39
- binary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "binary(1)")
40
- assert_equal "a", binary_column.default
41
-
42
- varbinary_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "varbinary(1)")
43
- assert_equal "a", varbinary_column.default
44
- end
45
-
46
- def test_should_not_set_default_for_blob_and_text_data_types
47
- assert_raise ArgumentError do
48
- ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "a", "blob")
49
- end
50
-
51
- assert_raise ArgumentError do
52
- ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", "Hello", "text")
53
- end
54
-
55
- text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text")
56
- assert_equal nil, text_column.default
57
-
58
- not_null_text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text", false)
59
- assert_equal "", not_null_text_column.default
60
- end
61
-
62
- def test_has_default_should_return_false_for_blog_and_test_data_types
63
- blob_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "blob")
64
- assert !blob_column.has_default?
65
-
66
- text_column = ActiveRecord::ConnectionAdapters::MysqlColumn.new("title", nil, "text")
67
- assert !text_column.has_default?
68
- end
69
- end
70
- end
@@ -1,25 +0,0 @@
1
- require "cases/helper"
2
-
3
- class ConnectionManagementTest < ActiveRecord::TestCase
4
- def setup
5
- @env = {}
6
- @app = stub('App')
7
- @management = ActiveRecord::ConnectionAdapters::ConnectionManagement.new(@app)
8
-
9
- @connections_cleared = false
10
- ActiveRecord::Base.stubs(:clear_active_connections!).with { @connections_cleared = true }
11
- end
12
-
13
- test "clears active connections after each call" do
14
- @app.expects(:call).with(@env)
15
- @management.call(@env)
16
- assert @connections_cleared
17
- end
18
-
19
- test "doesn't clear active connections when running in a test case" do
20
- @env['rack.test'] = true
21
- @app.expects(:call).with(@env)
22
- @management.call(@env)
23
- assert !@connections_cleared
24
- end
25
- end
@@ -1,8 +0,0 @@
1
- require "cases/helper"
2
-
3
- class FirebirdConnectionTest < ActiveRecord::TestCase
4
- def test_charset_properly_set
5
- fb_conn = ActiveRecord::Base.connection.instance_variable_get(:@connection)
6
- assert_equal 'UTF8', fb_conn.database.character_set
7
- end
8
- end
@@ -1,65 +0,0 @@
1
- require "cases/helper"
2
-
3
- class MysqlConnectionTest < ActiveRecord::TestCase
4
- def setup
5
- super
6
- @connection = ActiveRecord::Base.connection
7
- end
8
-
9
- def test_mysql_reconnect_attribute_after_connection_with_reconnect_true
10
- run_without_connection do |orig_connection|
11
- ActiveRecord::Base.establish_connection(orig_connection.merge({:reconnect => true}))
12
- assert ActiveRecord::Base.connection.raw_connection.reconnect
13
- end
14
- end
15
-
16
- def test_mysql_reconnect_attribute_after_connection_with_reconnect_false
17
- run_without_connection do |orig_connection|
18
- ActiveRecord::Base.establish_connection(orig_connection.merge({:reconnect => false}))
19
- assert !ActiveRecord::Base.connection.raw_connection.reconnect
20
- end
21
- end
22
-
23
- def test_no_automatic_reconnection_after_timeout
24
- assert @connection.active?
25
- @connection.update('set @@wait_timeout=1')
26
- sleep 2
27
- assert !@connection.active?
28
- end
29
-
30
- def test_successful_reconnection_after_timeout_with_manual_reconnect
31
- assert @connection.active?
32
- @connection.update('set @@wait_timeout=1')
33
- sleep 2
34
- @connection.reconnect!
35
- assert @connection.active?
36
- end
37
-
38
- def test_successful_reconnection_after_timeout_with_verify
39
- assert @connection.active?
40
- @connection.update('set @@wait_timeout=1')
41
- sleep 2
42
- @connection.verify!
43
- assert @connection.active?
44
- end
45
-
46
- # Test that MySQL allows multiple results for stored procedures
47
- if Mysql.const_defined?(:CLIENT_MULTI_RESULTS)
48
- def test_multi_results
49
- rows = ActiveRecord::Base.connection.select_rows('CALL ten();')
50
- assert_equal 10, rows[0][0].to_i, "ten() did not return 10 as expected: #{rows.inspect}"
51
- assert @connection.active?, "Bad connection use by 'MysqlAdapter.select_rows'"
52
- end
53
- end
54
-
55
- private
56
-
57
- def run_without_connection
58
- original_connection = ActiveRecord::Base.remove_connection
59
- begin
60
- yield original_connection
61
- ensure
62
- ActiveRecord::Base.establish_connection(original_connection)
63
- end
64
- end
65
- end