ibm_db 3.0.4-x86-mingw32 → 3.0.5-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES +4 -1
- data/LICENSE +1 -1
- data/MANIFEST +14 -14
- data/README +225 -225
- data/ext/Makefile.nt32 +181 -181
- data/ext/Makefile.nt32.191 +212 -212
- data/ext/extconf.rb +291 -291
- data/ext/ibm_db.c +11887 -11884
- data/ext/ruby_ibm_db.h +241 -241
- data/ext/ruby_ibm_db_cli.c +866 -866
- 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 +3177 -3177
- 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 +122 -122
- data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
- data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
- data/test/active_record/connection_adapters/fake_adapter.rb +46 -46
- data/test/assets/example.log +1 -1
- data/test/assets/test.txt +1 -1
- data/test/cases/adapter_test.rb +276 -261
- data/test/cases/aggregations_test.rb +158 -158
- data/test/cases/ar_schema_test.rb +161 -161
- data/test/cases/associations/association_scope_test.rb +21 -21
- data/test/cases/associations/belongs_to_associations_test.rb +1029 -1029
- data/test/cases/associations/callbacks_test.rb +192 -192
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
- data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +26 -26
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
- data/test/cases/associations/eager_load_nested_include_test.rb +128 -128
- data/test/cases/associations/eager_singularization_test.rb +148 -148
- data/test/cases/associations/eager_test.rb +1429 -1411
- data/test/cases/associations/extension_test.rb +82 -82
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +972 -932
- data/test/cases/associations/has_many_associations_test.rb +2182 -2162
- data/test/cases/associations/has_many_through_associations_test.rb +1204 -1204
- data/test/cases/associations/has_one_associations_test.rb +610 -610
- data/test/cases/associations/has_one_through_associations_test.rb +380 -380
- data/test/cases/associations/inner_join_association_test.rb +139 -139
- data/test/cases/associations/inverse_associations_test.rb +706 -693
- data/test/cases/associations/join_model_test.rb +754 -754
- data/test/cases/associations/nested_through_associations_test.rb +579 -579
- data/test/cases/associations/required_test.rb +82 -82
- data/test/cases/associations_test.rb +380 -380
- data/test/cases/attribute_decorators_test.rb +125 -125
- data/test/cases/attribute_methods/read_test.rb +60 -60
- data/test/cases/attribute_methods/serialization_test.rb +29 -29
- data/test/cases/attribute_methods_test.rb +952 -952
- data/test/cases/attribute_set_test.rb +210 -200
- data/test/cases/attribute_test.rb +180 -180
- data/test/cases/attributes_test.rb +136 -136
- data/test/cases/autosave_association_test.rb +1595 -1595
- data/test/cases/base_test.rb +1664 -1638
- data/test/cases/batches_test.rb +212 -212
- data/test/cases/binary_test.rb +52 -52
- data/test/cases/bind_parameter_test.rb +100 -100
- data/test/cases/calculations_test.rb +646 -646
- data/test/cases/callbacks_test.rb +543 -543
- data/test/cases/clone_test.rb +40 -40
- data/test/cases/coders/yaml_column_test.rb +63 -63
- data/test/cases/column_alias_test.rb +17 -17
- data/test/cases/column_definition_test.rb +123 -123
- data/test/cases/connection_adapters/adapter_leasing_test.rb +54 -54
- data/test/cases/connection_adapters/connection_handler_test.rb +53 -53
- data/test/cases/connection_adapters/connection_specification_test.rb +12 -12
- data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +293 -293
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +65 -65
- data/test/cases/connection_adapters/quoting_test.rb +13 -13
- data/test/cases/connection_adapters/schema_cache_test.rb +56 -56
- data/test/cases/connection_adapters/type_lookup_test.rb +110 -110
- data/test/cases/connection_management_test.rb +122 -122
- data/test/cases/connection_pool_test.rb +346 -346
- data/test/cases/connection_specification/resolver_test.rb +116 -116
- data/test/cases/core_test.rb +112 -112
- data/test/cases/counter_cache_test.rb +209 -209
- data/test/cases/custom_locking_test.rb +17 -17
- data/test/cases/database_statements_test.rb +19 -19
- data/test/cases/date_time_test.rb +61 -61
- data/test/cases/defaults_test.rb +223 -223
- data/test/cases/dirty_test.rb +785 -775
- data/test/cases/disconnected_test.rb +28 -28
- data/test/cases/dup_test.rb +157 -157
- data/test/cases/enum_test.rb +290 -290
- data/test/cases/explain_subscriber_test.rb +64 -64
- data/test/cases/explain_test.rb +76 -76
- data/test/cases/finder_respond_to_test.rb +60 -60
- data/test/cases/finder_test.rb +1169 -1166
- data/test/cases/fixture_set/file_test.rb +138 -138
- data/test/cases/fixtures_test.rb +908 -897
- data/test/cases/forbidden_attributes_protection_test.rb +99 -99
- data/test/cases/habtm_destroy_order_test.rb +61 -61
- data/test/cases/helper.rb +210 -210
- data/test/cases/hot_compatibility_test.rb +54 -54
- data/test/cases/i18n_test.rb +45 -45
- data/test/cases/inheritance_test.rb +375 -375
- data/test/cases/integration_test.rb +139 -139
- data/test/cases/invalid_connection_test.rb +22 -22
- data/test/cases/invalid_date_test.rb +32 -32
- data/test/cases/invertible_migration_test.rb +295 -295
- data/test/cases/json_serialization_test.rb +302 -302
- data/test/cases/locking_test.rb +477 -477
- data/test/cases/log_subscriber_test.rb +136 -136
- data/test/cases/migration/change_schema_test - Copy.rb +448 -448
- data/test/cases/migration/change_schema_test.rb +512 -472
- data/test/cases/migration/change_table_test.rb +224 -224
- data/test/cases/migration/column_attributes_test.rb +192 -192
- data/test/cases/migration/column_positioning_test.rb +56 -56
- data/test/cases/migration/columns_test.rb +304 -304
- data/test/cases/migration/command_recorder_test.rb +305 -305
- data/test/cases/migration/create_join_table_test.rb +148 -148
- data/test/cases/migration/foreign_key_test - Changed.rb +325 -325
- data/test/cases/migration/foreign_key_test.rb +328 -360
- data/test/cases/migration/helper.rb +39 -39
- data/test/cases/migration/index_test.rb +216 -216
- data/test/cases/migration/logger_test.rb +36 -36
- data/test/cases/migration/pending_migrations_test.rb +53 -53
- data/test/cases/migration/references_foreign_key_test.rb +169 -214
- data/test/cases/migration/references_index_test.rb +101 -101
- data/test/cases/migration/references_statements_test.rb +116 -116
- data/test/cases/migration/rename_table_test.rb +93 -93
- data/test/cases/migration/table_and_index_test.rb +24 -24
- data/test/cases/migration_test.rb +959 -959
- data/test/cases/migrator_test.rb +388 -388
- data/test/cases/mixin_test.rb +70 -70
- data/test/cases/modules_test.rb +173 -173
- data/test/cases/multiparameter_attributes_test.rb +350 -350
- data/test/cases/multiple_db_test.rb +115 -115
- data/test/cases/nested_attributes_test.rb +1070 -1057
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
- data/test/cases/persistence_test.rb +909 -909
- data/test/cases/pooled_connections_test.rb +81 -81
- data/test/cases/primary_keys_test.rb +237 -237
- data/test/cases/query_cache_test.rb +326 -326
- data/test/cases/quoting_test.rb +156 -156
- data/test/cases/readonly_test.rb +118 -118
- data/test/cases/reaper_test.rb +85 -85
- data/test/cases/reflection_test.rb +463 -454
- data/test/cases/relation/delegation_test.rb +68 -68
- data/test/cases/relation/merging_test.rb +161 -161
- data/test/cases/relation/mutation_test.rb +165 -165
- data/test/cases/relation/predicate_builder_test.rb +14 -14
- data/test/cases/relation/where_chain_test.rb +181 -181
- data/test/cases/relation/where_test.rb +300 -300
- data/test/cases/relation/where_test2.rb +36 -36
- data/test/cases/relation_test.rb +319 -297
- data/test/cases/relations_test.rb +1815 -1815
- data/test/cases/reload_models_test.rb +22 -22
- data/test/cases/result_test.rb +80 -80
- data/test/cases/sanitize_test.rb +83 -83
- data/test/cases/schema_dumper_test.rb +463 -463
- data/test/cases/scoping/default_scoping_test.rb +454 -454
- data/test/cases/scoping/named_scoping_test.rb +524 -524
- data/test/cases/scoping/relation_scoping_test.rb +357 -357
- data/test/cases/serialization_test.rb +104 -104
- data/test/cases/serialized_attribute_test.rb +277 -277
- data/test/cases/statement_cache_test.rb +98 -98
- data/test/cases/store_test.rb +194 -194
- data/test/cases/tasks/database_tasks_test.rb +398 -396
- data/test/cases/tasks/mysql_rake_test.rb +324 -311
- data/test/cases/tasks/postgresql_rake_test.rb +250 -245
- data/test/cases/tasks/sqlite_rake_test.rb +193 -193
- data/test/cases/test_case.rb +123 -123
- data/test/cases/timestamp_test.rb +467 -468
- data/test/cases/transaction_callbacks_test.rb +452 -452
- data/test/cases/transaction_isolation_test.rb +106 -106
- data/test/cases/transactions_test.rb +817 -817
- data/test/cases/type/decimal_test.rb +56 -51
- data/test/cases/type/integer_test.rb +121 -121
- data/test/cases/type/string_test.rb +36 -36
- data/test/cases/type/type_map_test.rb +177 -177
- data/test/cases/type/unsigned_integer_test.rb +18 -18
- data/test/cases/types_test.rb +141 -141
- data/test/cases/unconnected_test.rb +33 -33
- data/test/cases/validations/association_validation_test.rb +86 -86
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
- data/test/cases/validations/i18n_validation_test.rb +90 -90
- data/test/cases/validations/length_validation_test.rb +47 -47
- data/test/cases/validations/presence_validation_test.rb +68 -68
- data/test/cases/validations/uniqueness_validation_test.rb +457 -434
- data/test/cases/validations_repair_helper.rb +23 -23
- data/test/cases/validations_test.rb +165 -165
- data/test/cases/view_test.rb +119 -113
- data/test/cases/xml_serialization_test.rb +457 -457
- data/test/cases/yaml_serialization_test.rb +126 -86
- data/test/config.rb +5 -5
- data/test/config.yml +154 -154
- data/test/connections/native_ibm_db/connection.rb +43 -43
- data/test/fixtures/accounts.yml +29 -29
- data/test/fixtures/admin/accounts.yml +2 -2
- data/test/fixtures/admin/randomly_named_a9.yml +7 -7
- data/test/fixtures/admin/randomly_named_b0.yml +7 -7
- data/test/fixtures/admin/users.yml +10 -10
- data/test/fixtures/author_addresses.yml +17 -17
- data/test/fixtures/author_favorites.yml +3 -3
- data/test/fixtures/authors.yml +23 -23
- data/test/fixtures/binaries.yml +133 -133
- data/test/fixtures/books.yml +11 -11
- data/test/fixtures/bulbs.yml +5 -5
- data/test/fixtures/cars.yml +9 -9
- data/test/fixtures/categories.yml +19 -19
- data/test/fixtures/categories/special_categories.yml +9 -9
- data/test/fixtures/categories/subsubdir/arbitrary_filename.yml +4 -4
- data/test/fixtures/categories_ordered.yml +7 -7
- data/test/fixtures/categories_posts.yml +31 -31
- data/test/fixtures/categorizations.yml +23 -23
- data/test/fixtures/clubs.yml +8 -8
- data/test/fixtures/collections.yml +3 -3
- data/test/fixtures/colleges.yml +3 -3
- data/test/fixtures/comments.yml +65 -65
- data/test/fixtures/companies.yml +67 -67
- data/test/fixtures/computers.yml +10 -10
- data/test/fixtures/courses.yml +8 -8
- data/test/fixtures/customers.yml +25 -25
- data/test/fixtures/dashboards.yml +6 -6
- data/test/fixtures/developers.yml +21 -21
- data/test/fixtures/developers_projects.yml +16 -16
- data/test/fixtures/dog_lovers.yml +7 -7
- data/test/fixtures/dogs.yml +4 -4
- data/test/fixtures/doubloons.yml +3 -3
- data/test/fixtures/edges.yml +5 -5
- data/test/fixtures/entrants.yml +14 -14
- data/test/fixtures/essays.yml +6 -6
- data/test/fixtures/faces.yml +11 -11
- data/test/fixtures/fk_test_has_fk.yml +3 -3
- data/test/fixtures/fk_test_has_pk.yml +1 -1
- data/test/fixtures/friendships.yml +4 -4
- data/test/fixtures/funny_jokes.yml +10 -10
- data/test/fixtures/interests.yml +33 -33
- data/test/fixtures/items.yml +3 -3
- data/test/fixtures/jobs.yml +7 -7
- data/test/fixtures/legacy_things.yml +3 -3
- data/test/fixtures/mateys.yml +4 -4
- data/test/fixtures/member_details.yml +8 -8
- data/test/fixtures/member_types.yml +6 -6
- data/test/fixtures/members.yml +11 -11
- data/test/fixtures/memberships.yml +34 -34
- data/test/fixtures/men.yml +5 -5
- data/test/fixtures/minimalistics.yml +2 -2
- data/test/fixtures/minivans.yml +5 -5
- data/test/fixtures/mixed_case_monkeys.yml +6 -6
- data/test/fixtures/mixins.yml +29 -29
- data/test/fixtures/movies.yml +7 -7
- data/test/fixtures/naked/csv/accounts.csv +1 -1
- data/test/fixtures/naked/yml/accounts.yml +1 -1
- data/test/fixtures/naked/yml/companies.yml +1 -1
- data/test/fixtures/naked/yml/courses.yml +1 -1
- data/test/fixtures/organizations.yml +5 -5
- data/test/fixtures/other_topics.yml +42 -42
- data/test/fixtures/owners.yml +9 -9
- data/test/fixtures/parrots.yml +27 -27
- data/test/fixtures/parrots_pirates.yml +7 -7
- data/test/fixtures/people.yml +24 -24
- data/test/fixtures/peoples_treasures.yml +3 -3
- data/test/fixtures/pets.yml +19 -19
- data/test/fixtures/pirates.yml +12 -12
- data/test/fixtures/posts.yml +80 -80
- data/test/fixtures/price_estimates.yml +7 -7
- data/test/fixtures/products.yml +4 -4
- data/test/fixtures/projects.yml +7 -7
- data/test/fixtures/randomly_named_a9.yml +7 -7
- data/test/fixtures/ratings.yml +14 -14
- data/test/fixtures/readers.yml +11 -11
- data/test/fixtures/references.yml +17 -17
- data/test/fixtures/reserved_words/distinct.yml +5 -5
- data/test/fixtures/reserved_words/distinct_select.yml +11 -11
- data/test/fixtures/reserved_words/group.yml +14 -14
- data/test/fixtures/reserved_words/select.yml +8 -8
- data/test/fixtures/reserved_words/values.yml +7 -7
- data/test/fixtures/ships.yml +6 -6
- data/test/fixtures/speedometers.yml +8 -8
- data/test/fixtures/sponsors.yml +12 -12
- data/test/fixtures/string_key_objects.yml +7 -7
- data/test/fixtures/subscribers.yml +10 -10
- data/test/fixtures/subscriptions.yml +12 -12
- data/test/fixtures/taggings.yml +78 -78
- data/test/fixtures/tags.yml +11 -11
- data/test/fixtures/tasks.yml +7 -7
- data/test/fixtures/teapots.yml +3 -3
- data/test/fixtures/to_be_linked/accounts.yml +2 -2
- data/test/fixtures/to_be_linked/users.yml +10 -10
- data/test/fixtures/topics.yml +49 -49
- data/test/fixtures/toys.yml +14 -14
- data/test/fixtures/traffic_lights.yml +9 -9
- data/test/fixtures/treasures.yml +10 -10
- data/test/fixtures/uuid_children.yml +3 -3
- data/test/fixtures/uuid_parents.yml +2 -2
- data/test/fixtures/variants.yml +4 -4
- data/test/fixtures/vegetables.yml +19 -19
- data/test/fixtures/vertices.yml +3 -3
- data/test/fixtures/warehouse_things.yml +2 -2
- data/test/fixtures/zines.yml +5 -5
- data/test/ibm_db_test.rb +24 -24
- data/test/migrations/10_urban/9_add_expressions.rb +11 -11
- data/test/migrations/decimal/1_give_me_big_numbers.rb +15 -15
- data/test/migrations/magic/1_currencies_have_symbols.rb +12 -12
- data/test/migrations/missing/1000_people_have_middle_names.rb +8 -8
- data/test/migrations/missing/1_people_have_last_names.rb +8 -8
- data/test/migrations/missing/3_we_need_reminders.rb +11 -11
- data/test/migrations/missing/4_innocent_jointable.rb +11 -11
- data/test/migrations/rename/1_we_need_things.rb +10 -10
- data/test/migrations/rename/2_rename_things.rb +8 -8
- data/test/migrations/to_copy/1_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy/2_people_have_descriptions.rb +9 -9
- data/test/migrations/to_copy2/1_create_articles.rb +7 -7
- data/test/migrations/to_copy2/2_create_comments.rb +7 -7
- data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +9 -9
- data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +9 -9
- data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +7 -7
- data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +7 -7
- data/test/migrations/valid/1_valid_people_have_last_names.rb +9 -9
- data/test/migrations/valid/2_we_need_reminders.rb +11 -11
- data/test/migrations/valid/3_innocent_jointable.rb +11 -11
- data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +9 -9
- data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +11 -11
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +11 -11
- data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +9 -9
- data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +12 -12
- data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +12 -12
- data/test/migrations/version_check/20131219224947_migration_version_check.rb +8 -8
- data/test/models/admin.rb +4 -4
- data/test/models/admin/account.rb +2 -2
- data/test/models/admin/randomly_named_c1.rb +3 -3
- data/test/models/admin/user.rb +40 -40
- data/test/models/aircraft.rb +4 -4
- data/test/models/arunit2_model.rb +3 -3
- data/test/models/author.rb +212 -212
- data/test/models/auto_id.rb +4 -4
- data/test/models/autoloadable/extra_firm.rb +2 -2
- data/test/models/binary.rb +1 -1
- data/test/models/bird.rb +12 -12
- data/test/models/book.rb +18 -18
- data/test/models/boolean.rb +2 -2
- data/test/models/bulb.rb +51 -51
- data/test/models/cake_designer.rb +3 -3
- data/test/models/car.rb +26 -26
- data/test/models/carrier.rb +2 -2
- data/test/models/categorization.rb +19 -19
- data/test/models/category.rb +35 -35
- data/test/models/chef.rb +7 -3
- data/test/models/citation.rb +3 -3
- data/test/models/club.rb +23 -23
- data/test/models/college.rb +10 -10
- data/test/models/column.rb +3 -3
- data/test/models/column_name.rb +3 -3
- data/test/models/comment.rb +64 -64
- data/test/models/company.rb +228 -225
- data/test/models/company_in_module.rb +98 -98
- data/test/models/computer.rb +3 -3
- data/test/models/contact.rb +41 -41
- data/test/models/contract.rb +20 -20
- data/test/models/country.rb +7 -7
- data/test/models/course.rb +6 -6
- data/test/models/customer.rb +77 -77
- data/test/models/customer_carrier.rb +14 -14
- data/test/models/dashboard.rb +3 -3
- data/test/models/default.rb +2 -2
- data/test/models/department.rb +4 -4
- data/test/models/developer.rb +255 -252
- data/test/models/dog.rb +5 -5
- data/test/models/dog_lover.rb +5 -5
- data/test/models/doubloon.rb +12 -12
- data/test/models/drink_designer.rb +3 -3
- data/test/models/edge.rb +5 -5
- data/test/models/electron.rb +5 -5
- data/test/models/engine.rb +4 -4
- data/test/models/entrant.rb +3 -3
- data/test/models/essay.rb +5 -5
- data/test/models/event.rb +2 -2
- data/test/models/eye.rb +37 -37
- data/test/models/face.rb +9 -9
- data/test/models/friendship.rb +6 -6
- data/test/models/guid.rb +1 -1
- data/test/models/hotel.rb +9 -6
- data/test/models/image.rb +3 -3
- data/test/models/interest.rb +5 -5
- data/test/models/invoice.rb +4 -4
- data/test/models/item.rb +7 -7
- data/test/models/job.rb +7 -7
- data/test/models/joke.rb +7 -7
- data/test/models/keyboard.rb +3 -3
- data/test/models/legacy_thing.rb +3 -3
- data/test/models/lesson.rb +11 -11
- data/test/models/line_item.rb +3 -3
- data/test/models/liquid.rb +4 -4
- data/test/models/man.rb +11 -11
- data/test/models/matey.rb +4 -4
- data/test/models/member.rb +41 -41
- data/test/models/member_detail.rb +7 -7
- data/test/models/member_type.rb +3 -3
- data/test/models/membership.rb +35 -35
- data/test/models/minimalistic.rb +2 -2
- data/test/models/minivan.rb +9 -9
- data/test/models/mixed_case_monkey.rb +3 -3
- data/test/models/molecule.rb +6 -6
- data/test/models/movie.rb +5 -5
- data/test/models/order.rb +4 -4
- data/test/models/organization.rb +14 -14
- data/test/models/owner.rb +34 -34
- data/test/models/parrot.rb +29 -29
- data/test/models/person.rb +143 -143
- data/test/models/personal_legacy_thing.rb +4 -4
- data/test/models/pet.rb +15 -15
- data/test/models/pirate.rb +92 -92
- data/test/models/possession.rb +3 -3
- data/test/models/post.rb +264 -264
- data/test/models/price_estimate.rb +4 -4
- data/test/models/professor.rb +5 -5
- data/test/models/project.rb +31 -29
- data/test/models/publisher.rb +2 -2
- data/test/models/publisher/article.rb +4 -4
- data/test/models/publisher/magazine.rb +3 -3
- data/test/models/randomly_named_c1.rb +3 -3
- data/test/models/rating.rb +4 -4
- data/test/models/reader.rb +23 -23
- data/test/models/record.rb +2 -2
- data/test/models/reference.rb +22 -22
- data/test/models/reply.rb +61 -61
- data/test/models/ship.rb +33 -33
- data/test/models/ship_part.rb +7 -7
- data/test/models/shop.rb +17 -17
- data/test/models/shop_account.rb +6 -6
- data/test/models/speedometer.rb +6 -6
- data/test/models/sponsor.rb +7 -7
- data/test/models/string_key_object.rb +3 -3
- data/test/models/student.rb +4 -4
- data/test/models/subject.rb +16 -16
- data/test/models/subscriber.rb +8 -8
- data/test/models/subscription.rb +4 -4
- data/test/models/tag.rb +7 -7
- data/test/models/tagging.rb +13 -13
- data/test/models/task.rb +5 -5
- data/test/models/topic.rb +124 -124
- data/test/models/toy.rb +6 -6
- data/test/models/traffic_light.rb +4 -4
- data/test/models/treasure.rb +14 -14
- data/test/models/treaty.rb +7 -7
- data/test/models/tyre.rb +11 -11
- data/test/models/uuid_child.rb +3 -3
- data/test/models/uuid_parent.rb +3 -3
- data/test/models/vegetables.rb +24 -24
- data/test/models/vehicle.rb +6 -6
- data/test/models/vertex.rb +9 -9
- data/test/models/warehouse_thing.rb +5 -5
- data/test/models/wheel.rb +3 -3
- data/test/models/without_table.rb +3 -3
- data/test/models/zine.rb +3 -3
- data/test/schema/mysql2_specific_schema.rb +58 -58
- data/test/schema/mysql_specific_schema.rb +70 -70
- data/test/schema/oracle_specific_schema.rb +43 -43
- data/test/schema/postgresql_specific_schema.rb +202 -202
- data/test/schema/schema.rb +952 -938
- data/test/schema/sqlite_specific_schema.rb +21 -21
- data/test/support/config.rb +43 -43
- data/test/support/connection.rb +22 -22
- data/test/support/connection_helper.rb +14 -14
- data/test/support/ddl_helper.rb +8 -8
- data/test/support/schema_dumping_helper.rb +20 -20
- metadata +2 -2
@@ -1,158 +1,158 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/customer'
|
3
|
-
|
4
|
-
class AggregationsTest < ActiveRecord::TestCase
|
5
|
-
fixtures :customers
|
6
|
-
|
7
|
-
def test_find_single_value_object
|
8
|
-
assert_equal 50, customers(:david).balance.amount
|
9
|
-
assert_kind_of Money, customers(:david).balance
|
10
|
-
assert_equal 300, customers(:david).balance.exchange_to("DKK").amount
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_find_multiple_value_object
|
14
|
-
assert_equal customers(:david).address_street, customers(:david).address.street
|
15
|
-
assert(
|
16
|
-
customers(:david).address.close_to?(Address.new("Different Street", customers(:david).address_city, customers(:david).address_country))
|
17
|
-
)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_change_single_value_object
|
21
|
-
customers(:david).balance = Money.new(100)
|
22
|
-
customers(:david).save
|
23
|
-
assert_equal 100, customers(:david).reload.balance.amount
|
24
|
-
end
|
25
|
-
|
26
|
-
def test_immutable_value_objects
|
27
|
-
customers(:david).balance = Money.new(100)
|
28
|
-
assert_raise(RuntimeError) { customers(:david).balance.instance_eval { @amount = 20 } }
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_inferred_mapping
|
32
|
-
assert_equal "35.544623640962634", customers(:david).gps_location.latitude
|
33
|
-
assert_equal "-105.9309951055148", customers(:david).gps_location.longitude
|
34
|
-
|
35
|
-
customers(:david).gps_location = GpsLocation.new("39x-110")
|
36
|
-
|
37
|
-
assert_equal "39", customers(:david).gps_location.latitude
|
38
|
-
assert_equal "-110", customers(:david).gps_location.longitude
|
39
|
-
|
40
|
-
customers(:david).save
|
41
|
-
|
42
|
-
customers(:david).reload
|
43
|
-
|
44
|
-
assert_equal "39", customers(:david).gps_location.latitude
|
45
|
-
assert_equal "-110", customers(:david).gps_location.longitude
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_reloaded_instance_refreshes_aggregations
|
49
|
-
assert_equal "35.544623640962634", customers(:david).gps_location.latitude
|
50
|
-
assert_equal "-105.9309951055148", customers(:david).gps_location.longitude
|
51
|
-
|
52
|
-
Customer.update_all("gps_location = '24x113'")
|
53
|
-
customers(:david).reload
|
54
|
-
assert_equal '24x113', customers(:david)['gps_location']
|
55
|
-
|
56
|
-
assert_equal GpsLocation.new('24x113'), customers(:david).gps_location
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_gps_equality
|
60
|
-
assert_equal GpsLocation.new('39x110'), GpsLocation.new('39x110')
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_gps_inequality
|
64
|
-
assert_not_equal GpsLocation.new('39x110'), GpsLocation.new('39x111')
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_allow_nil_gps_is_nil
|
68
|
-
assert_nil customers(:zaphod).gps_location
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_allow_nil_gps_set_to_nil
|
72
|
-
customers(:david).gps_location = nil
|
73
|
-
customers(:david).save
|
74
|
-
customers(:david).reload
|
75
|
-
assert_nil customers(:david).gps_location
|
76
|
-
end
|
77
|
-
|
78
|
-
def test_allow_nil_set_address_attributes_to_nil
|
79
|
-
customers(:zaphod).address = nil
|
80
|
-
assert_nil customers(:zaphod).attributes[:address_street]
|
81
|
-
assert_nil customers(:zaphod).attributes[:address_city]
|
82
|
-
assert_nil customers(:zaphod).attributes[:address_country]
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_allow_nil_address_set_to_nil
|
86
|
-
customers(:zaphod).address = nil
|
87
|
-
customers(:zaphod).save
|
88
|
-
customers(:zaphod).reload
|
89
|
-
assert_nil customers(:zaphod).address
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_nil_raises_error_when_allow_nil_is_false
|
93
|
-
assert_raise(NoMethodError) { customers(:david).balance = nil }
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_allow_nil_address_loaded_when_only_some_attributes_are_nil
|
97
|
-
customers(:zaphod).address_street = nil
|
98
|
-
customers(:zaphod).save
|
99
|
-
customers(:zaphod).reload
|
100
|
-
assert_kind_of Address, customers(:zaphod).address
|
101
|
-
assert_nil customers(:zaphod).address.street
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_nil_assignment_results_in_nil
|
105
|
-
customers(:david).gps_location = GpsLocation.new('39x111')
|
106
|
-
assert_not_nil customers(:david).gps_location
|
107
|
-
customers(:david).gps_location = nil
|
108
|
-
assert_nil customers(:david).gps_location
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_nil_return_from_converter_is_respected_when_allow_nil_is_true
|
112
|
-
customers(:david).non_blank_gps_location = ""
|
113
|
-
customers(:david).save
|
114
|
-
customers(:david).reload
|
115
|
-
assert_nil customers(:david).non_blank_gps_location
|
116
|
-
ensure
|
117
|
-
Customer.gps_conversion_was_run = nil
|
118
|
-
end
|
119
|
-
|
120
|
-
def test_nil_return_from_converter_results_in_failure_when_allow_nil_is_false
|
121
|
-
assert_raises(NoMethodError) do
|
122
|
-
customers(:barney).gps_location = ""
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
def test_do_not_run_the_converter_when_nil_was_set
|
127
|
-
customers(:david).non_blank_gps_location = nil
|
128
|
-
assert_nil Customer.gps_conversion_was_run
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_custom_constructor
|
132
|
-
assert_equal 'Barney GUMBLE', customers(:barney).fullname.to_s
|
133
|
-
assert_kind_of Fullname, customers(:barney).fullname
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_custom_converter
|
137
|
-
customers(:barney).fullname = 'Barnoit Gumbleau'
|
138
|
-
assert_equal 'Barnoit GUMBLEAU', customers(:barney).fullname.to_s
|
139
|
-
assert_kind_of Fullname, customers(:barney).fullname
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
class OverridingAggregationsTest < ActiveRecord::TestCase
|
144
|
-
class DifferentName; end
|
145
|
-
|
146
|
-
class Person < ActiveRecord::Base
|
147
|
-
composed_of :composed_of, :mapping => %w(person_first_name first_name)
|
148
|
-
end
|
149
|
-
|
150
|
-
class DifferentPerson < Person
|
151
|
-
composed_of :composed_of, :class_name => 'DifferentName', :mapping => %w(different_person_first_name first_name)
|
152
|
-
end
|
153
|
-
|
154
|
-
def test_composed_of_aggregation_redefinition_reflections_should_differ_and_not_inherited
|
155
|
-
assert_not_equal Person.reflect_on_aggregation(:composed_of),
|
156
|
-
DifferentPerson.reflect_on_aggregation(:composed_of)
|
157
|
-
end
|
158
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
require 'models/customer'
|
3
|
+
|
4
|
+
class AggregationsTest < ActiveRecord::TestCase
|
5
|
+
fixtures :customers
|
6
|
+
|
7
|
+
def test_find_single_value_object
|
8
|
+
assert_equal 50, customers(:david).balance.amount
|
9
|
+
assert_kind_of Money, customers(:david).balance
|
10
|
+
assert_equal 300, customers(:david).balance.exchange_to("DKK").amount
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_find_multiple_value_object
|
14
|
+
assert_equal customers(:david).address_street, customers(:david).address.street
|
15
|
+
assert(
|
16
|
+
customers(:david).address.close_to?(Address.new("Different Street", customers(:david).address_city, customers(:david).address_country))
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_change_single_value_object
|
21
|
+
customers(:david).balance = Money.new(100)
|
22
|
+
customers(:david).save
|
23
|
+
assert_equal 100, customers(:david).reload.balance.amount
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_immutable_value_objects
|
27
|
+
customers(:david).balance = Money.new(100)
|
28
|
+
assert_raise(RuntimeError) { customers(:david).balance.instance_eval { @amount = 20 } }
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_inferred_mapping
|
32
|
+
assert_equal "35.544623640962634", customers(:david).gps_location.latitude
|
33
|
+
assert_equal "-105.9309951055148", customers(:david).gps_location.longitude
|
34
|
+
|
35
|
+
customers(:david).gps_location = GpsLocation.new("39x-110")
|
36
|
+
|
37
|
+
assert_equal "39", customers(:david).gps_location.latitude
|
38
|
+
assert_equal "-110", customers(:david).gps_location.longitude
|
39
|
+
|
40
|
+
customers(:david).save
|
41
|
+
|
42
|
+
customers(:david).reload
|
43
|
+
|
44
|
+
assert_equal "39", customers(:david).gps_location.latitude
|
45
|
+
assert_equal "-110", customers(:david).gps_location.longitude
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_reloaded_instance_refreshes_aggregations
|
49
|
+
assert_equal "35.544623640962634", customers(:david).gps_location.latitude
|
50
|
+
assert_equal "-105.9309951055148", customers(:david).gps_location.longitude
|
51
|
+
|
52
|
+
Customer.update_all("gps_location = '24x113'")
|
53
|
+
customers(:david).reload
|
54
|
+
assert_equal '24x113', customers(:david)['gps_location']
|
55
|
+
|
56
|
+
assert_equal GpsLocation.new('24x113'), customers(:david).gps_location
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_gps_equality
|
60
|
+
assert_equal GpsLocation.new('39x110'), GpsLocation.new('39x110')
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_gps_inequality
|
64
|
+
assert_not_equal GpsLocation.new('39x110'), GpsLocation.new('39x111')
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_allow_nil_gps_is_nil
|
68
|
+
assert_nil customers(:zaphod).gps_location
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_allow_nil_gps_set_to_nil
|
72
|
+
customers(:david).gps_location = nil
|
73
|
+
customers(:david).save
|
74
|
+
customers(:david).reload
|
75
|
+
assert_nil customers(:david).gps_location
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_allow_nil_set_address_attributes_to_nil
|
79
|
+
customers(:zaphod).address = nil
|
80
|
+
assert_nil customers(:zaphod).attributes[:address_street]
|
81
|
+
assert_nil customers(:zaphod).attributes[:address_city]
|
82
|
+
assert_nil customers(:zaphod).attributes[:address_country]
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_allow_nil_address_set_to_nil
|
86
|
+
customers(:zaphod).address = nil
|
87
|
+
customers(:zaphod).save
|
88
|
+
customers(:zaphod).reload
|
89
|
+
assert_nil customers(:zaphod).address
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_nil_raises_error_when_allow_nil_is_false
|
93
|
+
assert_raise(NoMethodError) { customers(:david).balance = nil }
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_allow_nil_address_loaded_when_only_some_attributes_are_nil
|
97
|
+
customers(:zaphod).address_street = nil
|
98
|
+
customers(:zaphod).save
|
99
|
+
customers(:zaphod).reload
|
100
|
+
assert_kind_of Address, customers(:zaphod).address
|
101
|
+
assert_nil customers(:zaphod).address.street
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_nil_assignment_results_in_nil
|
105
|
+
customers(:david).gps_location = GpsLocation.new('39x111')
|
106
|
+
assert_not_nil customers(:david).gps_location
|
107
|
+
customers(:david).gps_location = nil
|
108
|
+
assert_nil customers(:david).gps_location
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_nil_return_from_converter_is_respected_when_allow_nil_is_true
|
112
|
+
customers(:david).non_blank_gps_location = ""
|
113
|
+
customers(:david).save
|
114
|
+
customers(:david).reload
|
115
|
+
assert_nil customers(:david).non_blank_gps_location
|
116
|
+
ensure
|
117
|
+
Customer.gps_conversion_was_run = nil
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_nil_return_from_converter_results_in_failure_when_allow_nil_is_false
|
121
|
+
assert_raises(NoMethodError) do
|
122
|
+
customers(:barney).gps_location = ""
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_do_not_run_the_converter_when_nil_was_set
|
127
|
+
customers(:david).non_blank_gps_location = nil
|
128
|
+
assert_nil Customer.gps_conversion_was_run
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_custom_constructor
|
132
|
+
assert_equal 'Barney GUMBLE', customers(:barney).fullname.to_s
|
133
|
+
assert_kind_of Fullname, customers(:barney).fullname
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_custom_converter
|
137
|
+
customers(:barney).fullname = 'Barnoit Gumbleau'
|
138
|
+
assert_equal 'Barnoit GUMBLEAU', customers(:barney).fullname.to_s
|
139
|
+
assert_kind_of Fullname, customers(:barney).fullname
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
class OverridingAggregationsTest < ActiveRecord::TestCase
|
144
|
+
class DifferentName; end
|
145
|
+
|
146
|
+
class Person < ActiveRecord::Base
|
147
|
+
composed_of :composed_of, :mapping => %w(person_first_name first_name)
|
148
|
+
end
|
149
|
+
|
150
|
+
class DifferentPerson < Person
|
151
|
+
composed_of :composed_of, :class_name => 'DifferentName', :mapping => %w(different_person_first_name first_name)
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_composed_of_aggregation_redefinition_reflections_should_differ_and_not_inherited
|
155
|
+
assert_not_equal Person.reflect_on_aggregation(:composed_of),
|
156
|
+
DifferentPerson.reflect_on_aggregation(:composed_of)
|
157
|
+
end
|
158
|
+
end
|
@@ -1,161 +1,161 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
if ActiveRecord::Base.connection.supports_migrations?
|
4
|
-
|
5
|
-
class ActiveRecordSchemaTest < ActiveRecord::TestCase
|
6
|
-
self.use_transactional_fixtures = false
|
7
|
-
|
8
|
-
setup do
|
9
|
-
@original_verbose = ActiveRecord::Migration.verbose
|
10
|
-
ActiveRecord::Migration.verbose = false
|
11
|
-
@connection = ActiveRecord::Base.connection
|
12
|
-
ActiveRecord::SchemaMigration.drop_table
|
13
|
-
end
|
14
|
-
|
15
|
-
teardown do
|
16
|
-
@connection.drop_table :fruits rescue nil
|
17
|
-
@connection.drop_table :nep_fruits rescue nil
|
18
|
-
@connection.drop_table :nep_schema_migrations rescue nil
|
19
|
-
@connection.drop_table :has_timestamps rescue nil
|
20
|
-
ActiveRecord::SchemaMigration.delete_all rescue nil
|
21
|
-
ActiveRecord::Migration.verbose = @original_verbose
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_has_no_primary_key
|
25
|
-
old_primary_key_prefix_type = ActiveRecord::Base.primary_key_prefix_type
|
26
|
-
ActiveRecord::Base.primary_key_prefix_type = :table_name_with_underscore
|
27
|
-
assert_nil ActiveRecord::SchemaMigration.primary_key
|
28
|
-
|
29
|
-
ActiveRecord::SchemaMigration.create_table
|
30
|
-
assert_difference "ActiveRecord::SchemaMigration.count", 1 do
|
31
|
-
ActiveRecord::SchemaMigration.create version: 12
|
32
|
-
end
|
33
|
-
ensure
|
34
|
-
ActiveRecord::SchemaMigration.drop_table
|
35
|
-
ActiveRecord::Base.primary_key_prefix_type = old_primary_key_prefix_type
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_schema_define
|
39
|
-
ActiveRecord::Schema.define(:version => 7) do
|
40
|
-
create_table :fruits do |t|
|
41
|
-
t.column :color, :string
|
42
|
-
t.column :fruit_size, :string # NOTE: "size" is reserved in Oracle
|
43
|
-
t.column :texture, :string
|
44
|
-
t.column :flavor, :string
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
assert_nothing_raised { @connection.select_all "SELECT * FROM fruits" }
|
49
|
-
assert_nothing_raised { @connection.select_all "SELECT * FROM schema_migrations" }
|
50
|
-
assert_equal 7, ActiveRecord::Migrator::current_version
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_schema_define_w_table_name_prefix
|
54
|
-
table_name = ActiveRecord::SchemaMigration.table_name
|
55
|
-
old_table_name_prefix = ActiveRecord::Base.table_name_prefix
|
56
|
-
ActiveRecord::Base.table_name_prefix = "nep_"
|
57
|
-
ActiveRecord::SchemaMigration.table_name = "nep_#{table_name}"
|
58
|
-
ActiveRecord::Schema.define(:version => 7) do
|
59
|
-
create_table :fruits do |t|
|
60
|
-
t.column :color, :string
|
61
|
-
t.column :fruit_size, :string # NOTE: "size" is reserved in Oracle
|
62
|
-
t.column :texture, :string
|
63
|
-
t.column :flavor, :string
|
64
|
-
end
|
65
|
-
end
|
66
|
-
assert_equal 7, ActiveRecord::Migrator::current_version
|
67
|
-
ensure
|
68
|
-
ActiveRecord::Base.table_name_prefix = old_table_name_prefix
|
69
|
-
ActiveRecord::SchemaMigration.table_name = table_name
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_schema_raises_an_error_for_invalid_column_type
|
73
|
-
assert_raise NoMethodError do
|
74
|
-
ActiveRecord::Schema.define(:version => 8) do
|
75
|
-
create_table :vegetables do |t|
|
76
|
-
t.unknown :color
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_schema_subclass
|
83
|
-
Class.new(ActiveRecord::Schema).define(:version => 9) do
|
84
|
-
create_table :fruits
|
85
|
-
end
|
86
|
-
assert_nothing_raised { @connection.select_all "SELECT * FROM fruits" }
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_normalize_version
|
90
|
-
assert_equal "118", ActiveRecord::SchemaMigration.normalize_migration_number("0000118")
|
91
|
-
assert_equal "002", ActiveRecord::SchemaMigration.normalize_migration_number("2")
|
92
|
-
assert_equal "017", ActiveRecord::SchemaMigration.normalize_migration_number("0017")
|
93
|
-
assert_equal "20131219224947", ActiveRecord::SchemaMigration.normalize_migration_number("20131219224947")
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_timestamps_without_null_is_deprecated_on_create_table
|
97
|
-
assert_deprecated do
|
98
|
-
ActiveRecord::Schema.define do
|
99
|
-
create_table :has_timestamps do |t|
|
100
|
-
t.timestamps
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
|
106
|
-
def test_timestamps_without_null_is_deprecated_on_change_table
|
107
|
-
assert_deprecated do
|
108
|
-
ActiveRecord::Schema.define do
|
109
|
-
create_table :has_timestamps
|
110
|
-
|
111
|
-
change_table :has_timestamps do |t|
|
112
|
-
t.timestamps
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_timestamps_without_null_is_deprecated_on_add_timestamps
|
119
|
-
assert_deprecated do
|
120
|
-
ActiveRecord::Schema.define do
|
121
|
-
create_table :has_timestamps
|
122
|
-
add_timestamps :has_timestamps
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_no_deprecation_warning_from_timestamps_on_create_table
|
128
|
-
assert_not_deprecated do
|
129
|
-
ActiveRecord::Schema.define do
|
130
|
-
create_table :has_timestamps do |t|
|
131
|
-
t.timestamps null: true
|
132
|
-
end
|
133
|
-
|
134
|
-
drop_table :has_timestamps
|
135
|
-
|
136
|
-
create_table :has_timestamps do |t|
|
137
|
-
t.timestamps null: false
|
138
|
-
end
|
139
|
-
end
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
def test_no_deprecation_warning_from_timestamps_on_change_table
|
144
|
-
assert_not_deprecated do
|
145
|
-
ActiveRecord::Schema.define do
|
146
|
-
create_table :has_timestamps
|
147
|
-
change_table :has_timestamps do |t|
|
148
|
-
t.timestamps null: true
|
149
|
-
end
|
150
|
-
|
151
|
-
drop_table :has_timestamps
|
152
|
-
|
153
|
-
create_table :has_timestamps
|
154
|
-
change_table :has_timestamps do |t|
|
155
|
-
t.timestamps null: false, default: Time.now
|
156
|
-
end
|
157
|
-
end
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
if ActiveRecord::Base.connection.supports_migrations?
|
4
|
+
|
5
|
+
class ActiveRecordSchemaTest < ActiveRecord::TestCase
|
6
|
+
self.use_transactional_fixtures = false
|
7
|
+
|
8
|
+
setup do
|
9
|
+
@original_verbose = ActiveRecord::Migration.verbose
|
10
|
+
ActiveRecord::Migration.verbose = false
|
11
|
+
@connection = ActiveRecord::Base.connection
|
12
|
+
ActiveRecord::SchemaMigration.drop_table
|
13
|
+
end
|
14
|
+
|
15
|
+
teardown do
|
16
|
+
@connection.drop_table :fruits rescue nil
|
17
|
+
@connection.drop_table :nep_fruits rescue nil
|
18
|
+
@connection.drop_table :nep_schema_migrations rescue nil
|
19
|
+
@connection.drop_table :has_timestamps rescue nil
|
20
|
+
ActiveRecord::SchemaMigration.delete_all rescue nil
|
21
|
+
ActiveRecord::Migration.verbose = @original_verbose
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_has_no_primary_key
|
25
|
+
old_primary_key_prefix_type = ActiveRecord::Base.primary_key_prefix_type
|
26
|
+
ActiveRecord::Base.primary_key_prefix_type = :table_name_with_underscore
|
27
|
+
assert_nil ActiveRecord::SchemaMigration.primary_key
|
28
|
+
|
29
|
+
ActiveRecord::SchemaMigration.create_table
|
30
|
+
assert_difference "ActiveRecord::SchemaMigration.count", 1 do
|
31
|
+
ActiveRecord::SchemaMigration.create version: 12
|
32
|
+
end
|
33
|
+
ensure
|
34
|
+
ActiveRecord::SchemaMigration.drop_table
|
35
|
+
ActiveRecord::Base.primary_key_prefix_type = old_primary_key_prefix_type
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_schema_define
|
39
|
+
ActiveRecord::Schema.define(:version => 7) do
|
40
|
+
create_table :fruits do |t|
|
41
|
+
t.column :color, :string
|
42
|
+
t.column :fruit_size, :string # NOTE: "size" is reserved in Oracle
|
43
|
+
t.column :texture, :string
|
44
|
+
t.column :flavor, :string
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
assert_nothing_raised { @connection.select_all "SELECT * FROM fruits" }
|
49
|
+
assert_nothing_raised { @connection.select_all "SELECT * FROM schema_migrations" }
|
50
|
+
assert_equal 7, ActiveRecord::Migrator::current_version
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_schema_define_w_table_name_prefix
|
54
|
+
table_name = ActiveRecord::SchemaMigration.table_name
|
55
|
+
old_table_name_prefix = ActiveRecord::Base.table_name_prefix
|
56
|
+
ActiveRecord::Base.table_name_prefix = "nep_"
|
57
|
+
ActiveRecord::SchemaMigration.table_name = "nep_#{table_name}"
|
58
|
+
ActiveRecord::Schema.define(:version => 7) do
|
59
|
+
create_table :fruits do |t|
|
60
|
+
t.column :color, :string
|
61
|
+
t.column :fruit_size, :string # NOTE: "size" is reserved in Oracle
|
62
|
+
t.column :texture, :string
|
63
|
+
t.column :flavor, :string
|
64
|
+
end
|
65
|
+
end
|
66
|
+
assert_equal 7, ActiveRecord::Migrator::current_version
|
67
|
+
ensure
|
68
|
+
ActiveRecord::Base.table_name_prefix = old_table_name_prefix
|
69
|
+
ActiveRecord::SchemaMigration.table_name = table_name
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_schema_raises_an_error_for_invalid_column_type
|
73
|
+
assert_raise NoMethodError do
|
74
|
+
ActiveRecord::Schema.define(:version => 8) do
|
75
|
+
create_table :vegetables do |t|
|
76
|
+
t.unknown :color
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_schema_subclass
|
83
|
+
Class.new(ActiveRecord::Schema).define(:version => 9) do
|
84
|
+
create_table :fruits
|
85
|
+
end
|
86
|
+
assert_nothing_raised { @connection.select_all "SELECT * FROM fruits" }
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_normalize_version
|
90
|
+
assert_equal "118", ActiveRecord::SchemaMigration.normalize_migration_number("0000118")
|
91
|
+
assert_equal "002", ActiveRecord::SchemaMigration.normalize_migration_number("2")
|
92
|
+
assert_equal "017", ActiveRecord::SchemaMigration.normalize_migration_number("0017")
|
93
|
+
assert_equal "20131219224947", ActiveRecord::SchemaMigration.normalize_migration_number("20131219224947")
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_timestamps_without_null_is_deprecated_on_create_table
|
97
|
+
assert_deprecated do
|
98
|
+
ActiveRecord::Schema.define do
|
99
|
+
create_table :has_timestamps do |t|
|
100
|
+
t.timestamps
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_timestamps_without_null_is_deprecated_on_change_table
|
107
|
+
assert_deprecated do
|
108
|
+
ActiveRecord::Schema.define do
|
109
|
+
create_table :has_timestamps
|
110
|
+
|
111
|
+
change_table :has_timestamps do |t|
|
112
|
+
t.timestamps
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_timestamps_without_null_is_deprecated_on_add_timestamps
|
119
|
+
assert_deprecated do
|
120
|
+
ActiveRecord::Schema.define do
|
121
|
+
create_table :has_timestamps
|
122
|
+
add_timestamps :has_timestamps
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_no_deprecation_warning_from_timestamps_on_create_table
|
128
|
+
assert_not_deprecated do
|
129
|
+
ActiveRecord::Schema.define do
|
130
|
+
create_table :has_timestamps do |t|
|
131
|
+
t.timestamps null: true
|
132
|
+
end
|
133
|
+
|
134
|
+
drop_table :has_timestamps
|
135
|
+
|
136
|
+
create_table :has_timestamps do |t|
|
137
|
+
t.timestamps null: false
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_no_deprecation_warning_from_timestamps_on_change_table
|
144
|
+
assert_not_deprecated do
|
145
|
+
ActiveRecord::Schema.define do
|
146
|
+
create_table :has_timestamps
|
147
|
+
change_table :has_timestamps do |t|
|
148
|
+
t.timestamps null: true
|
149
|
+
end
|
150
|
+
|
151
|
+
drop_table :has_timestamps
|
152
|
+
|
153
|
+
create_table :has_timestamps
|
154
|
+
change_table :has_timestamps do |t|
|
155
|
+
t.timestamps null: false, default: Time.now
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|