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,224 @@
|
|
1
|
+
require "cases/migration/helper"
|
2
|
+
require "minitest/mock"
|
3
|
+
|
4
|
+
module ActiveRecord
|
5
|
+
class Migration
|
6
|
+
class TableTest < ActiveRecord::TestCase
|
7
|
+
def setup
|
8
|
+
@connection = Minitest::Mock.new
|
9
|
+
end
|
10
|
+
|
11
|
+
teardown do
|
12
|
+
assert @connection.verify
|
13
|
+
end
|
14
|
+
|
15
|
+
def with_change_table
|
16
|
+
yield ConnectionAdapters::Table.new(:delete_me, @connection)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_references_column_type_adds_id
|
20
|
+
with_change_table do |t|
|
21
|
+
@connection.expect :add_reference, nil, [:delete_me, :customer, {}]
|
22
|
+
t.references :customer
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_remove_references_column_type_removes_id
|
27
|
+
with_change_table do |t|
|
28
|
+
@connection.expect :remove_reference, nil, [:delete_me, :customer, {}]
|
29
|
+
t.remove_references :customer
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_add_belongs_to_works_like_add_references
|
34
|
+
with_change_table do |t|
|
35
|
+
@connection.expect :add_reference, nil, [:delete_me, :customer, {}]
|
36
|
+
t.belongs_to :customer
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_remove_belongs_to_works_like_remove_references
|
41
|
+
with_change_table do |t|
|
42
|
+
@connection.expect :remove_reference, nil, [:delete_me, :customer, {}]
|
43
|
+
t.remove_belongs_to :customer
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_references_column_type_with_polymorphic_adds_type
|
48
|
+
with_change_table do |t|
|
49
|
+
@connection.expect :add_reference, nil, [:delete_me, :taggable, polymorphic: true]
|
50
|
+
t.references :taggable, polymorphic: true
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_remove_references_column_type_with_polymorphic_removes_type
|
55
|
+
with_change_table do |t|
|
56
|
+
@connection.expect :remove_reference, nil, [:delete_me, :taggable, polymorphic: true]
|
57
|
+
t.remove_references :taggable, polymorphic: true
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_references_column_type_with_polymorphic_and_options_null_is_false_adds_table_flag
|
62
|
+
with_change_table do |t|
|
63
|
+
@connection.expect :add_reference, nil, [:delete_me, :taggable, polymorphic: true, null: false]
|
64
|
+
t.references :taggable, polymorphic: true, null: false
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_remove_references_column_type_with_polymorphic_and_options_null_is_false_removes_table_flag
|
69
|
+
with_change_table do |t|
|
70
|
+
@connection.expect :remove_reference, nil, [:delete_me, :taggable, polymorphic: true, null: false]
|
71
|
+
t.remove_references :taggable, polymorphic: true, null: false
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_references_column_type_with_polymorphic_and_type
|
76
|
+
with_change_table do |t|
|
77
|
+
@connection.expect :add_reference, nil, [:delete_me, :taggable, polymorphic: true, type: :string]
|
78
|
+
t.references :taggable, polymorphic: true, type: :string
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_remove_references_column_type_with_polymorphic_and_type
|
83
|
+
with_change_table do |t|
|
84
|
+
@connection.expect :remove_reference, nil, [:delete_me, :taggable, polymorphic: true, type: :string]
|
85
|
+
t.remove_references :taggable, polymorphic: true, type: :string
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_timestamps_creates_updated_at_and_created_at
|
90
|
+
with_change_table do |t|
|
91
|
+
@connection.expect :add_timestamps, nil, [:delete_me, null: true]
|
92
|
+
t.timestamps null: true
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_remove_timestamps_creates_updated_at_and_created_at
|
97
|
+
with_change_table do |t|
|
98
|
+
@connection.expect :remove_timestamps, nil, [:delete_me, { null: true }]
|
99
|
+
t.remove_timestamps({ null: true })
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_integer_creates_integer_column
|
104
|
+
with_change_table do |t|
|
105
|
+
@connection.expect :add_column, nil, [:delete_me, :foo, :integer, {}]
|
106
|
+
@connection.expect :add_column, nil, [:delete_me, :bar, :integer, {}]
|
107
|
+
t.integer :foo, :bar
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_string_creates_string_column
|
112
|
+
with_change_table do |t|
|
113
|
+
@connection.expect :add_column, nil, [:delete_me, :foo, :string, {}]
|
114
|
+
@connection.expect :add_column, nil, [:delete_me, :bar, :string, {}]
|
115
|
+
t.string :foo, :bar
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_column_creates_column
|
120
|
+
with_change_table do |t|
|
121
|
+
@connection.expect :add_column, nil, [:delete_me, :bar, :integer, {}]
|
122
|
+
t.column :bar, :integer
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_column_creates_column_with_options
|
127
|
+
with_change_table do |t|
|
128
|
+
@connection.expect :add_column, nil, [:delete_me, :bar, :integer, {:null => false}]
|
129
|
+
t.column :bar, :integer, :null => false
|
130
|
+
end
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_index_creates_index
|
134
|
+
with_change_table do |t|
|
135
|
+
@connection.expect :add_index, nil, [:delete_me, :bar, {}]
|
136
|
+
t.index :bar
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_index_creates_index_with_options
|
141
|
+
with_change_table do |t|
|
142
|
+
@connection.expect :add_index, nil, [:delete_me, :bar, {:unique => true}]
|
143
|
+
t.index :bar, :unique => true
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_index_exists
|
148
|
+
with_change_table do |t|
|
149
|
+
@connection.expect :index_exists?, nil, [:delete_me, :bar, {}]
|
150
|
+
t.index_exists?(:bar)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_index_exists_with_options
|
155
|
+
with_change_table do |t|
|
156
|
+
@connection.expect :index_exists?, nil, [:delete_me, :bar, {:unique => true}]
|
157
|
+
t.index_exists?(:bar, :unique => true)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def test_rename_index_renames_index
|
162
|
+
with_change_table do |t|
|
163
|
+
@connection.expect :rename_index, nil, [:delete_me, :bar, :baz]
|
164
|
+
t.rename_index :bar, :baz
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_change_changes_column
|
169
|
+
with_change_table do |t|
|
170
|
+
@connection.expect :change_column, nil, [:delete_me, :bar, :string, {}]
|
171
|
+
t.change :bar, :string
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
def test_change_changes_column_with_options
|
176
|
+
with_change_table do |t|
|
177
|
+
@connection.expect :change_column, nil, [:delete_me, :bar, :string, {:null => true}]
|
178
|
+
t.change :bar, :string, :null => true
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_change_default_changes_column
|
183
|
+
with_change_table do |t|
|
184
|
+
@connection.expect :change_column_default, nil, [:delete_me, :bar, :string]
|
185
|
+
t.change_default :bar, :string
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_remove_drops_single_column
|
190
|
+
with_change_table do |t|
|
191
|
+
@connection.expect :remove_columns, nil, [:delete_me, :bar]
|
192
|
+
t.remove :bar
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
def test_remove_drops_multiple_columns
|
197
|
+
with_change_table do |t|
|
198
|
+
@connection.expect :remove_columns, nil, [:delete_me, :bar, :baz]
|
199
|
+
t.remove :bar, :baz
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_remove_index_removes_index_with_options
|
204
|
+
with_change_table do |t|
|
205
|
+
@connection.expect :remove_index, nil, [:delete_me, {:unique => true}]
|
206
|
+
t.remove_index :unique => true
|
207
|
+
end
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_rename_renames_column
|
211
|
+
with_change_table do |t|
|
212
|
+
@connection.expect :rename_column, nil, [:delete_me, :bar, :baz]
|
213
|
+
t.rename :bar, :baz
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
def test_table_name_set
|
218
|
+
with_change_table do |t|
|
219
|
+
assert_equal :delete_me, t.name
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
@@ -0,0 +1,192 @@
|
|
1
|
+
require "cases/migration/helper"
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Migration
|
5
|
+
class ColumnAttributesTest < ActiveRecord::TestCase
|
6
|
+
include ActiveRecord::Migration::TestHelper
|
7
|
+
|
8
|
+
self.use_transactional_fixtures = false
|
9
|
+
|
10
|
+
def test_add_column_newline_default
|
11
|
+
string = "foo\nbar"
|
12
|
+
add_column 'test_models', 'command', :string, :default => string
|
13
|
+
TestModel.reset_column_information
|
14
|
+
|
15
|
+
assert_equal string, TestModel.new.command
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_add_remove_single_field_using_string_arguments
|
19
|
+
assert_no_column TestModel, :last_name
|
20
|
+
|
21
|
+
add_column 'test_models', 'last_name', :string
|
22
|
+
assert_column TestModel, :last_name
|
23
|
+
|
24
|
+
remove_column 'test_models', 'last_name'
|
25
|
+
assert_no_column TestModel, :last_name
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_add_remove_single_field_using_symbol_arguments
|
29
|
+
assert_no_column TestModel, :last_name
|
30
|
+
|
31
|
+
add_column :test_models, :last_name, :string
|
32
|
+
assert_column TestModel, :last_name
|
33
|
+
|
34
|
+
remove_column :test_models, :last_name
|
35
|
+
assert_no_column TestModel, :last_name
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_add_column_without_limit
|
39
|
+
# TODO: limit: nil should work with all adapters.
|
40
|
+
skip "MySQL wrongly enforces a limit of 255" if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
|
41
|
+
add_column :test_models, :description, :string, limit: nil
|
42
|
+
TestModel.reset_column_information
|
43
|
+
assert_nil TestModel.columns_hash["description"].limit
|
44
|
+
end
|
45
|
+
|
46
|
+
if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
|
47
|
+
def test_unabstracted_database_dependent_types
|
48
|
+
add_column :test_models, :intelligence_quotient, :tinyint
|
49
|
+
TestModel.reset_column_information
|
50
|
+
assert_match(/tinyint/, TestModel.columns_hash['intelligence_quotient'].sql_type)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
unless current_adapter?(:SQLite3Adapter)
|
55
|
+
# We specifically do a manual INSERT here, and then test only the SELECT
|
56
|
+
# functionality. This allows us to more easily catch INSERT being broken,
|
57
|
+
# but SELECT actually working fine.
|
58
|
+
def test_native_decimal_insert_manual_vs_automatic
|
59
|
+
correct_value = '0012345678901234567890.0123456789'.to_d
|
60
|
+
|
61
|
+
connection.add_column "test_models", "wealth", :decimal, :precision => '30', :scale => '10'
|
62
|
+
|
63
|
+
# Do a manual insertion
|
64
|
+
if current_adapter?(:OracleAdapter)
|
65
|
+
connection.execute "insert into test_models (id, wealth) values (people_seq.nextval, 12345678901234567890.0123456789)"
|
66
|
+
elsif current_adapter?(:MysqlAdapter) && Mysql.client_version < 50003 #before MySQL 5.0.3 decimals stored as strings
|
67
|
+
connection.execute "insert into test_models (wealth) values ('12345678901234567890.0123456789')"
|
68
|
+
elsif current_adapter?(:PostgreSQLAdapter)
|
69
|
+
connection.execute "insert into test_models (wealth) values (12345678901234567890.0123456789)"
|
70
|
+
elsif current_adapter?(:IBM_DBAdapter)
|
71
|
+
Person.connection.execute "insert into people (wealth, created_at, updated_at, lock_version, first_name) values (12345678901234567890.0123456789, CURRENT TIMESTAMP, CURRENT TIMESTAMP, 0, 'Jim')"
|
72
|
+
else
|
73
|
+
connection.execute "insert into test_models (wealth) values (12345678901234567890.0123456789)"
|
74
|
+
end
|
75
|
+
|
76
|
+
# SELECT
|
77
|
+
row = TestModel.first
|
78
|
+
assert_kind_of BigDecimal, row.wealth
|
79
|
+
|
80
|
+
# If this assert fails, that means the SELECT is broken!
|
81
|
+
unless current_adapter?(:SQLite3Adapter)
|
82
|
+
assert_equal correct_value, row.wealth
|
83
|
+
end
|
84
|
+
|
85
|
+
# Reset to old state
|
86
|
+
TestModel.delete_all
|
87
|
+
|
88
|
+
# Now use the Rails insertion
|
89
|
+
unless current_adapter?(:IBM_DBAdapter)
|
90
|
+
assert_nothing_raised { Person.create :wealth => BigDecimal.new("12345678901234567890.0123456789") }
|
91
|
+
else
|
92
|
+
# First_name is a not null column, hence ensure a value is specified
|
93
|
+
assert_nothing_raised { Person.create ({:wealth => BigDecimal.new("12345678901234567890.0123456789"), :first_name => "James"}) }
|
94
|
+
end
|
95
|
+
|
96
|
+
# SELECT
|
97
|
+
row = TestModel.first
|
98
|
+
assert_kind_of BigDecimal, row.wealth
|
99
|
+
|
100
|
+
# If these asserts fail, that means the INSERT (create function, or cast to SQL) is broken!
|
101
|
+
assert_equal correct_value, row.wealth
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_add_column_with_precision_and_scale
|
106
|
+
connection.add_column 'test_models', 'wealth', :decimal, :precision => 9, :scale => 7
|
107
|
+
|
108
|
+
wealth_column = TestModel.columns_hash['wealth']
|
109
|
+
assert_equal 9, wealth_column.precision
|
110
|
+
assert_equal 7, wealth_column.scale
|
111
|
+
end
|
112
|
+
|
113
|
+
if current_adapter?(:SQLite3Adapter)
|
114
|
+
def test_change_column_preserve_other_column_precision_and_scale
|
115
|
+
connection.add_column 'test_models', 'last_name', :string
|
116
|
+
connection.add_column 'test_models', 'wealth', :decimal, :precision => 9, :scale => 7
|
117
|
+
|
118
|
+
wealth_column = TestModel.columns_hash['wealth']
|
119
|
+
assert_equal 9, wealth_column.precision
|
120
|
+
assert_equal 7, wealth_column.scale
|
121
|
+
|
122
|
+
connection.change_column 'test_models', 'last_name', :string, :null => false
|
123
|
+
TestModel.reset_column_information
|
124
|
+
|
125
|
+
wealth_column = TestModel.columns_hash['wealth']
|
126
|
+
assert_equal 9, wealth_column.precision
|
127
|
+
assert_equal 7, wealth_column.scale
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
unless current_adapter?(:SQLite3Adapter)
|
132
|
+
def test_native_types
|
133
|
+
add_column "test_models", "first_name", :string
|
134
|
+
add_column "test_models", "last_name", :string
|
135
|
+
add_column "test_models", "bio", :text
|
136
|
+
add_column "test_models", "age", :integer
|
137
|
+
add_column "test_models", "height", :float
|
138
|
+
add_column "test_models", "wealth", :decimal, :precision => '30', :scale => '10'
|
139
|
+
add_column "test_models", "birthday", :datetime
|
140
|
+
add_column "test_models", "favorite_day", :date
|
141
|
+
add_column "test_models", "moment_of_truth", :datetime
|
142
|
+
add_column "test_models", "male", :boolean
|
143
|
+
|
144
|
+
TestModel.create :first_name => 'bob', :last_name => 'bobsen',
|
145
|
+
:bio => "I was born ....", :age => 18, :height => 1.78,
|
146
|
+
:wealth => BigDecimal.new("12345678901234567890.0123456789"),
|
147
|
+
:birthday => 18.years.ago, :favorite_day => 10.days.ago,
|
148
|
+
:moment_of_truth => "1782-10-10 21:40:18", :male => true
|
149
|
+
|
150
|
+
bob = TestModel.first
|
151
|
+
assert_equal 'bob', bob.first_name
|
152
|
+
assert_equal 'bobsen', bob.last_name
|
153
|
+
assert_equal "I was born ....", bob.bio
|
154
|
+
assert_equal 18, bob.age
|
155
|
+
|
156
|
+
# Test for 30 significant digits (beyond the 16 of float), 10 of them
|
157
|
+
# after the decimal place.
|
158
|
+
|
159
|
+
assert_equal BigDecimal.new("0012345678901234567890.0123456789"), bob.wealth
|
160
|
+
|
161
|
+
assert_equal true, bob.male?
|
162
|
+
|
163
|
+
assert_equal String, bob.first_name.class
|
164
|
+
assert_equal String, bob.last_name.class
|
165
|
+
assert_equal String, bob.bio.class
|
166
|
+
assert_equal Fixnum, bob.age.class
|
167
|
+
assert_equal Time, bob.birthday.class
|
168
|
+
|
169
|
+
if current_adapter?(:OracleAdapter)
|
170
|
+
# Oracle doesn't differentiate between date/time
|
171
|
+
assert_equal Time, bob.favorite_day.class
|
172
|
+
else
|
173
|
+
assert_equal Date, bob.favorite_day.class
|
174
|
+
end
|
175
|
+
|
176
|
+
assert_instance_of TrueClass, bob.male?
|
177
|
+
assert_kind_of BigDecimal, bob.wealth
|
178
|
+
end
|
179
|
+
end
|
180
|
+
|
181
|
+
if current_adapter?(:MysqlAdapter, :Mysql2Adapter, :PostgreSQLAdapter)
|
182
|
+
def test_out_of_range_limit_should_raise
|
183
|
+
assert_raise(ActiveRecordError) { add_column :test_models, :integer_too_big, :integer, :limit => 10 }
|
184
|
+
|
185
|
+
unless current_adapter?(:PostgreSQLAdapter)
|
186
|
+
assert_raise(ActiveRecordError) { add_column :test_models, :text_too_big, :integer, :limit => 0xfffffffff }
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'cases/helper'
|
2
|
+
|
3
|
+
module ActiveRecord
|
4
|
+
class Migration
|
5
|
+
class ColumnPositioningTest < ActiveRecord::TestCase
|
6
|
+
attr_reader :connection, :table_name
|
7
|
+
alias :conn :connection
|
8
|
+
|
9
|
+
def setup
|
10
|
+
super
|
11
|
+
|
12
|
+
@connection = ActiveRecord::Base.connection
|
13
|
+
|
14
|
+
connection.create_table :testings, :id => false do |t|
|
15
|
+
t.column :first, :integer
|
16
|
+
t.column :second, :integer
|
17
|
+
t.column :third, :integer
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
teardown do
|
22
|
+
connection.drop_table :testings rescue nil
|
23
|
+
ActiveRecord::Base.primary_key_prefix_type = nil
|
24
|
+
end
|
25
|
+
|
26
|
+
if current_adapter?(:MysqlAdapter, :Mysql2Adapter)
|
27
|
+
def test_column_positioning
|
28
|
+
assert_equal %w(first second third), conn.columns(:testings).map {|c| c.name }
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_add_column_with_positioning
|
32
|
+
conn.add_column :testings, :new_col, :integer
|
33
|
+
assert_equal %w(first second third new_col), conn.columns(:testings).map {|c| c.name }
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_add_column_with_positioning_first
|
37
|
+
conn.add_column :testings, :new_col, :integer, :first => true
|
38
|
+
assert_equal %w(new_col first second third), conn.columns(:testings).map {|c| c.name }
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_add_column_with_positioning_after
|
42
|
+
conn.add_column :testings, :new_col, :integer, :after => :first
|
43
|
+
assert_equal %w(first new_col second third), conn.columns(:testings).map {|c| c.name }
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_change_column_with_positioning
|
47
|
+
conn.change_column :testings, :second, :integer, :first => true
|
48
|
+
assert_equal %w(second first third), conn.columns(:testings).map {|c| c.name }
|
49
|
+
|
50
|
+
conn.change_column :testings, :second, :integer, :after => :third
|
51
|
+
assert_equal %w(first third second), conn.columns(:testings).map {|c| c.name }
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|