ibm_db 3.0.5-x86-mingw32 → 4.0.0-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/LICENSE +1 -1
- data/MANIFEST +14 -14
- data/ParameterizedQueries README +6 -6
- data/README +208 -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 -11887
- 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 +3452 -3177
- data/lib/active_record/connection_adapters/ibmdb_adapter.rb +5 -2
- data/lib/active_record/vendor/db2-i5-zOS.yaml +328 -328
- data/lib/mswin32/ibm_db.rb +91 -123
- data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
- data/test/active_record/connection_adapters/fake_adapter.rb +49 -46
- data/test/assets/example.log +1 -1
- data/test/assets/test.txt +1 -1
- data/test/cases/adapter_test.rb +351 -276
- data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
- data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
- data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
- data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
- data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
- data/test/cases/adapters/mysql2/connection_test.rb +210 -0
- data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
- data/test/cases/adapters/mysql2/enum_test.rb +26 -0
- data/test/cases/adapters/mysql2/explain_test.rb +21 -0
- data/test/cases/adapters/mysql2/json_test.rb +195 -0
- data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
- data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
- data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
- data/test/cases/adapters/mysql2/schema_test.rb +126 -0
- data/test/cases/adapters/mysql2/sp_test.rb +36 -0
- data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
- data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
- data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
- data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
- data/test/cases/adapters/postgresql/array_test.rb +339 -0
- data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
- data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
- data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
- data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
- data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
- data/test/cases/adapters/postgresql/citext_test.rb +78 -0
- data/test/cases/adapters/postgresql/collation_test.rb +53 -0
- data/test/cases/adapters/postgresql/composite_test.rb +132 -0
- data/test/cases/adapters/postgresql/connection_test.rb +257 -0
- data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
- data/test/cases/adapters/postgresql/domain_test.rb +47 -0
- data/test/cases/adapters/postgresql/enum_test.rb +91 -0
- data/test/cases/adapters/postgresql/explain_test.rb +20 -0
- data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
- data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
- data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
- data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
- data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
- data/test/cases/adapters/postgresql/integer_test.rb +25 -0
- data/test/cases/adapters/postgresql/json_test.rb +237 -0
- data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
- data/test/cases/adapters/postgresql/money_test.rb +96 -0
- data/test/cases/adapters/postgresql/network_test.rb +94 -0
- data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
- data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
- data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
- data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
- data/test/cases/adapters/postgresql/range_test.rb +343 -0
- data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
- data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
- data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
- data/test/cases/adapters/postgresql/schema_test.rb +597 -0
- data/test/cases/adapters/postgresql/serial_test.rb +154 -0
- data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
- data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
- data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
- data/test/cases/adapters/postgresql/utils_test.rb +62 -0
- data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
- data/test/cases/adapters/postgresql/xml_test.rb +54 -0
- data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
- data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
- data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
- data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
- data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
- data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
- data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
- data/test/cases/aggregations_test.rb +168 -158
- data/test/cases/ar_schema_test.rb +146 -161
- data/test/cases/associations/association_scope_test.rb +16 -21
- data/test/cases/associations/belongs_to_associations_test.rb +1141 -1029
- data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
- data/test/cases/associations/callbacks_test.rb +190 -192
- data/test/cases/associations/cascaded_eager_loading_test.rb +188 -188
- data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +36 -36
- data/test/cases/associations/eager_load_nested_include_test.rb +126 -128
- data/test/cases/associations/eager_singularization_test.rb +148 -148
- data/test/cases/associations/eager_test.rb +1514 -1429
- data/test/cases/associations/extension_test.rb +87 -82
- data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +1004 -972
- data/test/cases/associations/has_many_associations_test.rb +2501 -2182
- data/test/cases/associations/has_many_through_associations_test.rb +1271 -1204
- data/test/cases/associations/has_one_associations_test.rb +707 -610
- data/test/cases/associations/has_one_through_associations_test.rb +383 -380
- data/test/cases/associations/inner_join_association_test.rb +139 -139
- data/test/cases/associations/inverse_associations_test.rb +733 -706
- data/test/cases/associations/join_model_test.rb +777 -754
- data/test/cases/associations/left_outer_join_association_test.rb +88 -0
- data/test/cases/associations/nested_through_associations_test.rb +579 -579
- data/test/cases/associations/required_test.rb +102 -82
- data/test/cases/associations_test.rb +385 -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_test.rb +1009 -952
- data/test/cases/attribute_set_test.rb +270 -210
- data/test/cases/attribute_test.rb +246 -180
- data/test/cases/attributes_test.rb +253 -136
- data/test/cases/autosave_association_test.rb +1708 -1595
- data/test/cases/base_test.rb +1713 -1664
- data/test/cases/batches_test.rb +489 -212
- data/test/cases/binary_test.rb +44 -52
- data/test/cases/bind_parameter_test.rb +110 -100
- data/test/cases/cache_key_test.rb +25 -0
- data/test/cases/calculations_test.rb +798 -646
- data/test/cases/callbacks_test.rb +636 -543
- data/test/cases/clone_test.rb +40 -40
- data/test/cases/coders/json_test.rb +15 -0
- data/test/cases/coders/yaml_column_test.rb +63 -63
- data/test/cases/collection_cache_key_test.rb +115 -0
- data/test/cases/column_alias_test.rb +17 -17
- data/test/cases/column_definition_test.rb +92 -123
- data/test/cases/comment_test.rb +143 -0
- data/test/cases/connection_adapters/adapter_leasing_test.rb +56 -54
- data/test/cases/connection_adapters/connection_handler_test.rb +160 -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 +255 -293
- data/test/cases/connection_adapters/mysql_type_lookup_test.rb +69 -65
- data/test/cases/connection_adapters/quoting_test.rb +13 -13
- data/test/cases/connection_adapters/schema_cache_test.rb +61 -56
- data/test/cases/connection_adapters/type_lookup_test.rb +118 -110
- data/test/cases/connection_management_test.rb +112 -122
- data/test/cases/connection_pool_test.rb +521 -346
- data/test/cases/connection_specification/resolver_test.rb +131 -116
- data/test/cases/core_test.rb +112 -112
- data/test/cases/counter_cache_test.rb +214 -209
- data/test/cases/custom_locking_test.rb +17 -17
- data/test/cases/database_statements_test.rb +34 -19
- data/test/cases/{invalid_date_test.rb → date_test.rb} +44 -32
- data/test/cases/date_time_precision_test.rb +106 -0
- data/test/cases/date_time_test.rb +61 -61
- data/test/cases/defaults_test.rb +218 -223
- data/test/cases/dirty_test.rb +763 -785
- data/test/cases/disconnected_test.rb +30 -28
- data/test/cases/dup_test.rb +157 -157
- data/test/cases/enum_test.rb +444 -290
- data/test/cases/errors_test.rb +16 -0
- data/test/cases/explain_subscriber_test.rb +64 -64
- data/test/cases/explain_test.rb +87 -76
- data/test/cases/finder_respond_to_test.rb +60 -60
- data/test/cases/finder_test.rb +1294 -1169
- data/test/cases/fixture_set/file_test.rb +156 -138
- data/test/cases/fixtures_test.rb +988 -908
- data/test/cases/forbidden_attributes_protection_test.rb +165 -99
- data/test/cases/habtm_destroy_order_test.rb +61 -61
- data/test/cases/helper.rb +204 -210
- data/test/cases/hot_compatibility_test.rb +142 -54
- data/test/cases/i18n_test.rb +45 -45
- data/test/cases/inheritance_test.rb +606 -375
- data/test/cases/integration_test.rb +155 -139
- data/test/cases/invalid_connection_test.rb +24 -22
- data/test/cases/invertible_migration_test.rb +387 -295
- data/test/cases/json_serialization_test.rb +311 -302
- data/test/cases/locking_test.rb +493 -477
- data/test/cases/log_subscriber_test.rb +225 -136
- data/test/cases/migration/change_schema_test.rb +458 -512
- data/test/cases/migration/change_table_test.rb +256 -224
- data/test/cases/migration/column_attributes_test.rb +176 -192
- data/test/cases/migration/column_positioning_test.rb +56 -56
- data/test/cases/migration/columns_test.rb +310 -304
- data/test/cases/migration/command_recorder_test.rb +350 -305
- data/test/cases/migration/compatibility_test.rb +118 -0
- data/test/cases/migration/create_join_table_test.rb +157 -148
- data/test/cases/migration/foreign_key_test.rb +360 -328
- data/test/cases/migration/helper.rb +39 -39
- data/test/cases/migration/index_test.rb +218 -216
- data/test/cases/migration/logger_test.rb +36 -36
- data/test/cases/migration/pending_migrations_test.rb +52 -53
- data/test/cases/migration/references_foreign_key_test.rb +216 -169
- data/test/cases/migration/references_index_test.rb +101 -101
- data/test/cases/migration/references_statements_test.rb +136 -116
- data/test/cases/migration/rename_table_test.rb +93 -93
- data/test/cases/migration_test.rb +1157 -959
- data/test/cases/migrator_test.rb +470 -388
- data/test/cases/mixin_test.rb +68 -70
- data/test/cases/modules_test.rb +172 -173
- data/test/cases/multiparameter_attributes_test.rb +372 -350
- data/test/cases/multiple_db_test.rb +122 -115
- data/test/cases/nested_attributes_test.rb +1098 -1070
- data/test/cases/nested_attributes_with_callbacks_test.rb +144 -144
- data/test/cases/persistence_test.rb +1001 -909
- data/test/cases/pooled_connections_test.rb +81 -81
- data/test/cases/primary_keys_test.rb +376 -237
- data/test/cases/query_cache_test.rb +446 -326
- data/test/cases/quoting_test.rb +202 -156
- data/test/cases/readonly_test.rb +119 -118
- data/test/cases/reaper_test.rb +85 -85
- data/test/cases/reflection_test.rb +509 -463
- data/test/cases/relation/delegation_test.rb +63 -68
- data/test/cases/relation/merging_test.rb +157 -161
- data/test/cases/relation/mutation_test.rb +183 -165
- data/test/cases/relation/or_test.rb +92 -0
- data/test/cases/relation/predicate_builder_test.rb +16 -14
- data/test/cases/relation/record_fetch_warning_test.rb +40 -0
- data/test/cases/relation/where_chain_test.rb +105 -181
- data/test/cases/relation/where_clause_test.rb +182 -0
- data/test/cases/relation/where_test.rb +322 -300
- data/test/cases/relation_test.rb +328 -319
- data/test/cases/relations_test.rb +2026 -1815
- data/test/cases/reload_models_test.rb +22 -22
- data/test/cases/result_test.rb +90 -80
- data/test/cases/sanitize_test.rb +176 -83
- data/test/cases/schema_dumper_test.rb +457 -463
- data/test/cases/schema_loading_test.rb +52 -0
- data/test/cases/scoping/default_scoping_test.rb +528 -454
- data/test/cases/scoping/named_scoping_test.rb +561 -524
- data/test/cases/scoping/relation_scoping_test.rb +400 -357
- data/test/cases/secure_token_test.rb +32 -0
- data/test/cases/serialization_test.rb +104 -104
- data/test/cases/serialized_attribute_test.rb +364 -277
- data/test/cases/statement_cache_test.rb +136 -98
- data/test/cases/store_test.rb +195 -194
- data/test/cases/suppressor_test.rb +63 -0
- data/test/cases/tasks/database_tasks_test.rb +462 -398
- data/test/cases/tasks/mysql_rake_test.rb +345 -324
- data/test/cases/tasks/postgresql_rake_test.rb +304 -250
- data/test/cases/tasks/sqlite_rake_test.rb +220 -193
- data/test/cases/test_case.rb +131 -123
- data/test/cases/test_fixtures_test.rb +36 -0
- data/test/cases/time_precision_test.rb +102 -0
- data/test/cases/timestamp_test.rb +501 -467
- data/test/cases/touch_later_test.rb +121 -0
- data/test/cases/transaction_callbacks_test.rb +518 -452
- data/test/cases/transaction_isolation_test.rb +106 -106
- data/test/cases/transactions_test.rb +834 -817
- data/test/cases/type/adapter_specific_registry_test.rb +133 -0
- data/test/cases/type/date_time_test.rb +14 -0
- data/test/cases/type/integer_test.rb +27 -121
- data/test/cases/type/string_test.rb +22 -36
- data/test/cases/type/type_map_test.rb +177 -177
- data/test/cases/type_test.rb +39 -0
- data/test/cases/types_test.rb +24 -141
- data/test/cases/unconnected_test.rb +33 -33
- data/test/cases/validations/absence_validation_test.rb +73 -0
- data/test/cases/validations/association_validation_test.rb +97 -86
- data/test/cases/validations/i18n_generate_message_validation_test.rb +84 -84
- data/test/cases/validations/i18n_validation_test.rb +86 -90
- data/test/cases/validations/length_validation_test.rb +79 -47
- data/test/cases/validations/presence_validation_test.rb +103 -68
- data/test/cases/validations/uniqueness_validation_test.rb +548 -457
- data/test/cases/validations_repair_helper.rb +19 -23
- data/test/cases/validations_test.rb +194 -165
- data/test/cases/view_test.rb +216 -119
- data/test/cases/yaml_serialization_test.rb +121 -126
- data/test/config.example.yml +97 -0
- data/test/config.rb +5 -5
- data/test/fixtures/accounts.yml +29 -29
- data/test/fixtures/admin/accounts.yml +2 -2
- data/test/fixtures/admin/users.yml +10 -10
- data/test/fixtures/author_addresses.original +11 -0
- data/test/fixtures/author_addresses.yml +17 -17
- data/test/fixtures/author_favorites.yml +3 -3
- data/test/fixtures/authors.original +17 -0
- data/test/fixtures/authors.yml +23 -23
- data/test/fixtures/bad_posts.yml +9 -0
- data/test/fixtures/binaries.yml +133 -133
- data/test/fixtures/books.yml +31 -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/content.yml +3 -0
- data/test/fixtures/content_positions.yml +3 -0
- data/test/fixtures/courses.yml +8 -8
- data/test/fixtures/customers.yml +25 -25
- data/test/fixtures/dashboards.yml +6 -6
- data/test/fixtures/dead_parrots.yml +5 -0
- data/test/fixtures/developers.yml +22 -22
- 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/live_parrots.yml +4 -0
- 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/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/naked/yml/parrots.yml +2 -0
- data/test/fixtures/naked/yml/trees.yml +3 -0
- data/test/fixtures/nodes.yml +29 -0
- data/test/fixtures/organizations.yml +5 -5
- data/test/fixtures/other_comments.yml +6 -0
- data/test/fixtures/other_dogs.yml +2 -0
- data/test/fixtures/other_posts.yml +7 -0
- 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 +15 -12
- data/test/fixtures/posts.yml +80 -80
- data/test/fixtures/price_estimates.yml +16 -7
- data/test/fixtures/products.yml +4 -4
- data/test/fixtures/projects.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/trees.yml +3 -0
- 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/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 +9 -9
- data/test/migrations/missing/1_people_have_last_names.rb +9 -9
- data/test/migrations/missing/3_we_need_reminders.rb +12 -12
- data/test/migrations/missing/4_innocent_jointable.rb +12 -12
- data/test/migrations/rename/1_we_need_things.rb +11 -11
- data/test/migrations/rename/2_rename_things.rb +9 -9
- 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 +12 -12
- data/test/migrations/valid/3_innocent_jointable.rb +12 -12
- 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 +12 -12
- data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +12 -12
- 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 +5 -5
- data/test/models/admin/account.rb +3 -3
- data/test/models/admin/randomly_named_c1.rb +6 -2
- data/test/models/admin/user.rb +40 -40
- data/test/models/aircraft.rb +5 -4
- data/test/models/arunit2_model.rb +3 -3
- data/test/models/author.rb +209 -212
- data/test/models/auto_id.rb +4 -4
- data/test/models/autoloadable/extra_firm.rb +2 -2
- data/test/models/binary.rb +2 -2
- data/test/models/bird.rb +12 -12
- data/test/models/book.rb +23 -18
- data/test/models/boolean.rb +2 -2
- data/test/models/bulb.rb +52 -51
- data/test/models/cake_designer.rb +3 -3
- data/test/models/car.rb +29 -26
- data/test/models/carrier.rb +2 -2
- data/test/models/cat.rb +10 -0
- data/test/models/categorization.rb +19 -19
- data/test/models/category.rb +35 -35
- data/test/models/chef.rb +8 -7
- data/test/models/citation.rb +3 -3
- data/test/models/club.rb +25 -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 +76 -64
- data/test/models/company.rb +230 -228
- 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/content.rb +40 -0
- 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 +83 -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 +274 -255
- 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 +3 -3
- 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 +2 -2
- data/test/models/guitar.rb +4 -0
- data/test/models/hotel.rb +11 -9
- 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 +42 -41
- data/test/models/member_detail.rb +8 -7
- data/test/models/member_type.rb +3 -3
- data/test/models/membership.rb +35 -35
- data/test/models/mentor.rb +3 -0
- 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/mocktail_designer.rb +2 -0
- data/test/models/molecule.rb +6 -6
- data/test/models/movie.rb +5 -5
- data/test/models/node.rb +5 -0
- data/test/models/non_primary_key.rb +2 -0
- data/test/models/notification.rb +3 -0
- data/test/models/order.rb +4 -4
- data/test/models/organization.rb +14 -14
- data/test/models/other_dog.rb +5 -0
- data/test/models/owner.rb +37 -34
- data/test/models/parrot.rb +28 -29
- data/test/models/person.rb +142 -143
- data/test/models/personal_legacy_thing.rb +4 -4
- data/test/models/pet.rb +18 -15
- data/test/models/pet_treasure.rb +6 -0
- data/test/models/pirate.rb +92 -92
- data/test/models/possession.rb +3 -3
- data/test/models/post.rb +273 -264
- data/test/models/price_estimate.rb +4 -4
- data/test/models/professor.rb +5 -5
- data/test/models/project.rb +40 -31
- 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 +1 -1
- data/test/models/rating.rb +4 -4
- data/test/models/reader.rb +23 -23
- data/test/models/recipe.rb +3 -0
- 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 +39 -33
- data/test/models/ship_part.rb +8 -8
- 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 +13 -7
- data/test/models/tagging.rb +13 -13
- data/test/models/task.rb +5 -5
- data/test/models/topic.rb +118 -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/tree.rb +3 -0
- data/test/models/tuning_peg.rb +4 -0
- data/test/models/tyre.rb +11 -11
- data/test/models/user.rb +14 -0
- data/test/models/uuid_child.rb +3 -3
- data/test/models/uuid_item.rb +6 -0
- 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 +68 -58
- data/test/schema/oracle_specific_schema.rb +40 -43
- data/test/schema/postgresql_specific_schema.rb +114 -202
- data/test/schema/schema.rb +1057 -952
- data/test/schema/schema.rb.original +1057 -0
- data/test/schema/sqlite_specific_schema.rb +18 -22
- data/test/support/config.rb +43 -43
- data/test/support/connection.rb +23 -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
- data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
- data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
- metadata +129 -28
- data/lib/mswin32/rb19x/ibm_db.so +0 -0
- 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/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
- data/test/cases/attribute_methods/serialization_test.rb +0 -29
- data/test/cases/migration/change_schema_test - Copy.rb +0 -448
- data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
- data/test/cases/migration/table_and_index_test.rb +0 -24
- data/test/cases/relation/where_test2.rb +0 -36
- data/test/cases/type/decimal_test.rb +0 -56
- data/test/cases/type/unsigned_integer_test.rb +0 -18
- data/test/cases/xml_serialization_test.rb +0 -457
- data/test/connections/native_ibm_db/connection.rb +0 -44
- data/test/fixtures/naked/csv/accounts.csv +0 -1
- data/test/schema/i5/ibm_db_specific_schema.rb +0 -137
- data/test/schema/ids/ibm_db_specific_schema.rb +0 -140
- data/test/schema/luw/ibm_db_specific_schema.rb +0 -137
- data/test/schema/mysql_specific_schema.rb +0 -70
- data/test/schema/zOS/ibm_db_specific_schema.rb +0 -208
data/test/cases/mixin_test.rb
CHANGED
@@ -1,70 +1,68 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
|
3
|
-
class Mixin < ActiveRecord::Base
|
4
|
-
end
|
5
|
-
|
6
|
-
class TouchTest < ActiveRecord::TestCase
|
7
|
-
fixtures :mixins
|
8
|
-
|
9
|
-
setup do
|
10
|
-
travel_to Time.now
|
11
|
-
end
|
12
|
-
|
13
|
-
teardown do
|
14
|
-
travel_back
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_update
|
18
|
-
stamped = Mixin.new
|
19
|
-
|
20
|
-
assert_nil stamped.updated_at
|
21
|
-
assert_nil stamped.created_at
|
22
|
-
stamped.save
|
23
|
-
assert_equal Time.now, stamped.updated_at
|
24
|
-
assert_equal Time.now, stamped.created_at
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_create
|
28
|
-
obj = Mixin.create
|
29
|
-
assert_equal Time.now, obj.updated_at
|
30
|
-
assert_equal Time.now, obj.created_at
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_many_updates
|
34
|
-
stamped = Mixin.new
|
35
|
-
|
36
|
-
assert_nil stamped.updated_at
|
37
|
-
assert_nil stamped.created_at
|
38
|
-
stamped.save
|
39
|
-
assert_equal Time.now, stamped.created_at
|
40
|
-
assert_equal Time.now, stamped.updated_at
|
41
|
-
|
42
|
-
old_updated_at = stamped.updated_at
|
43
|
-
|
44
|
-
travel 5.minutes do
|
45
|
-
stamped.lft_will_change!
|
46
|
-
stamped.save
|
47
|
-
|
48
|
-
assert_equal Time.now, stamped.updated_at
|
49
|
-
assert_equal old_updated_at, stamped.created_at
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_create_turned_off
|
54
|
-
Mixin.record_timestamps = false
|
55
|
-
|
56
|
-
mixin = Mixin.new
|
57
|
-
|
58
|
-
assert_nil mixin.updated_at
|
59
|
-
mixin.save
|
60
|
-
assert_nil mixin.updated_at
|
61
|
-
|
62
|
-
# Make sure Mixin.record_timestamps gets reset, even if this test fails,
|
63
|
-
# so that other tests do not fail because Mixin.record_timestamps == false
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
|
3
|
+
class Mixin < ActiveRecord::Base
|
4
|
+
end
|
5
|
+
|
6
|
+
class TouchTest < ActiveRecord::TestCase
|
7
|
+
fixtures :mixins
|
8
|
+
|
9
|
+
setup do
|
10
|
+
travel_to Time.now
|
11
|
+
end
|
12
|
+
|
13
|
+
teardown do
|
14
|
+
travel_back
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_update
|
18
|
+
stamped = Mixin.new
|
19
|
+
|
20
|
+
assert_nil stamped.updated_at
|
21
|
+
assert_nil stamped.created_at
|
22
|
+
stamped.save
|
23
|
+
assert_equal Time.now, stamped.updated_at
|
24
|
+
assert_equal Time.now, stamped.created_at
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_create
|
28
|
+
obj = Mixin.create
|
29
|
+
assert_equal Time.now, obj.updated_at
|
30
|
+
assert_equal Time.now, obj.created_at
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_many_updates
|
34
|
+
stamped = Mixin.new
|
35
|
+
|
36
|
+
assert_nil stamped.updated_at
|
37
|
+
assert_nil stamped.created_at
|
38
|
+
stamped.save
|
39
|
+
assert_equal Time.now, stamped.created_at
|
40
|
+
assert_equal Time.now, stamped.updated_at
|
41
|
+
|
42
|
+
old_updated_at = stamped.updated_at
|
43
|
+
|
44
|
+
travel 5.minutes do
|
45
|
+
stamped.lft_will_change!
|
46
|
+
stamped.save
|
47
|
+
|
48
|
+
assert_equal Time.now, stamped.updated_at
|
49
|
+
assert_equal old_updated_at, stamped.created_at
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_create_turned_off
|
54
|
+
Mixin.record_timestamps = false
|
55
|
+
|
56
|
+
mixin = Mixin.new
|
57
|
+
|
58
|
+
assert_nil mixin.updated_at
|
59
|
+
mixin.save
|
60
|
+
assert_nil mixin.updated_at
|
61
|
+
|
62
|
+
# Make sure Mixin.record_timestamps gets reset, even if this test fails,
|
63
|
+
# so that other tests do not fail because Mixin.record_timestamps == false
|
64
|
+
ensure
|
65
|
+
Mixin.record_timestamps = true
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
data/test/cases/modules_test.rb
CHANGED
@@ -1,173 +1,172 @@
|
|
1
|
-
require "cases/helper"
|
2
|
-
require 'models/company_in_module'
|
3
|
-
require 'models/shop'
|
4
|
-
require 'models/developer'
|
5
|
-
require 'models/computer'
|
6
|
-
|
7
|
-
class ModulesTest < ActiveRecord::TestCase
|
8
|
-
fixtures :accounts, :companies, :projects, :developers, :collections, :products, :variants
|
9
|
-
|
10
|
-
def setup
|
11
|
-
# need to make sure Object::Firm and Object::Client are not defined,
|
12
|
-
# so that constantize will not be able to cheat when having to load namespaced classes
|
13
|
-
@undefined_consts = {}
|
14
|
-
|
15
|
-
[:Firm, :Client].each do |const|
|
16
|
-
@undefined_consts.merge! const => Object.send(:remove_const, const) if Object.const_defined?(const)
|
17
|
-
end
|
18
|
-
|
19
|
-
ActiveRecord::Base.store_full_sti_class = false
|
20
|
-
end
|
21
|
-
|
22
|
-
teardown do
|
23
|
-
# reinstate the constants that we undefined in the setup
|
24
|
-
@undefined_consts.each do |constant, value|
|
25
|
-
Object.send :const_set, constant, value unless value.nil?
|
26
|
-
end
|
27
|
-
|
28
|
-
ActiveRecord::Base.store_full_sti_class = true
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_module_spanning_associations
|
32
|
-
firm = MyApplication::Business::Firm.first
|
33
|
-
assert !firm.clients.empty?, "Firm should have clients"
|
34
|
-
assert_nil firm.class.table_name.match('::'), "Firm shouldn't have the module appear in its table name"
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_module_spanning_has_and_belongs_to_many_associations
|
38
|
-
project = MyApplication::Business::Project.first
|
39
|
-
project.developers << MyApplication::Business::Developer.create("name" => "John")
|
40
|
-
assert_equal "John", project.developers.last.name
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_associations_spanning_cross_modules
|
44
|
-
account = MyApplication::Billing::Account.all.merge!(:order => 'id').first
|
45
|
-
assert_kind_of MyApplication::Business::Firm, account.firm
|
46
|
-
assert_kind_of MyApplication::Billing::Firm, account.qualified_billing_firm
|
47
|
-
assert_kind_of MyApplication::Billing::Firm, account.unqualified_billing_firm
|
48
|
-
assert_kind_of MyApplication::Billing::Nested::Firm, account.nested_qualified_billing_firm
|
49
|
-
assert_kind_of MyApplication::Billing::Nested::Firm, account.nested_unqualified_billing_firm
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_find_account_and_include_company
|
53
|
-
account = MyApplication::Billing::Account.all.merge!(:includes => :firm).find(1)
|
54
|
-
assert_kind_of MyApplication::Business::Firm, account.firm
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_table_name
|
58
|
-
assert_equal 'accounts', MyApplication::Billing::Account.table_name, 'table_name for ActiveRecord model in module'
|
59
|
-
assert_equal 'companies', MyApplication::Business::Client.table_name, 'table_name for ActiveRecord model subclass'
|
60
|
-
assert_equal 'company_contacts', MyApplication::Business::Client::Contact.table_name, 'table_name for ActiveRecord model enclosed by another ActiveRecord model'
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_assign_ids
|
64
|
-
firm = MyApplication::Business::Firm.first
|
65
|
-
|
66
|
-
assert_nothing_raised
|
67
|
-
firm.client_ids = [MyApplication::Business::Client.first.id]
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
#
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
clients << MyApplication::Business::Client.
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Company.table_name, '
|
90
|
-
assert_equal '
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
MyApplication::Business::
|
97
|
-
MyApplication::Business::Client,
|
98
|
-
MyApplication::Business::
|
99
|
-
MyApplication::Business::
|
100
|
-
MyApplication::Business::
|
101
|
-
MyApplication::Business::Prefixed::Company,
|
102
|
-
MyApplication::
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
assert_equal '
|
108
|
-
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Company.table_name, '
|
109
|
-
assert_equal '
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
assert_equal 'companies_suffixed', MyApplication::Business::Suffixed::Company.table_name, '
|
118
|
-
assert_equal '
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
MyApplication::Business::
|
125
|
-
MyApplication::Business::Client,
|
126
|
-
MyApplication::Business::
|
127
|
-
MyApplication::Business::
|
128
|
-
MyApplication::Business::
|
129
|
-
MyApplication::Business::Suffixed::Company,
|
130
|
-
MyApplication::
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
assert_equal '
|
136
|
-
assert_equal 'companies_suffixed', MyApplication::Business::Suffixed::Company.table_name, '
|
137
|
-
assert_equal '
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
collection
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
product
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
end
|
1
|
+
require "cases/helper"
|
2
|
+
require 'models/company_in_module'
|
3
|
+
require 'models/shop'
|
4
|
+
require 'models/developer'
|
5
|
+
require 'models/computer'
|
6
|
+
|
7
|
+
class ModulesTest < ActiveRecord::TestCase
|
8
|
+
fixtures :accounts, :companies, :projects, :developers, :collections, :products, :variants
|
9
|
+
|
10
|
+
def setup
|
11
|
+
# need to make sure Object::Firm and Object::Client are not defined,
|
12
|
+
# so that constantize will not be able to cheat when having to load namespaced classes
|
13
|
+
@undefined_consts = {}
|
14
|
+
|
15
|
+
[:Firm, :Client].each do |const|
|
16
|
+
@undefined_consts.merge! const => Object.send(:remove_const, const) if Object.const_defined?(const)
|
17
|
+
end
|
18
|
+
|
19
|
+
ActiveRecord::Base.store_full_sti_class = false
|
20
|
+
end
|
21
|
+
|
22
|
+
teardown do
|
23
|
+
# reinstate the constants that we undefined in the setup
|
24
|
+
@undefined_consts.each do |constant, value|
|
25
|
+
Object.send :const_set, constant, value unless value.nil?
|
26
|
+
end
|
27
|
+
|
28
|
+
ActiveRecord::Base.store_full_sti_class = true
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_module_spanning_associations
|
32
|
+
firm = MyApplication::Business::Firm.first
|
33
|
+
assert !firm.clients.empty?, "Firm should have clients"
|
34
|
+
assert_nil firm.class.table_name.match('::'), "Firm shouldn't have the module appear in its table name"
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_module_spanning_has_and_belongs_to_many_associations
|
38
|
+
project = MyApplication::Business::Project.first
|
39
|
+
project.developers << MyApplication::Business::Developer.create("name" => "John")
|
40
|
+
assert_equal "John", project.developers.last.name
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_associations_spanning_cross_modules
|
44
|
+
account = MyApplication::Billing::Account.all.merge!(:order => 'id').first
|
45
|
+
assert_kind_of MyApplication::Business::Firm, account.firm
|
46
|
+
assert_kind_of MyApplication::Billing::Firm, account.qualified_billing_firm
|
47
|
+
assert_kind_of MyApplication::Billing::Firm, account.unqualified_billing_firm
|
48
|
+
assert_kind_of MyApplication::Billing::Nested::Firm, account.nested_qualified_billing_firm
|
49
|
+
assert_kind_of MyApplication::Billing::Nested::Firm, account.nested_unqualified_billing_firm
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_find_account_and_include_company
|
53
|
+
account = MyApplication::Billing::Account.all.merge!(:includes => :firm).find(1)
|
54
|
+
assert_kind_of MyApplication::Business::Firm, account.firm
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_table_name
|
58
|
+
assert_equal 'accounts', MyApplication::Billing::Account.table_name, 'table_name for ActiveRecord model in module'
|
59
|
+
assert_equal 'companies', MyApplication::Business::Client.table_name, 'table_name for ActiveRecord model subclass'
|
60
|
+
assert_equal 'company_contacts', MyApplication::Business::Client::Contact.table_name, 'table_name for ActiveRecord model enclosed by another ActiveRecord model'
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_assign_ids
|
64
|
+
firm = MyApplication::Business::Firm.first
|
65
|
+
|
66
|
+
assert_nothing_raised do
|
67
|
+
firm.client_ids = [MyApplication::Business::Client.first.id]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# An eager loading condition to force the eager loading model into the old join model.
|
72
|
+
def test_eager_loading_in_modules
|
73
|
+
clients = []
|
74
|
+
|
75
|
+
assert_nothing_raised do
|
76
|
+
clients << MyApplication::Business::Client.references(:accounts).merge!(:includes => {:firm => :account}, :where => 'accounts.id IS NOT NULL').find(3)
|
77
|
+
clients << MyApplication::Business::Client.includes(:firm => :account).find(3)
|
78
|
+
end
|
79
|
+
|
80
|
+
clients.each do |client|
|
81
|
+
assert_no_queries do
|
82
|
+
assert_not_nil(client.firm.account)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_module_table_name_prefix
|
88
|
+
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Company.table_name, 'inferred table_name for ActiveRecord model in module with table_name_prefix'
|
89
|
+
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Nested::Company.table_name, 'table_name for ActiveRecord model in nested module with a parent table_name_prefix'
|
90
|
+
assert_equal 'companies', MyApplication::Business::Prefixed::Firm.table_name, 'explicit table_name for ActiveRecord model in module with table_name_prefix should not be prefixed'
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_module_table_name_prefix_with_global_prefix
|
94
|
+
classes = [ MyApplication::Business::Company,
|
95
|
+
MyApplication::Business::Firm,
|
96
|
+
MyApplication::Business::Client,
|
97
|
+
MyApplication::Business::Client::Contact,
|
98
|
+
MyApplication::Business::Developer,
|
99
|
+
MyApplication::Business::Project,
|
100
|
+
MyApplication::Business::Prefixed::Company,
|
101
|
+
MyApplication::Business::Prefixed::Nested::Company,
|
102
|
+
MyApplication::Billing::Account ]
|
103
|
+
|
104
|
+
ActiveRecord::Base.table_name_prefix = 'global_'
|
105
|
+
classes.each(&:reset_table_name)
|
106
|
+
assert_equal 'global_companies', MyApplication::Business::Company.table_name, 'inferred table_name for ActiveRecord model in module without table_name_prefix'
|
107
|
+
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Company.table_name, 'inferred table_name for ActiveRecord model in module with table_name_prefix'
|
108
|
+
assert_equal 'prefixed_companies', MyApplication::Business::Prefixed::Nested::Company.table_name, 'table_name for ActiveRecord model in nested module with a parent table_name_prefix'
|
109
|
+
assert_equal 'companies', MyApplication::Business::Prefixed::Firm.table_name, 'explicit table_name for ActiveRecord model in module with table_name_prefix should not be prefixed'
|
110
|
+
ensure
|
111
|
+
ActiveRecord::Base.table_name_prefix = ''
|
112
|
+
classes.each(&:reset_table_name)
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_module_table_name_suffix
|
116
|
+
assert_equal 'companies_suffixed', MyApplication::Business::Suffixed::Company.table_name, 'inferred table_name for ActiveRecord model in module with table_name_suffix'
|
117
|
+
assert_equal 'companies_suffixed', MyApplication::Business::Suffixed::Nested::Company.table_name, 'table_name for ActiveRecord model in nested module with a parent table_name_suffix'
|
118
|
+
assert_equal 'companies', MyApplication::Business::Suffixed::Firm.table_name, 'explicit table_name for ActiveRecord model in module with table_name_suffix should not be suffixed'
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_module_table_name_suffix_with_global_suffix
|
122
|
+
classes = [ MyApplication::Business::Company,
|
123
|
+
MyApplication::Business::Firm,
|
124
|
+
MyApplication::Business::Client,
|
125
|
+
MyApplication::Business::Client::Contact,
|
126
|
+
MyApplication::Business::Developer,
|
127
|
+
MyApplication::Business::Project,
|
128
|
+
MyApplication::Business::Suffixed::Company,
|
129
|
+
MyApplication::Business::Suffixed::Nested::Company,
|
130
|
+
MyApplication::Billing::Account ]
|
131
|
+
|
132
|
+
ActiveRecord::Base.table_name_suffix = '_global'
|
133
|
+
classes.each(&:reset_table_name)
|
134
|
+
assert_equal 'companies_global', MyApplication::Business::Company.table_name, 'inferred table_name for ActiveRecord model in module without table_name_suffix'
|
135
|
+
assert_equal 'companies_suffixed', MyApplication::Business::Suffixed::Company.table_name, 'inferred table_name for ActiveRecord model in module with table_name_suffix'
|
136
|
+
assert_equal 'companies_suffixed', MyApplication::Business::Suffixed::Nested::Company.table_name, 'table_name for ActiveRecord model in nested module with a parent table_name_suffix'
|
137
|
+
assert_equal 'companies', MyApplication::Business::Suffixed::Firm.table_name, 'explicit table_name for ActiveRecord model in module with table_name_suffix should not be suffixed'
|
138
|
+
ensure
|
139
|
+
ActiveRecord::Base.table_name_suffix = ''
|
140
|
+
classes.each(&:reset_table_name)
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_compute_type_can_infer_class_name_of_sibling_inside_module
|
144
|
+
old = ActiveRecord::Base.store_full_sti_class
|
145
|
+
ActiveRecord::Base.store_full_sti_class = true
|
146
|
+
assert_equal MyApplication::Business::Firm, MyApplication::Business::Client.send(:compute_type, "Firm")
|
147
|
+
ensure
|
148
|
+
ActiveRecord::Base.store_full_sti_class = old
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_nested_models_should_not_raise_exception_when_using_delete_all_dependency_on_association
|
152
|
+
old = ActiveRecord::Base.store_full_sti_class
|
153
|
+
ActiveRecord::Base.store_full_sti_class = true
|
154
|
+
|
155
|
+
collection = Shop::Collection.first
|
156
|
+
assert !collection.products.empty?, "Collection should have products"
|
157
|
+
assert_nothing_raised { collection.destroy }
|
158
|
+
ensure
|
159
|
+
ActiveRecord::Base.store_full_sti_class = old
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_nested_models_should_not_raise_exception_when_using_nullify_dependency_on_association
|
163
|
+
old = ActiveRecord::Base.store_full_sti_class
|
164
|
+
ActiveRecord::Base.store_full_sti_class = true
|
165
|
+
|
166
|
+
product = Shop::Product.first
|
167
|
+
assert !product.variants.empty?, "Product should have variants"
|
168
|
+
assert_nothing_raised { product.destroy }
|
169
|
+
ensure
|
170
|
+
ActiveRecord::Base.store_full_sti_class = old
|
171
|
+
end
|
172
|
+
end
|