ibm_db 3.0.0-x86-mingw32 → 3.0.1-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.
- checksums.yaml +4 -4
- data/CHANGES +4 -0
- data/MANIFEST +14 -14
- data/README +225 -225
- data/ext/Makefile.nt32 +181 -181
- data/ext/Makefile.nt32.191 +212 -212
- data/ext/OLD/extconf.rb +264 -0
- data/ext/{extconf_MacOS.rb → OLD/extconf_MacOS.rb} +269 -269
- data/ext/extconf.rb +291 -264
- data/ext/ibm_db.c +2 -2
- data/ext/ruby_ibm_db.h +241 -241
- data/ext/ruby_ibm_db_cli.h +500 -500
- data/init.rb +41 -41
- data/lib/IBM_DB.rb +27 -27
- data/lib/active_record/connection_adapters/ibm_db_adapter.rb +4 -4
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +1 -1
- data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
- data/lib/mswin32/ibm_db.rb +115 -115
- data/test/active_record/connection_adapters/fake_adapter.rb +46 -0
- data/test/assets/example.log +1 -0
- data/test/assets/flowers.jpg +0 -0
- data/test/assets/test.txt +1 -0
- data/test/cases/adapter_test.rb +261 -207
- data/test/cases/aggregations_test.rb +158 -0
- data/test/cases/ar_schema_test.rb +161 -0
- data/test/cases/associations/association_scope_test.rb +21 -0
- data/test/cases/associations/belongs_to_associations_test.rb +1029 -711
- data/test/cases/associations/callbacks_test.rb +192 -0
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -181
- data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -0
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -0
- data/test/cases/associations/eager_load_nested_include_test.rb +128 -0
- data/test/cases/associations/eager_singularization_test.rb +148 -0
- data/test/cases/associations/eager_test.rb +1411 -0
- data/test/cases/associations/extension_test.rb +82 -0
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +932 -851
- data/test/cases/associations/has_many_associations_test.rb +2162 -0
- data/test/cases/associations/has_many_through_associations_test.rb +1204 -0
- data/test/cases/associations/has_one_associations_test.rb +610 -0
- data/test/cases/associations/has_one_through_associations_test.rb +380 -0
- data/test/cases/associations/inner_join_association_test.rb +139 -0
- data/test/cases/associations/inverse_associations_test.rb +693 -0
- data/test/cases/associations/join_model_test.rb +754 -743
- data/test/cases/associations/nested_through_associations_test.rb +579 -0
- data/test/cases/associations/required_test.rb +82 -0
- data/test/cases/associations_test.rb +380 -0
- data/test/cases/attribute_decorators_test.rb +125 -0
- data/test/cases/attribute_methods/read_test.rb +60 -0
- data/test/cases/attribute_methods/serialization_test.rb +29 -0
- data/test/cases/attribute_methods_test.rb +952 -822
- data/test/cases/attribute_set_test.rb +200 -0
- data/test/cases/attribute_test.rb +180 -0
- data/test/cases/attributes_test.rb +136 -0
- data/test/cases/autosave_association_test.rb +1595 -0
- data/test/cases/base_test.rb +1638 -2133
- data/test/cases/batches_test.rb +212 -0
- data/test/cases/binary_test.rb +52 -0
- data/test/cases/bind_parameter_test.rb +100 -0
- data/test/cases/calculations_test.rb +646 -482
- data/test/cases/callbacks_test.rb +543 -0
- data/test/cases/clone_test.rb +40 -0
- data/test/cases/coders/yaml_column_test.rb +63 -0
- data/test/cases/column_alias_test.rb +17 -0
- data/test/cases/column_definition_test.rb +123 -0
- data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -0
- data/test/cases/connection_adapters/connection_handler_test.rb +53 -0
- data/test/cases/connection_adapters/connection_specification_test.rb +12 -0
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -0
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -0
- data/test/cases/connection_adapters/quoting_test.rb +13 -0
- data/test/cases/connection_adapters/schema_cache_test.rb +56 -0
- data/test/cases/connection_adapters/type_lookup_test.rb +110 -0
- data/test/cases/connection_management_test.rb +122 -0
- data/test/cases/connection_pool_test.rb +346 -0
- data/test/cases/connection_specification/resolver_test.rb +116 -0
- data/test/cases/core_test.rb +112 -0
- data/test/cases/counter_cache_test.rb +209 -0
- data/test/cases/custom_locking_test.rb +17 -0
- data/test/cases/database_statements_test.rb +19 -0
- data/test/cases/date_time_test.rb +61 -0
- data/test/cases/defaults_test.rb +223 -0
- data/test/cases/dirty_test.rb +775 -0
- data/test/cases/disconnected_test.rb +28 -0
- data/test/cases/dup_test.rb +157 -0
- data/test/cases/enum_test.rb +290 -0
- data/test/cases/explain_subscriber_test.rb +64 -0
- data/test/cases/explain_test.rb +76 -0
- data/test/cases/finder_respond_to_test.rb +60 -0
- data/test/cases/finder_test.rb +1166 -0
- data/test/cases/fixture_set/file_test.rb +138 -0
- data/test/cases/fixtures_test.rb +897 -0
- data/test/cases/forbidden_attributes_protection_test.rb +99 -0
- data/test/cases/habtm_destroy_order_test.rb +61 -0
- data/test/cases/helper.rb +210 -0
- data/test/cases/hot_compatibility_test.rb +54 -0
- data/test/cases/i18n_test.rb +45 -0
- data/test/cases/inheritance_test.rb +375 -0
- data/test/cases/integration_test.rb +139 -0
- data/test/cases/invalid_connection_test.rb +22 -0
- data/test/cases/invalid_date_test.rb +32 -0
- data/test/cases/invertible_migration_test.rb +295 -0
- data/test/cases/json_serialization_test.rb +302 -0
- data/test/cases/locking_test.rb +477 -0
- data/test/cases/log_subscriber_test.rb +136 -0
- data/test/cases/migration/change_schema_test - Copy.rb +448 -0
- data/test/cases/migration/change_schema_test.rb +472 -0
- data/test/cases/migration/change_table_test.rb +224 -0
- data/test/cases/migration/column_attributes_test.rb +192 -0
- data/test/cases/migration/column_positioning_test.rb +56 -0
- data/test/cases/migration/columns_test.rb +304 -0
- data/test/cases/migration/command_recorder_test.rb +305 -0
- data/test/cases/migration/create_join_table_test.rb +148 -0
- data/test/cases/migration/foreign_key_test - Changed.rb +325 -0
- data/test/cases/migration/foreign_key_test.rb +360 -0
- data/test/cases/migration/helper.rb +39 -0
- data/test/cases/migration/index_test.rb +216 -0
- data/test/cases/migration/logger_test.rb +36 -0
- data/test/cases/migration/pending_migrations_test.rb +53 -0
- data/test/cases/migration/references_foreign_key_test.rb +214 -0
- data/test/cases/migration/references_index_test.rb +101 -0
- data/test/cases/migration/references_statements_test.rb +116 -0
- data/test/cases/migration/rename_table_test.rb +93 -0
- data/test/cases/migration/table_and_index_test.rb +24 -0
- data/test/cases/migration_test.rb +959 -2408
- data/test/cases/migrator_test.rb +388 -0
- data/test/cases/mixin_test.rb +70 -0
- data/test/cases/modules_test.rb +173 -0
- data/test/cases/multiparameter_attributes_test.rb +350 -0
- data/test/cases/multiple_db_test.rb +115 -0
- data/test/cases/nested_attributes_test.rb +1057 -0
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -0
- data/test/cases/persistence_test.rb +909 -642
- data/test/cases/pooled_connections_test.rb +81 -0
- data/test/cases/primary_keys_test.rb +237 -0
- data/test/cases/query_cache_test.rb +326 -257
- data/test/cases/quoting_test.rb +156 -0
- data/test/cases/readonly_test.rb +118 -0
- data/test/cases/reaper_test.rb +85 -0
- data/test/cases/reflection_test.rb +454 -0
- data/test/cases/relation/delegation_test.rb +68 -0
- data/test/cases/relation/merging_test.rb +161 -0
- data/test/cases/relation/mutation_test.rb +165 -0
- data/test/cases/relation/predicate_builder_test.rb +14 -0
- data/test/cases/relation/where_chain_test.rb +181 -0
- data/test/cases/relation/where_test.rb +300 -0
- data/test/cases/relation/where_test2.rb +36 -0
- data/test/cases/relation_test.rb +297 -0
- data/test/cases/relations_test.rb +1815 -1182
- data/test/cases/reload_models_test.rb +22 -0
- data/test/cases/result_test.rb +80 -0
- data/test/cases/sanitize_test.rb +83 -0
- data/test/cases/schema_dumper_test.rb +463 -256
- data/test/cases/scoping/default_scoping_test.rb +454 -0
- data/test/cases/scoping/named_scoping_test.rb +524 -0
- data/test/cases/scoping/relation_scoping_test.rb +357 -0
- data/test/cases/serialization_test.rb +104 -0
- data/test/cases/serialized_attribute_test.rb +277 -0
- data/test/cases/statement_cache_test.rb +98 -0
- data/test/cases/store_test.rb +194 -0
- data/test/cases/tasks/database_tasks_test.rb +396 -0
- data/test/cases/tasks/mysql_rake_test.rb +311 -0
- data/test/cases/tasks/postgresql_rake_test.rb +245 -0
- data/test/cases/tasks/sqlite_rake_test.rb +193 -0
- data/test/cases/test_case.rb +123 -0
- data/test/cases/timestamp_test.rb +468 -0
- data/test/cases/transaction_callbacks_test.rb +452 -300
- data/test/cases/transaction_isolation_test.rb +106 -0
- data/test/cases/transactions_test.rb +817 -0
- data/test/cases/type/decimal_test.rb +51 -0
- data/test/cases/type/integer_test.rb +121 -0
- data/test/cases/type/string_test.rb +36 -0
- data/test/cases/type/type_map_test.rb +177 -0
- data/test/cases/type/unsigned_integer_test.rb +18 -0
- data/test/cases/types_test.rb +141 -0
- data/test/cases/unconnected_test.rb +33 -0
- data/test/cases/validations/association_validation_test.rb +86 -0
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -0
- data/test/cases/validations/i18n_validation_test.rb +90 -0
- data/test/cases/validations/length_validation_test.rb +47 -0
- data/test/cases/validations/presence_validation_test.rb +68 -0
- data/test/cases/validations/uniqueness_validation_test.rb +434 -299
- data/test/cases/validations_repair_helper.rb +23 -0
- data/test/cases/validations_test.rb +165 -0
- data/test/cases/view_test.rb +113 -0
- data/test/cases/xml_serialization_test.rb +457 -408
- data/test/cases/yaml_serialization_test.rb +86 -0
- data/test/config.rb +5 -0
- data/test/config.yml +154 -154
- data/test/connections/native_ibm_db/connection.rb +43 -43
- data/test/fixtures/accounts.yml +29 -0
- data/test/fixtures/admin/accounts.yml +2 -0
- data/test/fixtures/admin/randomly_named_a9.yml +7 -0
- data/test/fixtures/admin/randomly_named_b0.yml +7 -0
- data/test/fixtures/admin/users.yml +10 -0
- data/test/fixtures/all/admin +1 -0
- data/test/fixtures/all/developers.yml +0 -0
- data/test/fixtures/all/people.yml +0 -0
- data/test/fixtures/all/tasks.yml +0 -0
- data/test/fixtures/author_addresses.yml +18 -0
- data/test/fixtures/author_favorites.yml +4 -0
- data/test/fixtures/authors.yml +23 -0
- data/test/fixtures/binaries.yml +133 -0
- data/test/fixtures/books.yml +11 -0
- data/test/fixtures/bulbs.yml +5 -0
- data/test/fixtures/cars.yml +9 -0
- data/test/fixtures/categories.yml +19 -0
- data/test/fixtures/categories/special_categories.yml +9 -0
- data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -0
- data/test/fixtures/categories_ordered.yml +7 -0
- data/test/fixtures/categories_posts.yml +31 -0
- data/test/fixtures/categorizations.yml +23 -0
- data/test/fixtures/clubs.yml +8 -0
- data/test/fixtures/collections.yml +3 -0
- data/test/fixtures/colleges.yml +3 -0
- data/test/fixtures/comments.yml +65 -0
- data/test/fixtures/companies.yml +67 -0
- data/test/fixtures/computers.yml +10 -0
- data/test/fixtures/courses.yml +8 -0
- data/test/fixtures/customers.yml +26 -0
- data/test/fixtures/dashboards.yml +6 -0
- data/test/fixtures/developers.yml +22 -0
- data/test/fixtures/developers_projects.yml +17 -0
- data/test/fixtures/dog_lovers.yml +7 -0
- data/test/fixtures/dogs.yml +4 -0
- data/test/fixtures/doubloons.yml +3 -0
- data/test/fixtures/edges.yml +5 -0
- data/test/fixtures/entrants.yml +14 -0
- data/test/fixtures/essays.yml +6 -0
- data/test/fixtures/faces.yml +11 -0
- data/test/fixtures/fk_test_has_fk.yml +3 -0
- data/test/fixtures/fk_test_has_pk.yml +2 -0
- data/test/fixtures/friendships.yml +4 -0
- data/test/fixtures/funny_jokes.yml +10 -0
- data/test/fixtures/interests.yml +33 -0
- data/test/fixtures/items.yml +3 -0
- data/test/fixtures/jobs.yml +7 -0
- data/test/fixtures/legacy_things.yml +3 -0
- data/test/fixtures/mateys.yml +4 -0
- data/test/fixtures/member_details.yml +8 -0
- data/test/fixtures/member_types.yml +6 -0
- data/test/fixtures/members.yml +11 -0
- data/test/fixtures/memberships.yml +34 -0
- data/test/fixtures/men.yml +5 -0
- data/test/fixtures/minimalistics.yml +2 -0
- data/test/fixtures/minivans.yml +5 -0
- data/test/fixtures/mixed_case_monkeys.yml +6 -0
- data/test/fixtures/mixins.yml +29 -0
- data/test/fixtures/movies.yml +7 -0
- data/test/fixtures/naked/csv/accounts.csv +1 -0
- data/test/fixtures/naked/yml/accounts.yml +1 -0
- data/test/fixtures/naked/yml/companies.yml +1 -0
- data/test/fixtures/naked/yml/courses.yml +1 -0
- data/test/fixtures/organizations.yml +5 -0
- data/test/fixtures/other_topics.yml +42 -0
- data/test/fixtures/owners.yml +9 -0
- data/test/fixtures/parrots.yml +27 -0
- data/test/fixtures/parrots_pirates.yml +7 -0
- data/test/fixtures/people.yml +24 -0
- data/test/fixtures/peoples_treasures.yml +3 -0
- data/test/fixtures/pets.yml +19 -0
- data/test/fixtures/pirates.yml +12 -0
- data/test/fixtures/posts.yml +80 -0
- data/test/fixtures/price_estimates.yml +7 -0
- data/test/fixtures/products.yml +4 -0
- data/test/fixtures/projects.yml +7 -0
- data/test/fixtures/randomly_named_a9.yml +7 -0
- data/test/fixtures/ratings.yml +14 -0
- data/test/fixtures/readers.yml +11 -0
- data/test/fixtures/references.yml +17 -0
- data/test/fixtures/reserved_words/distinct.yml +5 -0
- data/test/fixtures/reserved_words/distinct_select.yml +11 -0
- data/test/fixtures/reserved_words/group.yml +14 -0
- data/test/fixtures/reserved_words/select.yml +8 -0
- data/test/fixtures/reserved_words/values.yml +7 -0
- data/test/fixtures/ships.yml +6 -0
- data/test/fixtures/speedometers.yml +8 -0
- data/test/fixtures/sponsors.yml +12 -0
- data/test/fixtures/string_key_objects.yml +7 -0
- data/test/fixtures/subscribers.yml +11 -0
- data/test/fixtures/subscriptions.yml +12 -0
- data/test/fixtures/taggings.yml +78 -0
- data/test/fixtures/tags.yml +11 -0
- data/test/fixtures/tasks.yml +7 -0
- data/test/fixtures/teapots.yml +3 -0
- data/test/fixtures/to_be_linked/accounts.yml +2 -0
- data/test/fixtures/to_be_linked/users.yml +10 -0
- data/test/fixtures/topics.yml +49 -0
- data/test/fixtures/toys.yml +14 -0
- data/test/fixtures/traffic_lights.yml +10 -0
- data/test/fixtures/treasures.yml +10 -0
- data/test/fixtures/uuid_children.yml +3 -0
- data/test/fixtures/uuid_parents.yml +2 -0
- data/test/fixtures/variants.yml +4 -0
- data/test/fixtures/vegetables.yml +20 -0
- data/test/fixtures/vertices.yml +4 -0
- data/test/fixtures/warehouse_things.yml +3 -0
- data/test/fixtures/zines.yml +5 -0
- data/test/ibm_db_test.rb +24 -24
- data/test/migrations/10_urban/9_add_expressions.rb +11 -0
- data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -0
- data/test/migrations/magic/1_currencies_have_symbols.rb +12 -0
- data/test/migrations/missing/1000_people_have_middle_names.rb +9 -0
- data/test/migrations/missing/1_people_have_last_names.rb +9 -0
- data/test/migrations/missing/3_we_need_reminders.rb +12 -0
- data/test/migrations/missing/4_innocent_jointable.rb +12 -0
- data/test/migrations/rename/1_we_need_things.rb +11 -0
- data/test/migrations/rename/2_rename_things.rb +9 -0
- data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -0
- data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -0
- data/test/migrations/to_copy2/1_create_articles.rb +7 -0
- data/test/migrations/to_copy2/2_create_comments.rb +7 -0
- data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -0
- data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -0
- data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -0
- data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -0
- data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -0
- data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -0
- data/test/migrations/valid/2_we_need_reminders.rb +12 -0
- data/test/migrations/valid/3_innocent_jointable.rb +12 -0
- data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -0
- data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +12 -0
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -0
- data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -0
- data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -0
- data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -0
- data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -0
- data/test/models/admin.rb +5 -0
- data/test/models/admin/account.rb +3 -0
- data/test/models/admin/randomly_named_c1.rb +3 -0
- data/test/models/admin/user.rb +40 -0
- data/test/models/aircraft.rb +4 -0
- data/test/models/arunit2_model.rb +3 -0
- data/test/models/author.rb +212 -0
- data/test/models/auto_id.rb +4 -0
- data/test/models/autoloadable/extra_firm.rb +2 -0
- data/test/models/binary.rb +2 -0
- data/test/models/bird.rb +12 -0
- data/test/models/book.rb +18 -0
- data/test/models/boolean.rb +2 -0
- data/test/models/bulb.rb +51 -0
- data/test/models/cake_designer.rb +3 -0
- data/test/models/car.rb +26 -0
- data/test/models/carrier.rb +2 -0
- data/test/models/categorization.rb +19 -0
- data/test/models/category.rb +35 -0
- data/test/models/chef.rb +3 -0
- data/test/models/citation.rb +3 -0
- data/test/models/club.rb +23 -0
- data/test/models/college.rb +10 -0
- data/test/models/column.rb +3 -0
- data/test/models/column_name.rb +3 -0
- data/test/models/comment.rb +64 -0
- data/test/models/company.rb +225 -0
- data/test/models/company_in_module.rb +98 -0
- data/test/models/computer.rb +3 -0
- data/test/models/contact.rb +41 -0
- data/test/models/contract.rb +20 -0
- data/test/models/country.rb +7 -0
- data/test/models/course.rb +6 -0
- data/test/models/customer.rb +77 -0
- data/test/models/customer_carrier.rb +14 -0
- data/test/models/dashboard.rb +3 -0
- data/test/models/default.rb +2 -0
- data/test/models/department.rb +4 -0
- data/test/models/developer.rb +252 -0
- data/test/models/dog.rb +5 -0
- data/test/models/dog_lover.rb +5 -0
- data/test/models/doubloon.rb +12 -0
- data/test/models/drink_designer.rb +3 -0
- data/test/models/edge.rb +5 -0
- data/test/models/electron.rb +5 -0
- data/test/models/engine.rb +4 -0
- data/test/models/entrant.rb +3 -0
- data/test/models/essay.rb +5 -0
- data/test/models/event.rb +3 -0
- data/test/models/eye.rb +37 -0
- data/test/models/face.rb +9 -0
- data/test/models/friendship.rb +6 -0
- data/test/models/guid.rb +2 -0
- data/test/models/hotel.rb +6 -0
- data/test/models/image.rb +3 -0
- data/test/models/interest.rb +5 -0
- data/test/models/invoice.rb +4 -0
- data/test/models/item.rb +7 -0
- data/test/models/job.rb +7 -0
- data/test/models/joke.rb +7 -0
- data/test/models/keyboard.rb +3 -0
- data/test/models/legacy_thing.rb +3 -0
- data/test/models/lesson.rb +11 -0
- data/test/models/line_item.rb +3 -0
- data/test/models/liquid.rb +4 -0
- data/test/models/man.rb +11 -0
- data/test/models/matey.rb +4 -0
- data/test/models/member.rb +41 -0
- data/test/models/member_detail.rb +7 -0
- data/test/models/member_type.rb +3 -0
- data/test/models/membership.rb +35 -0
- data/test/models/minimalistic.rb +2 -0
- data/test/models/minivan.rb +9 -0
- data/test/models/mixed_case_monkey.rb +3 -0
- data/test/models/molecule.rb +6 -0
- data/test/models/movie.rb +5 -0
- data/test/models/order.rb +4 -0
- data/test/models/organization.rb +14 -0
- data/test/models/owner.rb +34 -0
- data/test/models/parrot.rb +29 -0
- data/test/models/person.rb +143 -0
- data/test/models/personal_legacy_thing.rb +4 -0
- data/test/models/pet.rb +15 -0
- data/test/models/pirate.rb +92 -0
- data/test/models/possession.rb +3 -0
- data/test/models/post.rb +264 -0
- data/test/models/price_estimate.rb +4 -0
- data/test/models/professor.rb +5 -0
- data/test/models/project.rb +29 -0
- data/test/models/publisher.rb +2 -0
- data/test/models/publisher/article.rb +4 -0
- data/test/models/publisher/magazine.rb +3 -0
- data/test/models/randomly_named_c1.rb +3 -0
- data/test/models/rating.rb +4 -0
- data/test/models/reader.rb +23 -0
- data/test/models/record.rb +2 -0
- data/test/models/reference.rb +22 -0
- data/test/models/reply.rb +61 -0
- data/test/models/ship.rb +33 -0
- data/test/models/ship_part.rb +8 -0
- data/test/models/shop.rb +17 -0
- data/test/models/shop_account.rb +6 -0
- data/test/models/speedometer.rb +6 -0
- data/test/models/sponsor.rb +7 -0
- data/test/models/string_key_object.rb +3 -0
- data/test/models/student.rb +4 -0
- data/test/models/subject.rb +16 -0
- data/test/models/subscriber.rb +8 -0
- data/test/models/subscription.rb +4 -0
- data/test/models/tag.rb +7 -0
- data/test/models/tagging.rb +13 -0
- data/test/models/task.rb +5 -0
- data/test/models/topic.rb +124 -0
- data/test/models/toy.rb +6 -0
- data/test/models/traffic_light.rb +4 -0
- data/test/models/treasure.rb +14 -0
- data/test/models/treaty.rb +7 -0
- data/test/models/tyre.rb +11 -0
- data/test/models/uuid_child.rb +3 -0
- data/test/models/uuid_parent.rb +3 -0
- data/test/models/vegetables.rb +24 -0
- data/test/models/vehicle.rb +7 -0
- data/test/models/vertex.rb +9 -0
- data/test/models/warehouse_thing.rb +5 -5
- data/test/models/wheel.rb +3 -0
- data/test/models/without_table.rb +3 -0
- data/test/models/zine.rb +3 -0
- data/test/schema/mysql2_specific_schema.rb +58 -0
- data/test/schema/mysql_specific_schema.rb +70 -0
- data/test/schema/oracle_specific_schema.rb +43 -0
- data/test/schema/postgresql_specific_schema.rb +202 -0
- data/test/schema/schema.rb +938 -751
- data/test/schema/sqlite_specific_schema.rb +22 -0
- data/test/support/config.rb +43 -0
- data/test/support/connection.rb +22 -0
- data/test/support/connection_helper.rb +14 -0
- data/test/support/ddl_helper.rb +8 -0
- data/test/support/schema_dumping_helper.rb +20 -0
- metadata +444 -18
@@ -0,0 +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
|
@@ -0,0 +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
|
@@ -0,0 +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
|
@@ -0,0 +1,123 @@
|
|
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
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class AdapterLeasingTest < ActiveRecord::TestCase
|
6
|
+
class Pool < ConnectionPool
|
7
|
+
def insert_connection_for_test!(c)
|
8
|
+
synchronize do
|
9
|
+
@connections << c
|
10
|
+
@available.add c
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def setup
|
16
|
+
@adapter = AbstractAdapter.new nil, nil
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_in_use?
|
20
|
+
assert_not @adapter.in_use?, 'adapter is not in use'
|
21
|
+
assert @adapter.lease, 'lease adapter'
|
22
|
+
assert @adapter.in_use?, 'adapter is in use'
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_lease_twice
|
26
|
+
assert @adapter.lease, 'should lease adapter'
|
27
|
+
assert_not @adapter.lease, 'should not lease adapter'
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_expire_mutates_in_use
|
31
|
+
assert @adapter.lease, 'lease adapter'
|
32
|
+
assert @adapter.in_use?, 'adapter is in use'
|
33
|
+
@adapter.expire
|
34
|
+
assert_not @adapter.in_use?, 'adapter is in use'
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_close
|
38
|
+
pool = Pool.new(ConnectionSpecification.new({}, nil))
|
39
|
+
pool.insert_connection_for_test! @adapter
|
40
|
+
@adapter.pool = pool
|
41
|
+
|
42
|
+
# Make sure the pool marks the connection in use
|
43
|
+
assert_equal @adapter, pool.connection
|
44
|
+
assert @adapter.in_use?
|
45
|
+
|
46
|
+
# Close should put the adapter back in the pool
|
47
|
+
@adapter.close
|
48
|
+
assert_not @adapter.in_use?
|
49
|
+
|
50
|
+
assert_equal @adapter, pool.connection
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class ConnectionHandlerTest < ActiveRecord::TestCase
|
6
|
+
def setup
|
7
|
+
@klass = Class.new(Base) { def self.name; 'klass'; end }
|
8
|
+
@subklass = Class.new(@klass) { def self.name; 'subklass'; end }
|
9
|
+
|
10
|
+
@handler = ConnectionHandler.new
|
11
|
+
@pool = @handler.establish_connection(@klass, Base.connection_pool.spec)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_retrieve_connection
|
15
|
+
assert @handler.retrieve_connection(@klass)
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_active_connections?
|
19
|
+
assert !@handler.active_connections?
|
20
|
+
assert @handler.retrieve_connection(@klass)
|
21
|
+
assert @handler.active_connections?
|
22
|
+
@handler.clear_active_connections!
|
23
|
+
assert !@handler.active_connections?
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_retrieve_connection_pool_with_ar_base
|
27
|
+
assert_nil @handler.retrieve_connection_pool(ActiveRecord::Base)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_retrieve_connection_pool
|
31
|
+
assert_not_nil @handler.retrieve_connection_pool(@klass)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_retrieve_connection_pool_uses_superclass_when_no_subclass_connection
|
35
|
+
assert_not_nil @handler.retrieve_connection_pool(@subklass)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_retrieve_connection_pool_uses_superclass_pool_after_subclass_establish_and_remove
|
39
|
+
sub_pool = @handler.establish_connection(@subklass, Base.connection_pool.spec)
|
40
|
+
assert_same sub_pool, @handler.retrieve_connection_pool(@subklass)
|
41
|
+
|
42
|
+
@handler.remove_connection @subklass
|
43
|
+
assert_same @pool, @handler.retrieve_connection_pool(@subklass)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_connection_pools
|
47
|
+
assert_deprecated do
|
48
|
+
assert_equal({ Base.connection_pool.spec => @pool }, @handler.connection_pools)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class ConnectionSpecificationTest < ActiveRecord::TestCase
|
6
|
+
def test_dup_deep_copy_config
|
7
|
+
spec = ConnectionSpecification.new({ :a => :b }, "bar")
|
8
|
+
assert_not_equal(spec.config.object_id, spec.dup.config.object_id)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,293 @@
|
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
module ConnectionAdapters
|
5
|
+
class MergeAndResolveDefaultUrlConfigTest < ActiveRecord::TestCase
|
6
|
+
def setup
|
7
|
+
@previous_database_url = ENV.delete("DATABASE_URL")
|
8
|
+
@previous_rack_env = ENV.delete("RACK_ENV")
|
9
|
+
@previous_rails_env = ENV.delete("RAILS_ENV")
|
10
|
+
end
|
11
|
+
|
12
|
+
teardown do
|
13
|
+
ENV["DATABASE_URL"] = @previous_database_url
|
14
|
+
ENV["RACK_ENV"] = @previous_rack_env
|
15
|
+
ENV["RAILS_ENV"] = @previous_rails_env
|
16
|
+
end
|
17
|
+
|
18
|
+
def resolve_config(config)
|
19
|
+
ActiveRecord::ConnectionHandling::MergeAndResolveDefaultUrlConfig.new(config).resolve
|
20
|
+
end
|
21
|
+
|
22
|
+
def resolve_spec(spec, config)
|
23
|
+
ConnectionSpecification::Resolver.new(resolve_config(config)).resolve(spec)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_resolver_with_database_uri_and_current_env_symbol_key
|
27
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
28
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
29
|
+
actual = resolve_spec(:default_env, config)
|
30
|
+
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
31
|
+
assert_equal expected, actual
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_resolver_with_database_uri_and_current_env_symbol_key_and_rails_env
|
35
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
36
|
+
ENV['RAILS_ENV'] = "foo"
|
37
|
+
|
38
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
39
|
+
actual = resolve_spec(:foo, config)
|
40
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
41
|
+
assert_equal expected, actual
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_resolver_with_database_uri_and_current_env_symbol_key_and_rack_env
|
45
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
46
|
+
ENV['RACK_ENV'] = "foo"
|
47
|
+
|
48
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
49
|
+
actual = resolve_spec(:foo, config)
|
50
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
51
|
+
assert_equal expected, actual
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_resolver_with_database_uri_and_and_current_env_string_key
|
55
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
56
|
+
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
57
|
+
actual = assert_deprecated { resolve_spec("default_env", config) }
|
58
|
+
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
59
|
+
assert_equal expected, actual
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_resolver_with_database_uri_and_and_current_env_string_key_and_rails_env
|
63
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
64
|
+
ENV['RAILS_ENV'] = "foo"
|
65
|
+
|
66
|
+
config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
|
67
|
+
actual = assert_deprecated { resolve_spec("foo", config) }
|
68
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
69
|
+
assert_equal expected, actual
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_resolver_with_database_uri_and_and_current_env_string_key_and_rack_env
|
73
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
74
|
+
ENV['RACK_ENV'] = "foo"
|
75
|
+
|
76
|
+
config = { "not_production" => {"adapter" => "not_postgres", "database" => "not_foo" } }
|
77
|
+
actual = assert_deprecated { resolve_spec("foo", config) }
|
78
|
+
expected = { "adapter" => "postgresql", "database" => "foo", "host" => "localhost" }
|
79
|
+
assert_equal expected, actual
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_resolver_with_database_uri_and_known_key
|
83
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
84
|
+
config = { "production" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
|
85
|
+
actual = resolve_spec(:production, config)
|
86
|
+
expected = { "adapter"=>"not_postgres", "database"=>"not_foo", "host"=>"localhost" }
|
87
|
+
assert_equal expected, actual
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_resolver_with_database_uri_and_unknown_symbol_key
|
91
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
92
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
93
|
+
assert_raises AdapterNotSpecified do
|
94
|
+
resolve_spec(:production, config)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_resolver_with_database_uri_and_unknown_string_key
|
99
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
100
|
+
config = { "not_production" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
101
|
+
assert_deprecated do
|
102
|
+
assert_raises AdapterNotSpecified do
|
103
|
+
resolve_spec("production", config)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_resolver_with_database_uri_and_supplied_url
|
109
|
+
ENV['DATABASE_URL'] = "not-postgres://not-localhost/not_foo"
|
110
|
+
config = { "production" => { "adapter" => "also_not_postgres", "database" => "also_not_foo" } }
|
111
|
+
actual = resolve_spec("postgres://localhost/foo", config)
|
112
|
+
expected = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
113
|
+
assert_equal expected, actual
|
114
|
+
end
|
115
|
+
|
116
|
+
def test_jdbc_url
|
117
|
+
config = { "production" => { "url" => "jdbc:postgres://localhost/foo" } }
|
118
|
+
actual = resolve_config(config)
|
119
|
+
assert_equal config, actual
|
120
|
+
end
|
121
|
+
|
122
|
+
def test_environment_does_not_exist_in_config_url_does_exist
|
123
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
124
|
+
config = { "not_default_env" => { "adapter" => "not_postgres", "database" => "not_foo" } }
|
125
|
+
actual = resolve_config(config)
|
126
|
+
expect_prod = { "adapter"=>"postgresql", "database"=>"foo", "host"=>"localhost" }
|
127
|
+
assert_equal expect_prod, actual["default_env"]
|
128
|
+
end
|
129
|
+
|
130
|
+
def test_url_with_hyphenated_scheme
|
131
|
+
ENV['DATABASE_URL'] = "ibm-db://localhost/foo"
|
132
|
+
config = { "default_env" => { "adapter" => "not_postgres", "database" => "not_foo", "host" => "localhost" } }
|
133
|
+
actual = resolve_spec(:default_env, config)
|
134
|
+
expected = { "adapter"=>"ibm_db", "database"=>"foo", "host"=>"localhost" }
|
135
|
+
assert_equal expected, actual
|
136
|
+
end
|
137
|
+
|
138
|
+
def test_string_connection
|
139
|
+
config = { "default_env" => "postgres://localhost/foo" }
|
140
|
+
actual = resolve_config(config)
|
141
|
+
expected = { "default_env" =>
|
142
|
+
{ "adapter" => "postgresql",
|
143
|
+
"database" => "foo",
|
144
|
+
"host" => "localhost"
|
145
|
+
}
|
146
|
+
}
|
147
|
+
assert_equal expected, actual
|
148
|
+
end
|
149
|
+
|
150
|
+
def test_url_sub_key
|
151
|
+
config = { "default_env" => { "url" => "postgres://localhost/foo" } }
|
152
|
+
actual = resolve_config(config)
|
153
|
+
expected = { "default_env" =>
|
154
|
+
{ "adapter" => "postgresql",
|
155
|
+
"database" => "foo",
|
156
|
+
"host" => "localhost"
|
157
|
+
}
|
158
|
+
}
|
159
|
+
assert_equal expected, actual
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_hash
|
163
|
+
config = { "production" => { "adapter" => "postgres", "database" => "foo" } }
|
164
|
+
actual = resolve_config(config)
|
165
|
+
assert_equal config, actual
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_blank
|
169
|
+
config = {}
|
170
|
+
actual = resolve_config(config)
|
171
|
+
assert_equal config, actual
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_blank_with_database_url
|
175
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
176
|
+
|
177
|
+
config = {}
|
178
|
+
actual = resolve_config(config)
|
179
|
+
expected = { "adapter" => "postgresql",
|
180
|
+
"database" => "foo",
|
181
|
+
"host" => "localhost" }
|
182
|
+
assert_equal expected, actual["default_env"]
|
183
|
+
assert_equal nil, actual["production"]
|
184
|
+
assert_equal nil, actual["development"]
|
185
|
+
assert_equal nil, actual["test"]
|
186
|
+
assert_equal nil, actual[:default_env]
|
187
|
+
assert_equal nil, actual[:production]
|
188
|
+
assert_equal nil, actual[:development]
|
189
|
+
assert_equal nil, actual[:test]
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_blank_with_database_url_with_rails_env
|
193
|
+
ENV['RAILS_ENV'] = "not_production"
|
194
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
195
|
+
|
196
|
+
config = {}
|
197
|
+
actual = resolve_config(config)
|
198
|
+
expected = { "adapter" => "postgresql",
|
199
|
+
"database" => "foo",
|
200
|
+
"host" => "localhost" }
|
201
|
+
|
202
|
+
assert_equal expected, actual["not_production"]
|
203
|
+
assert_equal nil, actual["production"]
|
204
|
+
assert_equal nil, actual["default_env"]
|
205
|
+
assert_equal nil, actual["development"]
|
206
|
+
assert_equal nil, actual["test"]
|
207
|
+
assert_equal nil, actual[:default_env]
|
208
|
+
assert_equal nil, actual[:not_production]
|
209
|
+
assert_equal nil, actual[:production]
|
210
|
+
assert_equal nil, actual[:development]
|
211
|
+
assert_equal nil, actual[:test]
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_blank_with_database_url_with_rack_env
|
215
|
+
ENV['RACK_ENV'] = "not_production"
|
216
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
217
|
+
|
218
|
+
config = {}
|
219
|
+
actual = resolve_config(config)
|
220
|
+
expected = { "adapter" => "postgresql",
|
221
|
+
"database" => "foo",
|
222
|
+
"host" => "localhost" }
|
223
|
+
|
224
|
+
assert_equal expected, actual["not_production"]
|
225
|
+
assert_equal nil, actual["production"]
|
226
|
+
assert_equal nil, actual["default_env"]
|
227
|
+
assert_equal nil, actual["development"]
|
228
|
+
assert_equal nil, actual["test"]
|
229
|
+
assert_equal nil, actual[:default_env]
|
230
|
+
assert_equal nil, actual[:not_production]
|
231
|
+
assert_equal nil, actual[:production]
|
232
|
+
assert_equal nil, actual[:development]
|
233
|
+
assert_equal nil, actual[:test]
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_database_url_with_ipv6_host_and_port
|
237
|
+
ENV['DATABASE_URL'] = "postgres://[::1]:5454/foo"
|
238
|
+
|
239
|
+
config = {}
|
240
|
+
actual = resolve_config(config)
|
241
|
+
expected = { "adapter" => "postgresql",
|
242
|
+
"database" => "foo",
|
243
|
+
"host" => "::1",
|
244
|
+
"port" => 5454 }
|
245
|
+
assert_equal expected, actual["default_env"]
|
246
|
+
end
|
247
|
+
|
248
|
+
def test_url_sub_key_with_database_url
|
249
|
+
ENV['DATABASE_URL'] = "NOT-POSTGRES://localhost/NOT_FOO"
|
250
|
+
|
251
|
+
config = { "default_env" => { "url" => "postgres://localhost/foo" } }
|
252
|
+
actual = resolve_config(config)
|
253
|
+
expected = { "default_env" =>
|
254
|
+
{ "adapter" => "postgresql",
|
255
|
+
"database" => "foo",
|
256
|
+
"host" => "localhost"
|
257
|
+
}
|
258
|
+
}
|
259
|
+
assert_equal expected, actual
|
260
|
+
end
|
261
|
+
|
262
|
+
def test_merge_no_conflicts_with_database_url
|
263
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
264
|
+
|
265
|
+
config = {"default_env" => { "pool" => "5" } }
|
266
|
+
actual = resolve_config(config)
|
267
|
+
expected = { "default_env" =>
|
268
|
+
{ "adapter" => "postgresql",
|
269
|
+
"database" => "foo",
|
270
|
+
"host" => "localhost",
|
271
|
+
"pool" => "5"
|
272
|
+
}
|
273
|
+
}
|
274
|
+
assert_equal expected, actual
|
275
|
+
end
|
276
|
+
|
277
|
+
def test_merge_conflicts_with_database_url
|
278
|
+
ENV['DATABASE_URL'] = "postgres://localhost/foo"
|
279
|
+
|
280
|
+
config = {"default_env" => { "adapter" => "NOT-POSTGRES", "database" => "NOT-FOO", "pool" => "5" } }
|
281
|
+
actual = resolve_config(config)
|
282
|
+
expected = { "default_env" =>
|
283
|
+
{ "adapter" => "postgresql",
|
284
|
+
"database" => "foo",
|
285
|
+
"host" => "localhost",
|
286
|
+
"pool" => "5"
|
287
|
+
}
|
288
|
+
}
|
289
|
+
assert_equal expected, actual
|
290
|
+
end
|
291
|
+
end
|
292
|
+
end
|
293
|
+
end
|