ibm_db 5.2.0-x86-mingw32 → 5.4.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 +9 -0
 - data/LICENSE +55 -18
 - data/README +1 -1
 - data/debug.log +1 -0
 - data/ext/Makefile +28 -24
 - data/ext/ibm_db.c +66 -65
 - data/ext/ibm_db.o +0 -0
 - data/ext/ibm_db.so +0 -0
 - data/ext/mkmf.log +26 -24
 - data/ext/ruby_ibm_db_cli.c +1 -0
 - data/ext/ruby_ibm_db_cli.o +0 -0
 - data/lib/active_record/connection_adapters/ibm_db_adapter.rb +1520 -1282
 - data/lib/ibm_db.so +1 -0
 - data/lib/mswin32/ibm_db.rb +3 -1
 - data/lib/mswin32/rb3x/i386/ruby30/ibm_db.so +0 -0
 - data/lib/mswin32/rb3x/i386/ruby31/ibm_db.so +0 -0
 - data/test/active_record/connection_adapters/fake_adapter.rb +5 -2
 - data/test/activejob/destroy_association_async_test.rb +305 -0
 - data/test/activejob/destroy_async_job_not_present_test.rb +31 -0
 - data/test/activejob/helper.rb +15 -0
 - data/test/assets/schema_dump_5_1.yml +345 -0
 - data/test/cases/adapter_prevent_writes_test.rb +334 -0
 - data/test/cases/adapter_test.rb +432 -218
 - data/test/cases/adapters/mysql2/active_schema_test.rb +85 -75
 - data/test/cases/adapters/mysql2/auto_increment_test.rb +34 -0
 - data/test/cases/adapters/mysql2/bind_parameter_test.rb +5 -3
 - data/test/cases/adapters/mysql2/boolean_test.rb +6 -4
 - data/test/cases/adapters/mysql2/case_sensitivity_test.rb +26 -24
 - data/test/cases/adapters/mysql2/charset_collation_test.rb +20 -17
 - data/test/cases/adapters/mysql2/connection_test.rb +48 -50
 - data/test/cases/adapters/mysql2/count_deleted_rows_with_lock_test.rb +28 -0
 - data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +23 -19
 - data/test/cases/adapters/mysql2/enum_test.rb +32 -11
 - data/test/cases/adapters/mysql2/explain_test.rb +13 -11
 - data/test/cases/adapters/mysql2/json_test.rb +17 -188
 - data/test/cases/adapters/mysql2/mysql2_adapter_prevent_writes_test.rb +208 -0
 - data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +183 -28
 - data/test/cases/adapters/mysql2/nested_deadlock_test.rb +75 -0
 - data/test/cases/adapters/mysql2/optimizer_hints_test.rb +69 -0
 - data/test/cases/adapters/mysql2/schema_migrations_test.rb +26 -21
 - data/test/cases/adapters/mysql2/schema_test.rb +24 -22
 - data/test/cases/adapters/mysql2/set_test.rb +32 -0
 - data/test/cases/adapters/mysql2/sp_test.rb +10 -8
 - data/test/cases/adapters/mysql2/sql_types_test.rb +8 -6
 - data/test/cases/adapters/mysql2/table_options_test.rb +93 -10
 - data/test/cases/adapters/mysql2/transaction_test.rb +151 -0
 - data/test/cases/adapters/mysql2/unsigned_type_test.rb +11 -9
 - data/test/cases/adapters/mysql2/virtual_column_test.rb +66 -0
 - data/test/cases/adapters/postgresql/active_schema_test.rb +40 -25
 - data/test/cases/adapters/postgresql/array_test.rb +118 -63
 - data/test/cases/adapters/postgresql/bit_string_test.rb +12 -10
 - data/test/cases/adapters/postgresql/bytea_test.rb +26 -25
 - data/test/cases/adapters/postgresql/case_insensitive_test.rb +10 -9
 - data/test/cases/adapters/postgresql/change_schema_test.rb +7 -5
 - data/test/cases/adapters/postgresql/cidr_test.rb +2 -0
 - data/test/cases/adapters/postgresql/citext_test.rb +58 -58
 - data/test/cases/adapters/postgresql/collation_test.rb +17 -15
 - data/test/cases/adapters/postgresql/composite_test.rb +25 -23
 - data/test/cases/adapters/postgresql/connection_test.rb +73 -85
 - data/test/cases/adapters/postgresql/create_unlogged_tables_test.rb +74 -0
 - data/test/cases/adapters/postgresql/datatype_test.rb +19 -22
 - data/test/cases/adapters/postgresql/date_test.rb +42 -0
 - data/test/cases/adapters/postgresql/domain_test.rb +9 -7
 - data/test/cases/adapters/postgresql/enum_test.rb +12 -10
 - data/test/cases/adapters/postgresql/explain_test.rb +10 -8
 - data/test/cases/adapters/postgresql/extension_migration_test.rb +13 -12
 - data/test/cases/adapters/postgresql/foreign_table_test.rb +109 -0
 - data/test/cases/adapters/postgresql/full_text_test.rb +8 -6
 - data/test/cases/adapters/postgresql/geometric_test.rb +57 -63
 - data/test/cases/adapters/postgresql/hstore_test.rb +288 -280
 - data/test/cases/adapters/postgresql/infinity_test.rb +54 -15
 - data/test/cases/adapters/postgresql/integer_test.rb +2 -0
 - data/test/cases/adapters/postgresql/interval_test.rb +99 -0
 - data/test/cases/adapters/postgresql/json_test.rb +16 -201
 - data/test/cases/adapters/postgresql/ltree_test.rb +14 -16
 - data/test/cases/adapters/postgresql/money_test.rb +47 -16
 - data/test/cases/adapters/postgresql/network_test.rb +36 -28
 - data/test/cases/adapters/postgresql/numbers_test.rb +7 -5
 - data/test/cases/adapters/postgresql/optimizer_hints_test.rb +71 -0
 - data/test/cases/adapters/postgresql/partitions_test.rb +22 -0
 - data/test/cases/adapters/postgresql/postgresql_adapter_prevent_writes_test.rb +205 -0
 - data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +178 -136
 - data/test/cases/adapters/postgresql/prepared_statements_disabled_test.rb +27 -0
 - data/test/cases/adapters/postgresql/quoting_test.rb +12 -6
 - data/test/cases/adapters/postgresql/range_test.rb +406 -292
 - data/test/cases/adapters/postgresql/referential_integrity_test.rb +16 -15
 - data/test/cases/adapters/postgresql/rename_table_test.rb +9 -8
 - data/test/cases/adapters/postgresql/schema_authorization_test.rb +14 -23
 - data/test/cases/adapters/postgresql/schema_test.rb +207 -91
 - data/test/cases/adapters/postgresql/serial_test.rb +9 -7
 - data/test/cases/adapters/postgresql/statement_pool_test.rb +26 -6
 - data/test/cases/adapters/postgresql/timestamp_test.rb +17 -15
 - data/test/cases/adapters/postgresql/transaction_nested_test.rb +114 -0
 - data/test/cases/adapters/postgresql/transaction_test.rb +189 -0
 - data/test/cases/adapters/postgresql/type_lookup_test.rb +12 -10
 - data/test/cases/adapters/postgresql/utils_test.rb +11 -9
 - data/test/cases/adapters/postgresql/uuid_test.rb +226 -109
 - data/test/cases/adapters/postgresql/xml_test.rb +10 -14
 - data/test/cases/adapters/sqlite3/collation_test.rb +26 -15
 - data/test/cases/adapters/sqlite3/copy_table_test.rb +31 -28
 - data/test/cases/adapters/sqlite3/explain_test.rb +13 -11
 - data/test/cases/adapters/sqlite3/json_test.rb +29 -0
 - data/test/cases/adapters/sqlite3/quoting_test.rb +35 -57
 - data/test/cases/adapters/sqlite3/sqlite3_adapter_prevent_writes_test.rb +186 -0
 - data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +318 -131
 - data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +11 -11
 - data/test/cases/adapters/sqlite3/statement_pool_test.rb +7 -6
 - data/test/cases/adapters/sqlite3/transaction_test.rb +123 -0
 - data/test/cases/aggregations_test.rb +14 -12
 - data/test/cases/annotate_test.rb +46 -0
 - data/test/cases/ar_schema_test.rb +153 -86
 - data/test/cases/arel/attributes/attribute_test.rb +1145 -0
 - data/test/cases/arel/attributes/math_test.rb +83 -0
 - data/test/cases/arel/attributes_test.rb +27 -0
 - data/test/cases/arel/collectors/bind_test.rb +40 -0
 - data/test/cases/arel/collectors/composite_test.rb +47 -0
 - data/test/cases/arel/collectors/sql_string_test.rb +41 -0
 - data/test/cases/arel/collectors/substitute_bind_collector_test.rb +48 -0
 - data/test/cases/arel/crud_test.rb +65 -0
 - data/test/cases/arel/delete_manager_test.rb +53 -0
 - data/test/cases/arel/factory_methods_test.rb +46 -0
 - data/test/cases/arel/helper.rb +45 -0
 - data/test/cases/arel/insert_manager_test.rb +241 -0
 - data/test/cases/arel/nodes/and_test.rb +30 -0
 - data/test/cases/arel/nodes/as_test.rb +36 -0
 - data/test/cases/arel/nodes/ascending_test.rb +46 -0
 - data/test/cases/arel/nodes/bin_test.rb +35 -0
 - data/test/cases/arel/nodes/binary_test.rb +29 -0
 - data/test/cases/arel/nodes/bind_param_test.rb +22 -0
 - data/test/cases/arel/nodes/case_test.rb +96 -0
 - data/test/cases/arel/nodes/casted_test.rb +18 -0
 - data/test/cases/arel/nodes/comment_test.rb +22 -0
 - data/test/cases/arel/nodes/count_test.rb +35 -0
 - data/test/cases/arel/nodes/delete_statement_test.rb +36 -0
 - data/test/cases/arel/nodes/descending_test.rb +46 -0
 - data/test/cases/arel/nodes/distinct_test.rb +21 -0
 - data/test/cases/arel/nodes/equality_test.rb +62 -0
 - data/test/cases/arel/nodes/extract_test.rb +43 -0
 - data/test/cases/arel/nodes/false_test.rb +21 -0
 - data/test/cases/arel/nodes/grouping_test.rb +26 -0
 - data/test/cases/arel/nodes/infix_operation_test.rb +42 -0
 - data/test/cases/arel/nodes/insert_statement_test.rb +44 -0
 - data/test/cases/arel/nodes/named_function_test.rb +48 -0
 - data/test/cases/arel/nodes/node_test.rb +22 -0
 - data/test/cases/arel/nodes/not_test.rb +31 -0
 - data/test/cases/arel/nodes/or_test.rb +36 -0
 - data/test/cases/arel/nodes/over_test.rb +69 -0
 - data/test/cases/arel/nodes/select_core_test.rb +79 -0
 - data/test/cases/arel/nodes/select_statement_test.rb +51 -0
 - data/test/cases/arel/nodes/sql_literal_test.rb +75 -0
 - data/test/cases/arel/nodes/sum_test.rb +35 -0
 - data/test/cases/arel/nodes/table_alias_test.rb +29 -0
 - data/test/cases/arel/nodes/true_test.rb +21 -0
 - data/test/cases/arel/nodes/unary_operation_test.rb +41 -0
 - data/test/cases/arel/nodes/update_statement_test.rb +60 -0
 - data/test/cases/arel/nodes/window_test.rb +81 -0
 - data/test/cases/arel/nodes_test.rb +34 -0
 - data/test/cases/arel/select_manager_test.rb +1238 -0
 - data/test/cases/arel/support/fake_record.rb +135 -0
 - data/test/cases/arel/table_test.rb +216 -0
 - data/test/cases/arel/update_manager_test.rb +126 -0
 - data/test/cases/arel/visitors/dispatch_contamination_test.rb +78 -0
 - data/test/cases/arel/visitors/dot_test.rb +90 -0
 - data/test/cases/arel/visitors/mysql_test.rb +157 -0
 - data/test/cases/arel/visitors/postgres_test.rb +366 -0
 - data/test/cases/arel/visitors/sqlite_test.rb +75 -0
 - data/test/cases/arel/visitors/to_sql_test.rb +750 -0
 - data/test/cases/associations/belongs_to_associations_test.rb +510 -158
 - data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +4 -2
 - data/test/cases/associations/callbacks_test.rb +56 -38
 - data/test/cases/associations/cascaded_eager_loading_test.rb +118 -61
 - data/test/cases/associations/eager_load_includes_full_sti_class_test.rb +138 -18
 - data/test/cases/associations/eager_load_nested_include_test.rb +38 -37
 - data/test/cases/associations/eager_singularization_test.rb +21 -21
 - data/test/cases/associations/eager_test.rb +559 -415
 - data/test/cases/associations/extension_test.rb +18 -12
 - data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +234 -213
 - data/test/cases/associations/has_many_associations_test.rb +1038 -465
 - data/test/cases/associations/has_many_through_associations_test.rb +558 -249
 - data/test/cases/associations/has_one_associations_test.rb +294 -129
 - data/test/cases/associations/has_one_through_associations_test.rb +121 -75
 - data/test/cases/associations/inner_join_association_test.rb +114 -38
 - data/test/cases/associations/inverse_associations_test.rb +606 -398
 - data/test/cases/associations/join_model_test.rb +158 -148
 - data/test/cases/associations/left_outer_join_association_test.rb +59 -24
 - data/test/cases/associations/nested_through_associations_test.rb +166 -109
 - data/test/cases/associations/required_test.rb +35 -10
 - data/test/cases/associations_test.rb +241 -110
 - data/test/cases/attribute_methods/read_test.rb +11 -11
 - data/test/cases/attribute_methods_test.rb +413 -298
 - data/test/cases/attributes_test.rb +145 -27
 - data/test/cases/autosave_association_test.rb +681 -436
 - data/test/cases/base_prevent_writes_test.rb +229 -0
 - data/test/cases/base_test.rb +599 -542
 - data/test/cases/batches_test.rb +288 -82
 - data/test/cases/binary_test.rb +26 -31
 - data/test/cases/bind_parameter_test.rb +194 -21
 - data/test/cases/boolean_test.rb +52 -0
 - data/test/cases/cache_key_test.rb +110 -5
 - data/test/cases/calculations_test.rb +740 -177
 - data/test/cases/callbacks_test.rb +74 -207
 - data/test/cases/clone_test.rb +15 -10
 - data/test/cases/coders/json_test.rb +2 -0
 - data/test/cases/coders/yaml_column_test.rb +16 -13
 - data/test/cases/collection_cache_key_test.rb +177 -20
 - data/test/cases/column_alias_test.rb +9 -7
 - data/test/cases/column_definition_test.rb +10 -68
 - data/test/cases/comment_test.rb +166 -107
 - data/test/cases/connection_adapters/adapter_leasing_test.rb +14 -10
 - data/test/cases/connection_adapters/connection_handler_test.rb +358 -51
 - data/test/cases/connection_adapters/connection_handlers_multi_db_test.rb +400 -0
 - data/test/cases/connection_adapters/connection_handlers_multi_pool_config_test.rb +103 -0
 - data/test/cases/connection_adapters/connection_handlers_sharding_db_test.rb +499 -0
 - data/test/cases/connection_adapters/connection_swapping_nested_test.rb +457 -0
 - data/test/cases/connection_adapters/legacy_connection_handlers_multi_db_test.rb +486 -0
 - data/test/cases/connection_adapters/legacy_connection_handlers_sharding_db_test.rb +586 -0
 - data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +319 -138
 - data/test/cases/connection_adapters/mysql_type_lookup_test.rb +62 -50
 - data/test/cases/connection_adapters/schema_cache_test.rb +259 -26
 - data/test/cases/connection_adapters/type_lookup_test.rb +96 -95
 - data/test/cases/connection_management_test.rb +13 -11
 - data/test/cases/connection_pool_test.rb +316 -83
 - data/test/cases/core_test.rb +82 -58
 - data/test/cases/counter_cache_test.rb +204 -50
 - data/test/cases/custom_locking_test.rb +5 -3
 - data/test/cases/database_configurations/hash_config_test.rb +74 -0
 - data/test/cases/database_configurations/resolver_test.rb +150 -0
 - data/test/cases/database_configurations_test.rb +145 -0
 - data/test/cases/database_selector_test.rb +296 -0
 - data/test/cases/database_statements_test.rb +18 -16
 - data/test/cases/date_test.rb +8 -16
 - data/test/cases/date_time_precision_test.rb +100 -78
 - data/test/cases/date_time_test.rb +23 -8
 - data/test/cases/defaults_test.rb +106 -71
 - data/test/cases/delegated_type_test.rb +57 -0
 - data/test/cases/dirty_test.rb +419 -223
 - data/test/cases/disconnected_test.rb +6 -6
 - data/test/cases/dup_test.rb +54 -27
 - data/test/cases/enum_test.rb +461 -82
 - data/test/cases/errors_test.rb +7 -7
 - data/test/cases/explain_subscriber_test.rb +17 -15
 - data/test/cases/explain_test.rb +11 -19
 - data/test/cases/filter_attributes_test.rb +153 -0
 - data/test/cases/finder_respond_to_test.rb +14 -14
 - data/test/cases/finder_test.rb +669 -287
 - data/test/cases/fixture_set/file_test.rb +34 -38
 - data/test/cases/fixtures_test.rb +833 -176
 - data/test/cases/forbidden_attributes_protection_test.rb +32 -67
 - data/test/cases/habtm_destroy_order_test.rb +25 -25
 - data/test/cases/helper.rb +78 -49
 - data/test/cases/hot_compatibility_test.rb +33 -32
 - data/test/cases/i18n_test.rb +18 -17
 - data/test/cases/inheritance_test.rb +180 -115
 - data/test/cases/insert_all_test.rb +489 -0
 - data/test/cases/instrumentation_test.rb +101 -0
 - data/test/cases/integration_test.rb +119 -31
 - data/test/cases/invalid_connection_test.rb +18 -16
 - data/test/cases/invertible_migration_test.rb +183 -43
 - data/test/cases/json_attribute_test.rb +35 -0
 - data/test/cases/json_serialization_test.rb +57 -58
 - data/test/cases/json_shared_test_cases.rb +290 -0
 - data/test/cases/locking_test.rb +413 -119
 - data/test/cases/log_subscriber_test.rb +68 -26
 - data/test/cases/marshal_serialization_test.rb +39 -0
 - data/test/cases/migration/change_schema_test.rb +118 -72
 - data/test/cases/migration/change_table_test.rb +138 -30
 - data/test/cases/migration/check_constraint_test.rb +162 -0
 - data/test/cases/migration/column_attributes_test.rb +45 -35
 - data/test/cases/migration/column_positioning_test.rb +18 -6
 - data/test/cases/migration/columns_test.rb +93 -77
 - data/test/cases/migration/command_recorder_test.rb +121 -34
 - data/test/cases/migration/compatibility_test.rb +578 -23
 - data/test/cases/migration/create_join_table_test.rb +35 -25
 - data/test/cases/migration/foreign_key_test.rb +503 -284
 - data/test/cases/migration/helper.rb +4 -3
 - data/test/cases/migration/index_test.rb +119 -70
 - data/test/cases/migration/logger_test.rb +9 -6
 - data/test/cases/migration/pending_migrations_test.rb +88 -34
 - data/test/cases/migration/references_foreign_key_test.rb +164 -150
 - data/test/cases/migration/references_index_test.rb +38 -19
 - data/test/cases/migration/references_statements_test.rb +15 -14
 - data/test/cases/migration/rename_table_test.rb +53 -30
 - data/test/cases/migration_test.rb +637 -269
 - data/test/cases/migrator_test.rb +191 -135
 - data/test/cases/mixin_test.rb +7 -11
 - data/test/cases/modules_test.rb +36 -34
 - data/test/cases/multi_db_migrator_test.rb +223 -0
 - data/test/cases/multiparameter_attributes_test.rb +60 -33
 - data/test/cases/multiple_db_test.rb +16 -22
 - data/test/cases/nested_attributes_test.rb +341 -320
 - data/test/cases/nested_attributes_with_callbacks_test.rb +26 -24
 - data/test/cases/null_relation_test.rb +84 -0
 - data/test/cases/numeric_data_test.rb +93 -0
 - data/test/cases/persistence_test.rb +361 -269
 - data/test/cases/pooled_connections_test.rb +18 -26
 - data/test/cases/prepared_statement_status_test.rb +48 -0
 - data/test/cases/primary_keys_test.rb +210 -104
 - data/test/cases/query_cache_test.rb +610 -141
 - data/test/cases/quoting_test.rb +132 -31
 - data/test/cases/readonly_test.rb +49 -48
 - data/test/cases/reaper_test.rb +146 -32
 - data/test/cases/reflection_test.rb +167 -156
 - data/test/cases/relation/delegation_test.rb +49 -36
 - data/test/cases/relation/delete_all_test.rb +117 -0
 - data/test/cases/relation/merging_test.rb +319 -42
 - data/test/cases/relation/mutation_test.rb +55 -93
 - data/test/cases/relation/or_test.rb +129 -29
 - data/test/cases/relation/predicate_builder_test.rb +21 -6
 - data/test/cases/relation/record_fetch_warning_test.rb +5 -3
 - data/test/cases/relation/select_test.rb +67 -0
 - data/test/cases/relation/update_all_test.rb +317 -0
 - data/test/cases/relation/where_chain_test.rb +68 -32
 - data/test/cases/relation/where_clause_test.rb +136 -61
 - data/test/cases/relation/where_test.rb +155 -48
 - data/test/cases/relation_test.rb +266 -112
 - data/test/cases/relations_test.rb +969 -744
 - data/test/cases/reload_models_test.rb +13 -9
 - data/test/cases/reserved_word_test.rb +141 -0
 - data/test/cases/result_test.rb +68 -17
 - data/test/cases/sanitize_test.rb +87 -71
 - data/test/cases/schema_dumper_test.rb +221 -128
 - data/test/cases/schema_loading_test.rb +3 -2
 - data/test/cases/scoping/default_scoping_test.rb +185 -144
 - data/test/cases/scoping/named_scoping_test.rb +177 -89
 - data/test/cases/scoping/relation_scoping_test.rb +197 -75
 - data/test/cases/secure_token_test.rb +18 -3
 - data/test/cases/serialization_test.rb +30 -28
 - data/test/cases/serialized_attribute_test.rb +133 -42
 - data/test/cases/signed_id_test.rb +168 -0
 - data/test/cases/statement_cache_test.rb +41 -24
 - data/test/cases/statement_invalid_test.rb +42 -0
 - data/test/cases/store_test.rb +180 -55
 - data/test/cases/strict_loading_test.rb +473 -0
 - data/test/cases/suppressor_test.rb +26 -12
 - data/test/cases/tasks/database_tasks_test.rb +1258 -194
 - data/test/cases/tasks/mysql_rake_test.rb +370 -298
 - data/test/cases/tasks/postgresql_rake_test.rb +481 -251
 - data/test/cases/tasks/sqlite_rake_test.rb +225 -178
 - data/test/cases/test_case.rb +51 -40
 - data/test/cases/test_databases_test.rb +79 -0
 - data/test/cases/test_fixtures_test.rb +79 -19
 - data/test/cases/time_precision_test.rb +98 -76
 - data/test/cases/timestamp_test.rb +102 -99
 - data/test/cases/touch_later_test.rb +12 -10
 - data/test/cases/transaction_callbacks_test.rb +344 -90
 - data/test/cases/transaction_isolation_test.rb +12 -12
 - data/test/cases/transactions_test.rb +612 -162
 - data/test/cases/type/adapter_specific_registry_test.rb +14 -2
 - data/test/cases/type/date_time_test.rb +4 -2
 - data/test/cases/type/integer_test.rb +4 -2
 - data/test/cases/type/string_test.rb +10 -8
 - data/test/cases/type/time_test.rb +28 -0
 - data/test/cases/type/type_map_test.rb +29 -28
 - data/test/cases/type/unsigned_integer_test.rb +19 -0
 - data/test/cases/type_test.rb +2 -0
 - data/test/cases/types_test.rb +3 -1
 - data/test/cases/unconnected_test.rb +14 -1
 - data/test/cases/unsafe_raw_sql_test.rb +274 -0
 - data/test/cases/validations/absence_validation_test.rb +19 -17
 - data/test/cases/validations/association_validation_test.rb +30 -28
 - data/test/cases/validations/i18n_generate_message_validation_test.rb +34 -16
 - data/test/cases/validations/i18n_validation_test.rb +22 -21
 - data/test/cases/validations/length_validation_test.rb +34 -33
 - data/test/cases/validations/numericality_validation_test.rb +181 -0
 - data/test/cases/validations/presence_validation_test.rb +21 -19
 - data/test/cases/validations/uniqueness_validation_test.rb +156 -86
 - data/test/cases/validations_repair_helper.rb +2 -0
 - data/test/cases/validations_test.rb +61 -26
 - data/test/cases/view_test.rb +122 -116
 - data/test/cases/yaml_serialization_test.rb +79 -34
 - data/test/config.example.yml +19 -19
 - data/test/config.rb +3 -1
 - data/test/config.yml +16 -6
 - data/test/fixtures/all/namespaced/accounts.yml +2 -0
 - data/test/fixtures/author_addresses.yml +1 -8
 - data/test/fixtures/authors.yml +1 -7
 - data/test/fixtures/binaries.yml +4 -0
 - data/test/fixtures/books.yml +9 -2
 - data/test/fixtures/categories_posts.yml +3 -0
 - data/test/fixtures/citations.yml +5 -0
 - data/test/fixtures/comments.yml +7 -0
 - data/test/fixtures/companies.yml +5 -0
 - data/test/fixtures/computers.yml +2 -0
 - data/test/fixtures/customers.yml +10 -1
 - data/test/fixtures/developers.yml +1 -1
 - data/test/fixtures/essays.yml +10 -0
 - data/test/fixtures/faces.yml +3 -3
 - data/test/fixtures/humans.yml +5 -0
 - data/test/fixtures/interests.yml +7 -7
 - data/test/fixtures/memberships.yml +7 -0
 - data/test/fixtures/minimalistics.yml +3 -0
 - data/test/fixtures/mixed_case_monkeys.yml +2 -2
 - data/test/fixtures/naked/yml/courses_with_invalid_key.yml +3 -0
 - data/test/fixtures/naked/yml/parrots.yml +1 -0
 - data/test/fixtures/other_books.yml +26 -0
 - data/test/fixtures/other_posts.yml +1 -0
 - data/test/fixtures/parrots.yml +7 -1
 - data/test/fixtures/pirates.yml +3 -0
 - data/test/fixtures/posts.yml +11 -3
 - data/test/fixtures/readers.yml +6 -0
 - data/test/fixtures/reserved_words/values.yml +2 -2
 - data/test/fixtures/sponsors.yml +3 -0
 - data/test/fixtures/strict_zines.yml +2 -0
 - data/test/fixtures/subscribers.yml +1 -1
 - data/test/fixtures/tasks.yml +1 -1
 - data/test/fixtures/warehouse-things.yml +3 -0
 - data/test/migrations/10_urban/9_add_expressions.rb +2 -0
 - data/test/migrations/decimal/1_give_me_big_numbers.rb +6 -4
 - data/test/migrations/magic/1_currencies_have_symbols.rb +3 -2
 - data/test/migrations/missing/1000_people_have_middle_names.rb +2 -0
 - data/test/migrations/missing/1_people_have_last_names.rb +2 -0
 - data/test/migrations/missing/3_we_need_reminders.rb +2 -0
 - data/test/migrations/missing/4_innocent_jointable.rb +3 -1
 - data/test/migrations/rename/1_we_need_things.rb +2 -0
 - data/test/migrations/rename/2_rename_things.rb +2 -0
 - data/test/migrations/to_copy/1_people_have_hobbies.rb +3 -1
 - data/test/migrations/to_copy/2_people_have_descriptions.rb +3 -1
 - data/test/migrations/to_copy2/1_create_articles.rb +2 -0
 - data/test/migrations/to_copy2/2_create_comments.rb +3 -1
 - data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +3 -1
 - data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +3 -1
 - data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +3 -1
 - data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +2 -0
 - data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +2 -0
 - data/test/migrations/valid/1_valid_people_have_last_names.rb +2 -0
 - data/test/migrations/valid/2_we_need_reminders.rb +2 -0
 - data/test/migrations/valid/3_innocent_jointable.rb +3 -1
 - data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +2 -0
 - data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +2 -0
 - data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +3 -1
 - data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +2 -0
 - data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +2 -0
 - data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +3 -1
 - data/test/migrations/version_check/20131219224947_migration_version_check.rb +2 -0
 - data/test/models/account.rb +46 -0
 - data/test/models/admin/account.rb +3 -1
 - data/test/models/admin/randomly_named_c1.rb +2 -0
 - data/test/models/admin/user.rb +16 -8
 - data/test/models/admin.rb +4 -2
 - data/test/models/aircraft.rb +3 -1
 - data/test/models/arunit2_model.rb +2 -0
 - data/test/models/author.rb +153 -102
 - data/test/models/auto_id.rb +2 -0
 - data/test/models/autoloadable/extra_firm.rb +2 -0
 - data/test/models/binary.rb +3 -1
 - data/test/models/binary_field.rb +6 -0
 - data/test/models/bird.rb +13 -1
 - data/test/models/book.rb +14 -4
 - data/test/models/book_destroy_async.rb +24 -0
 - data/test/models/boolean.rb +5 -0
 - data/test/models/bulb.rb +13 -4
 - data/test/models/cake_designer.rb +2 -0
 - data/test/models/car.rb +17 -10
 - data/test/models/carrier.rb +2 -0
 - data/test/models/cart.rb +5 -0
 - data/test/models/cat.rb +2 -0
 - data/test/models/categorization.rb +8 -6
 - data/test/models/category.rb +28 -16
 - data/test/models/chef.rb +2 -0
 - data/test/models/citation.rb +5 -1
 - data/test/models/club.rb +13 -10
 - data/test/models/college.rb +4 -2
 - data/test/models/column.rb +2 -0
 - data/test/models/column_name.rb +2 -0
 - data/test/models/comment.rb +32 -10
 - data/test/models/company.rb +102 -106
 - data/test/models/company_in_module.rb +27 -26
 - data/test/models/computer.rb +3 -1
 - data/test/models/contact.rb +15 -13
 - data/test/models/content.rb +5 -3
 - data/test/models/contract.rb +21 -3
 - data/test/models/country.rb +2 -4
 - data/test/models/course.rb +3 -1
 - data/test/models/customer.rb +10 -8
 - data/test/models/customer_carrier.rb +2 -0
 - data/test/models/dashboard.rb +2 -0
 - data/test/models/default.rb +2 -0
 - data/test/models/department.rb +2 -0
 - data/test/models/destroy_async_parent.rb +15 -0
 - data/test/models/destroy_async_parent_soft_delete.rb +20 -0
 - data/test/models/developer.rb +152 -85
 - data/test/models/dl_keyed_belongs_to.rb +13 -0
 - data/test/models/dl_keyed_belongs_to_soft_delete.rb +19 -0
 - data/test/models/dl_keyed_has_many.rb +5 -0
 - data/test/models/dl_keyed_has_many_through.rb +5 -0
 - data/test/models/dl_keyed_has_one.rb +5 -0
 - data/test/models/dl_keyed_join.rb +10 -0
 - data/test/models/dog.rb +2 -0
 - data/test/models/dog_lover.rb +2 -0
 - data/test/models/doubloon.rb +3 -1
 - data/test/models/drink_designer.rb +17 -0
 - data/test/models/edge.rb +4 -2
 - data/test/models/electron.rb +2 -0
 - data/test/models/engine.rb +3 -2
 - data/test/models/entrant.rb +2 -0
 - data/test/models/entry.rb +5 -0
 - data/test/models/essay.rb +6 -3
 - data/test/models/essay_destroy_async.rb +12 -0
 - data/test/models/event.rb +3 -1
 - data/test/models/eye.rb +5 -3
 - data/test/models/face.rb +14 -6
 - data/test/models/family.rb +6 -0
 - data/test/models/family_tree.rb +6 -0
 - data/test/models/friendship.rb +5 -3
 - data/test/models/frog.rb +8 -0
 - data/test/models/guid.rb +3 -1
 - data/test/models/guitar.rb +2 -0
 - data/test/models/hotel.rb +5 -3
 - data/test/models/human.rb +39 -0
 - data/test/models/image.rb +3 -1
 - data/test/models/interest.rb +14 -3
 - data/test/models/invoice.rb +4 -2
 - data/test/models/item.rb +3 -1
 - data/test/models/job.rb +5 -3
 - data/test/models/joke.rb +4 -2
 - data/test/models/keyboard.rb +3 -1
 - data/test/models/legacy_thing.rb +2 -0
 - data/test/models/lesson.rb +2 -0
 - data/test/models/line_item.rb +3 -1
 - data/test/models/liquid.rb +2 -0
 - data/test/models/matey.rb +3 -1
 - data/test/models/measurement.rb +4 -0
 - data/test/models/member.rb +23 -20
 - data/test/models/member_detail.rb +3 -0
 - data/test/models/member_type.rb +2 -0
 - data/test/models/membership.rb +4 -1
 - data/test/models/mentor.rb +3 -1
 - data/test/models/message.rb +5 -0
 - data/test/models/minimalistic.rb +2 -0
 - data/test/models/minivan.rb +3 -2
 - data/test/models/mixed_case_monkey.rb +3 -1
 - data/test/models/molecule.rb +2 -0
 - data/test/models/mouse.rb +6 -0
 - data/test/models/movie.rb +2 -0
 - data/test/models/node.rb +4 -2
 - data/test/models/non_primary_key.rb +2 -0
 - data/test/models/notification.rb +2 -0
 - data/test/models/numeric_data.rb +12 -0
 - data/test/models/order.rb +4 -2
 - data/test/models/organization.rb +9 -7
 - data/test/models/other_dog.rb +3 -1
 - data/test/models/owner.rb +6 -4
 - data/test/models/parrot.rb +12 -4
 - data/test/models/person.rb +59 -54
 - data/test/models/personal_legacy_thing.rb +3 -1
 - data/test/models/pet.rb +4 -2
 - data/test/models/pet_treasure.rb +2 -0
 - data/test/models/pirate.rb +67 -43
 - data/test/models/possession.rb +3 -1
 - data/test/models/post.rb +184 -86
 - data/test/models/price_estimate.rb +11 -1
 - data/test/models/professor.rb +3 -1
 - data/test/models/project.rb +14 -12
 - data/test/models/publisher/article.rb +2 -0
 - data/test/models/publisher/magazine.rb +2 -0
 - data/test/models/publisher.rb +2 -0
 - data/test/models/randomly_named_c1.rb +2 -0
 - data/test/models/rating.rb +5 -1
 - data/test/models/reader.rb +7 -5
 - data/test/models/recipe.rb +2 -0
 - data/test/models/record.rb +2 -0
 - data/test/models/reference.rb +6 -3
 - data/test/models/reply.rb +39 -21
 - data/test/models/room.rb +6 -0
 - data/test/models/section.rb +6 -0
 - data/test/models/seminar.rb +6 -0
 - data/test/models/session.rb +6 -0
 - data/test/models/ship.rb +12 -9
 - data/test/models/ship_part.rb +5 -3
 - data/test/models/shop.rb +4 -2
 - data/test/models/shop_account.rb +2 -0
 - data/test/models/speedometer.rb +2 -0
 - data/test/models/sponsor.rb +8 -5
 - data/test/models/squeak.rb +6 -0
 - data/test/models/strict_zine.rb +7 -0
 - data/test/models/string_key_object.rb +2 -0
 - data/test/models/student.rb +2 -0
 - data/test/models/subscriber.rb +4 -2
 - data/test/models/subscription.rb +5 -1
 - data/test/models/tag.rb +6 -3
 - data/test/models/tagging.rb +13 -6
 - data/test/models/task.rb +2 -0
 - data/test/models/topic.rb +54 -19
 - data/test/models/toy.rb +4 -0
 - data/test/models/traffic_light.rb +2 -0
 - data/test/models/treasure.rb +5 -3
 - data/test/models/treaty.rb +2 -4
 - data/test/models/tree.rb +2 -0
 - data/test/models/tuning_peg.rb +2 -0
 - data/test/models/tyre.rb +2 -0
 - data/test/models/user.rb +12 -4
 - data/test/models/uuid_child.rb +2 -0
 - data/test/models/uuid_item.rb +2 -0
 - data/test/models/uuid_parent.rb +2 -0
 - data/test/models/vegetables.rb +12 -3
 - data/test/models/vertex.rb +6 -4
 - data/test/models/warehouse_thing.rb +2 -0
 - data/test/models/wheel.rb +3 -1
 - data/test/models/without_table.rb +3 -1
 - data/test/models/zine.rb +3 -1
 - data/test/schema/mysql2_specific_schema.rb +49 -35
 - data/test/schema/oracle_specific_schema.rb +13 -15
 - data/test/schema/postgresql_specific_schema.rb +51 -40
 - data/test/schema/schema.rb +334 -154
 - data/test/schema/sqlite_specific_schema.rb +9 -16
 - data/test/support/config.rb +26 -26
 - data/test/support/connection.rb +14 -8
 - data/test/support/connection_helper.rb +3 -1
 - data/test/support/ddl_helper.rb +2 -0
 - data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/IBM_DB/rails_6_0_topic_associations.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/Mysql2/rails_6_0_topic_associations.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/PostgreSQL/rails_6_0_topic_associations.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/SQLite/rails_6_0_topic_associations.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/legacy_6_0_record_mysql.dump +0 -0
 - data/test/support/marshal_compatibility_fixtures/legacy_relation.dump +0 -0
 - data/test/support/schema_dumping_helper.rb +2 -0
 - data/test/support/stubs/strong_parameters.rb +40 -0
 - data/test/support/yaml_compatibility_fixtures/rails_v1_mysql.yml +206 -0
 - data/test/support/yaml_compatibility_fixtures/rails_v2.yml +55 -0
 - metadata +192 -14
 
| 
         @@ -1,14 +1,16 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            require  
     | 
| 
       4 
     | 
    
         
            -
            require  
     | 
| 
       5 
     | 
    
         
            -
            require  
     | 
| 
       6 
     | 
    
         
            -
            require  
     | 
| 
       7 
     | 
    
         
            -
            require  
     | 
| 
       8 
     | 
    
         
            -
            require  
     | 
| 
       9 
     | 
    
         
            -
            require  
     | 
| 
       10 
     | 
    
         
            -
            require  
     | 
| 
       11 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            # frozen_string_literal: true
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "cases/helper"
         
     | 
| 
      
 4 
     | 
    
         
            +
            require "models/author"
         
     | 
| 
      
 5 
     | 
    
         
            +
            require "models/company"
         
     | 
| 
      
 6 
     | 
    
         
            +
            require "models/membership"
         
     | 
| 
      
 7 
     | 
    
         
            +
            require "models/person"
         
     | 
| 
      
 8 
     | 
    
         
            +
            require "models/post"
         
     | 
| 
      
 9 
     | 
    
         
            +
            require "models/project"
         
     | 
| 
      
 10 
     | 
    
         
            +
            require "models/subscriber"
         
     | 
| 
      
 11 
     | 
    
         
            +
            require "models/vegetables"
         
     | 
| 
      
 12 
     | 
    
         
            +
            require "models/shop"
         
     | 
| 
      
 13 
     | 
    
         
            +
            require "models/sponsor"
         
     | 
| 
       12 
14 
     | 
    
         | 
| 
       13 
15 
     | 
    
         
             
            module InheritanceTestHelper
         
     | 
| 
       14 
16 
     | 
    
         
             
              def with_store_full_sti_class(&block)
         
     | 
| 
         @@ -34,7 +36,7 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       34 
36 
     | 
    
         | 
| 
       35 
37 
     | 
    
         
             
              def test_class_with_store_full_sti_class_returns_full_name
         
     | 
| 
       36 
38 
     | 
    
         
             
                with_store_full_sti_class do
         
     | 
| 
       37 
     | 
    
         
            -
                  assert_equal  
     | 
| 
      
 39 
     | 
    
         
            +
                  assert_equal "Namespaced::Company", Namespaced::Company.sti_name
         
     | 
| 
       38 
40 
     | 
    
         
             
                end
         
     | 
| 
       39 
41 
     | 
    
         
             
              end
         
     | 
| 
       40 
42 
     | 
    
         | 
| 
         @@ -43,37 +45,37 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       43 
45 
     | 
    
         
             
                company = company.dup
         
     | 
| 
       44 
46 
     | 
    
         
             
                company.extend(Module.new {
         
     | 
| 
       45 
47 
     | 
    
         
             
                  def _read_attribute(name)
         
     | 
| 
       46 
     | 
    
         
            -
                    return  
     | 
| 
      
 48 
     | 
    
         
            +
                    return "  " if name == "type"
         
     | 
| 
       47 
49 
     | 
    
         
             
                    super
         
     | 
| 
       48 
50 
     | 
    
         
             
                  end
         
     | 
| 
       49 
51 
     | 
    
         
             
                })
         
     | 
| 
       50 
52 
     | 
    
         
             
                company.save!
         
     | 
| 
       51 
53 
     | 
    
         
             
                company = Company.all.to_a.find { |x| x.id == company.id }
         
     | 
| 
       52 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 54 
     | 
    
         
            +
                assert_equal "  ", company.type
         
     | 
| 
       53 
55 
     | 
    
         
             
              end
         
     | 
| 
       54 
56 
     | 
    
         | 
| 
       55 
57 
     | 
    
         
             
              def test_class_without_store_full_sti_class_returns_demodulized_name
         
     | 
| 
       56 
58 
     | 
    
         
             
                without_store_full_sti_class do
         
     | 
| 
       57 
     | 
    
         
            -
                  assert_equal  
     | 
| 
      
 59 
     | 
    
         
            +
                  assert_equal "Company", Namespaced::Company.sti_name
         
     | 
| 
       58 
60 
     | 
    
         
             
                end
         
     | 
| 
       59 
61 
     | 
    
         
             
              end
         
     | 
| 
       60 
62 
     | 
    
         | 
| 
       61 
63 
     | 
    
         
             
              def test_compute_type_success
         
     | 
| 
       62 
     | 
    
         
            -
                assert_equal Author,  
     | 
| 
      
 64 
     | 
    
         
            +
                assert_equal Author, Company.send(:compute_type, "Author")
         
     | 
| 
       63 
65 
     | 
    
         
             
              end
         
     | 
| 
       64 
66 
     | 
    
         | 
| 
       65 
67 
     | 
    
         
             
              def test_compute_type_nonexistent_constant
         
     | 
| 
       66 
68 
     | 
    
         
             
                e = assert_raises NameError do
         
     | 
| 
       67 
     | 
    
         
            -
                   
     | 
| 
      
 69 
     | 
    
         
            +
                  Company.send :compute_type, "NonexistentModel"
         
     | 
| 
       68 
70 
     | 
    
         
             
                end
         
     | 
| 
       69 
     | 
    
         
            -
                 
     | 
| 
       70 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 71 
     | 
    
         
            +
                assert_match "uninitialized constant Company::NonexistentModel", e.message
         
     | 
| 
      
 72 
     | 
    
         
            +
                assert_equal "Company::NonexistentModel", e.name
         
     | 
| 
       71 
73 
     | 
    
         
             
              end
         
     | 
| 
       72 
74 
     | 
    
         | 
| 
       73 
75 
     | 
    
         
             
              def test_compute_type_no_method_error
         
     | 
| 
       74 
     | 
    
         
            -
                ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise NoMethodError }) do
         
     | 
| 
      
 76 
     | 
    
         
            +
                ActiveSupport::Dependencies.stub(:safe_constantize, proc { raise NoMethodError }) do
         
     | 
| 
       75 
77 
     | 
    
         
             
                  assert_raises NoMethodError do
         
     | 
| 
       76 
     | 
    
         
            -
                     
     | 
| 
      
 78 
     | 
    
         
            +
                    Company.send :compute_type, "InvalidModel"
         
     | 
| 
       77 
79 
     | 
    
         
             
                  end
         
     | 
| 
       78 
80 
     | 
    
         
             
                end
         
     | 
| 
       79 
81 
     | 
    
         
             
              end
         
     | 
| 
         @@ -88,19 +90,18 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       88 
90 
     | 
    
         
             
                  error = e
         
     | 
| 
       89 
91 
     | 
    
         
             
                end
         
     | 
| 
       90 
92 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
                ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise e }) do
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
                ActiveSupport::Dependencies.stub(:safe_constantize, proc { raise e }) do
         
     | 
| 
       93 
94 
     | 
    
         
             
                  exception = assert_raises NameError do
         
     | 
| 
       94 
     | 
    
         
            -
                     
     | 
| 
      
 95 
     | 
    
         
            +
                    Company.send :compute_type, "InvalidModel"
         
     | 
| 
       95 
96 
     | 
    
         
             
                  end
         
     | 
| 
       96 
97 
     | 
    
         
             
                  assert_equal error.message, exception.message
         
     | 
| 
       97 
98 
     | 
    
         
             
                end
         
     | 
| 
       98 
99 
     | 
    
         
             
              end
         
     | 
| 
       99 
100 
     | 
    
         | 
| 
       100 
101 
     | 
    
         
             
              def test_compute_type_argument_error
         
     | 
| 
       101 
     | 
    
         
            -
                ActiveSupport::Dependencies.stub(:safe_constantize, proc{ raise ArgumentError }) do
         
     | 
| 
      
 102 
     | 
    
         
            +
                ActiveSupport::Dependencies.stub(:safe_constantize, proc { raise ArgumentError }) do
         
     | 
| 
       102 
103 
     | 
    
         
             
                  assert_raises ArgumentError do
         
     | 
| 
       103 
     | 
    
         
            -
                     
     | 
| 
      
 104 
     | 
    
         
            +
                    Company.send :compute_type, "InvalidModel"
         
     | 
| 
       104 
105 
     | 
    
         
             
                  end
         
     | 
| 
       105 
106 
     | 
    
         
             
                end
         
     | 
| 
       106 
107 
     | 
    
         
             
              end
         
     | 
| 
         @@ -108,14 +109,14 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       108 
109 
     | 
    
         
             
              def test_should_store_demodulized_class_name_with_store_full_sti_class_option_disabled
         
     | 
| 
       109 
110 
     | 
    
         
             
                without_store_full_sti_class do
         
     | 
| 
       110 
111 
     | 
    
         
             
                  item = Namespaced::Company.new
         
     | 
| 
       111 
     | 
    
         
            -
                  assert_equal  
     | 
| 
      
 112 
     | 
    
         
            +
                  assert_equal "Company", item[:type]
         
     | 
| 
       112 
113 
     | 
    
         
             
                end
         
     | 
| 
       113 
114 
     | 
    
         
             
              end
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
116 
     | 
    
         
             
              def test_should_store_full_class_name_with_store_full_sti_class_option_enabled
         
     | 
| 
       116 
117 
     | 
    
         
             
                with_store_full_sti_class do
         
     | 
| 
       117 
118 
     | 
    
         
             
                  item = Namespaced::Company.new
         
     | 
| 
       118 
     | 
    
         
            -
                  assert_equal  
     | 
| 
      
 119 
     | 
    
         
            +
                  assert_equal "Namespaced::Company", item[:type]
         
     | 
| 
       119 
120 
     | 
    
         
             
                end
         
     | 
| 
       120 
121 
     | 
    
         
             
              end
         
     | 
| 
       121 
122 
     | 
    
         | 
| 
         @@ -128,56 +129,70 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       128 
129 
     | 
    
         
             
              end
         
     | 
| 
       129 
130 
     | 
    
         | 
| 
       130 
131 
     | 
    
         
             
              def test_descends_from_active_record
         
     | 
| 
       131 
     | 
    
         
            -
                 
     | 
| 
      
 132 
     | 
    
         
            +
                assert_not_predicate ActiveRecord::Base, :descends_from_active_record?
         
     | 
| 
       132 
133 
     | 
    
         | 
| 
       133 
134 
     | 
    
         
             
                # Abstract subclass of AR::Base.
         
     | 
| 
       134 
     | 
    
         
            -
                 
     | 
| 
      
 135 
     | 
    
         
            +
                assert_predicate LoosePerson, :descends_from_active_record?
         
     | 
| 
       135 
136 
     | 
    
         | 
| 
       136 
137 
     | 
    
         
             
                # Concrete subclass of an abstract class.
         
     | 
| 
       137 
     | 
    
         
            -
                 
     | 
| 
      
 138 
     | 
    
         
            +
                assert_predicate LooseDescendant, :descends_from_active_record?
         
     | 
| 
       138 
139 
     | 
    
         | 
| 
       139 
140 
     | 
    
         
             
                # Concrete subclass of AR::Base.
         
     | 
| 
       140 
     | 
    
         
            -
                 
     | 
| 
      
 141 
     | 
    
         
            +
                assert_predicate TightPerson, :descends_from_active_record?
         
     | 
| 
       141 
142 
     | 
    
         | 
| 
       142 
143 
     | 
    
         
             
                # Concrete subclass of a concrete class but has no type column.
         
     | 
| 
       143 
     | 
    
         
            -
                 
     | 
| 
      
 144 
     | 
    
         
            +
                assert_predicate TightDescendant, :descends_from_active_record?
         
     | 
| 
       144 
145 
     | 
    
         | 
| 
       145 
146 
     | 
    
         
             
                # Concrete subclass of AR::Base.
         
     | 
| 
       146 
     | 
    
         
            -
                 
     | 
| 
      
 147 
     | 
    
         
            +
                assert_predicate Post, :descends_from_active_record?
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                # Concrete subclasses of a concrete class which has a type column.
         
     | 
| 
      
 150 
     | 
    
         
            +
                assert_not_predicate StiPost, :descends_from_active_record?
         
     | 
| 
      
 151 
     | 
    
         
            +
                assert_not_predicate SubStiPost, :descends_from_active_record?
         
     | 
| 
       147 
152 
     | 
    
         | 
| 
       148 
153 
     | 
    
         
             
                # Abstract subclass of a concrete class which has a type column.
         
     | 
| 
       149 
154 
     | 
    
         
             
                # This is pathological, as you'll never have Sub < Abstract < Concrete.
         
     | 
| 
       150 
     | 
    
         
            -
                 
     | 
| 
      
 155 
     | 
    
         
            +
                assert_not_predicate AbstractStiPost, :descends_from_active_record?
         
     | 
| 
       151 
156 
     | 
    
         | 
| 
       152 
     | 
    
         
            -
                # Concrete  
     | 
| 
       153 
     | 
    
         
            -
                 
     | 
| 
      
 157 
     | 
    
         
            +
                # Concrete subclass of an abstract class which has a type column.
         
     | 
| 
      
 158 
     | 
    
         
            +
                assert_not_predicate SubAbstractStiPost, :descends_from_active_record?
         
     | 
| 
       154 
159 
     | 
    
         
             
              end
         
     | 
| 
       155 
160 
     | 
    
         | 
| 
       156 
161 
     | 
    
         
             
              def test_company_descends_from_active_record
         
     | 
| 
       157 
     | 
    
         
            -
                 
     | 
| 
       158 
     | 
    
         
            -
                assert AbstractCompany.descends_from_active_record?,  
     | 
| 
       159 
     | 
    
         
            -
                assert Company.descends_from_active_record?,  
     | 
| 
       160 
     | 
    
         
            -
                 
     | 
| 
      
 162 
     | 
    
         
            +
                assert_not_predicate ActiveRecord::Base, :descends_from_active_record?
         
     | 
| 
      
 163 
     | 
    
         
            +
                assert AbstractCompany.descends_from_active_record?, "AbstractCompany should descend from ActiveRecord::Base"
         
     | 
| 
      
 164 
     | 
    
         
            +
                assert Company.descends_from_active_record?, "Company should descend from ActiveRecord::Base"
         
     | 
| 
      
 165 
     | 
    
         
            +
                assert_not Class.new(Company).descends_from_active_record?, "Company subclass should not descend from ActiveRecord::Base"
         
     | 
| 
       161 
166 
     | 
    
         
             
              end
         
     | 
| 
       162 
167 
     | 
    
         | 
| 
       163 
168 
     | 
    
         
             
              def test_abstract_class
         
     | 
| 
       164 
     | 
    
         
            -
                 
     | 
| 
       165 
     | 
    
         
            -
                 
     | 
| 
       166 
     | 
    
         
            -
                 
     | 
| 
      
 169 
     | 
    
         
            +
                assert_not_predicate ActiveRecord::Base, :abstract_class?
         
     | 
| 
      
 170 
     | 
    
         
            +
                assert_predicate LoosePerson, :abstract_class?
         
     | 
| 
      
 171 
     | 
    
         
            +
                assert_not_predicate LooseDescendant, :abstract_class?
         
     | 
| 
       167 
172 
     | 
    
         
             
              end
         
     | 
| 
       168 
173 
     | 
    
         | 
| 
       169 
174 
     | 
    
         
             
              def test_inheritance_base_class
         
     | 
| 
       170 
175 
     | 
    
         
             
                assert_equal Post, Post.base_class
         
     | 
| 
      
 176 
     | 
    
         
            +
                assert_predicate Post, :base_class?
         
     | 
| 
       171 
177 
     | 
    
         
             
                assert_equal Post, SpecialPost.base_class
         
     | 
| 
      
 178 
     | 
    
         
            +
                assert_not_predicate SpecialPost, :base_class?
         
     | 
| 
       172 
179 
     | 
    
         
             
                assert_equal Post, StiPost.base_class
         
     | 
| 
       173 
     | 
    
         
            -
                 
     | 
| 
      
 180 
     | 
    
         
            +
                assert_not_predicate StiPost, :base_class?
         
     | 
| 
      
 181 
     | 
    
         
            +
                assert_equal Post, SubStiPost.base_class
         
     | 
| 
      
 182 
     | 
    
         
            +
                assert_not_predicate SubStiPost, :base_class?
         
     | 
| 
      
 183 
     | 
    
         
            +
                assert_equal SubAbstractStiPost, SubAbstractStiPost.base_class
         
     | 
| 
      
 184 
     | 
    
         
            +
                assert_predicate SubAbstractStiPost, :base_class?
         
     | 
| 
       174 
185 
     | 
    
         
             
              end
         
     | 
| 
       175 
186 
     | 
    
         | 
| 
       176 
187 
     | 
    
         
             
              def test_abstract_inheritance_base_class
         
     | 
| 
       177 
188 
     | 
    
         
             
                assert_equal LoosePerson, LoosePerson.base_class
         
     | 
| 
      
 189 
     | 
    
         
            +
                assert_predicate LoosePerson, :base_class?
         
     | 
| 
       178 
190 
     | 
    
         
             
                assert_equal LooseDescendant, LooseDescendant.base_class
         
     | 
| 
      
 191 
     | 
    
         
            +
                assert_predicate LooseDescendant, :base_class?
         
     | 
| 
       179 
192 
     | 
    
         
             
                assert_equal TightPerson, TightPerson.base_class
         
     | 
| 
      
 193 
     | 
    
         
            +
                assert_predicate TightPerson, :base_class?
         
     | 
| 
       180 
194 
     | 
    
         
             
                assert_equal TightPerson, TightDescendant.base_class
         
     | 
| 
      
 195 
     | 
    
         
            +
                assert_not_predicate TightDescendant, :base_class?
         
     | 
| 
       181 
196 
     | 
    
         
             
              end
         
     | 
| 
       182 
197 
     | 
    
         | 
| 
       183 
198 
     | 
    
         
             
              def test_base_class_activerecord_error
         
     | 
| 
         @@ -212,10 +227,20 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       212 
227 
     | 
    
         
             
                assert_kind_of Cabbage, cabbage
         
     | 
| 
       213 
228 
     | 
    
         
             
              end
         
     | 
| 
       214 
229 
     | 
    
         | 
| 
      
 230 
     | 
    
         
            +
              def test_becomes_sets_variables_before_initialization_callbacks
         
     | 
| 
      
 231 
     | 
    
         
            +
                vegetable = Vegetable.create!(name: "yelling carrot")
         
     | 
| 
      
 232 
     | 
    
         
            +
                assert_kind_of Vegetable, vegetable
         
     | 
| 
      
 233 
     | 
    
         
            +
                assert_equal "yelling carrot", vegetable.name
         
     | 
| 
      
 234 
     | 
    
         
            +
             
     | 
| 
      
 235 
     | 
    
         
            +
                yelling_veggie = vegetable.becomes(YellingVegetable)
         
     | 
| 
      
 236 
     | 
    
         
            +
                assert_equal "YELLING CARROT", yelling_veggie.name, "YellingVegetable name should be YELLING CARROT"
         
     | 
| 
      
 237 
     | 
    
         
            +
                assert_equal "YELLING CARROT", vegetable.name, "Vegetable name should be YELLING CARROT after becoming a YellingVegetable"
         
     | 
| 
      
 238 
     | 
    
         
            +
              end
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
       215 
240 
     | 
    
         
             
              def test_becomes_and_change_tracking_for_inheritance_columns
         
     | 
| 
       216 
241 
     | 
    
         
             
                cucumber = Vegetable.find(1)
         
     | 
| 
       217 
242 
     | 
    
         
             
                cabbage = cucumber.becomes!(Cabbage)
         
     | 
| 
       218 
     | 
    
         
            -
                assert_equal [ 
     | 
| 
      
 243 
     | 
    
         
            +
                assert_equal ["Cucumber", "Cabbage"], cabbage.custom_type_change
         
     | 
| 
       219 
244 
     | 
    
         
             
              end
         
     | 
| 
       220 
245 
     | 
    
         | 
| 
       221 
246 
     | 
    
         
             
              def test_alt_becomes_bang_resets_inheritance_type_column
         
     | 
| 
         @@ -225,18 +250,18 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       225 
250 
     | 
    
         
             
                cabbage = vegetable.becomes!(Cabbage)
         
     | 
| 
       226 
251 
     | 
    
         
             
                assert_equal "Cabbage", cabbage.custom_type
         
     | 
| 
       227 
252 
     | 
    
         | 
| 
       228 
     | 
    
         
            -
                 
     | 
| 
      
 253 
     | 
    
         
            +
                cabbage.becomes!(Vegetable)
         
     | 
| 
       229 
254 
     | 
    
         
             
                assert_nil cabbage.custom_type
         
     | 
| 
       230 
255 
     | 
    
         
             
              end
         
     | 
| 
       231 
256 
     | 
    
         | 
| 
       232 
257 
     | 
    
         
             
              def test_inheritance_find_all
         
     | 
| 
       233 
     | 
    
         
            -
                companies = Company.all.merge!(: 
     | 
| 
      
 258 
     | 
    
         
            +
                companies = Company.all.merge!(order: "id").to_a
         
     | 
| 
       234 
259 
     | 
    
         
             
                assert_kind_of Firm, companies[0], "37signals should be a firm"
         
     | 
| 
       235 
260 
     | 
    
         
             
                assert_kind_of Client, companies[1], "Summit should be a client"
         
     | 
| 
       236 
261 
     | 
    
         
             
              end
         
     | 
| 
       237 
262 
     | 
    
         | 
| 
       238 
263 
     | 
    
         
             
              def test_alt_inheritance_find_all
         
     | 
| 
       239 
     | 
    
         
            -
                companies = Vegetable.all.merge!(: 
     | 
| 
      
 264 
     | 
    
         
            +
                companies = Vegetable.all.merge!(order: "id").to_a
         
     | 
| 
       240 
265 
     | 
    
         
             
                assert_kind_of Cucumber, companies[0]
         
     | 
| 
       241 
266 
     | 
    
         
             
                assert_kind_of Cabbage, companies[1]
         
     | 
| 
       242 
267 
     | 
    
         
             
              end
         
     | 
| 
         @@ -251,7 +276,7 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       251 
276 
     | 
    
         
             
              end
         
     | 
| 
       252 
277 
     | 
    
         | 
| 
       253 
278 
     | 
    
         
             
              def test_alt_inheritance_save
         
     | 
| 
       254 
     | 
    
         
            -
                cabbage = Cabbage.new(: 
     | 
| 
      
 279 
     | 
    
         
            +
                cabbage = Cabbage.new(name: "Savoy")
         
     | 
| 
       255 
280 
     | 
    
         
             
                cabbage.save!
         
     | 
| 
       256 
281 
     | 
    
         | 
| 
       257 
282 
     | 
    
         
             
                savoy = Vegetable.find(cabbage.id)
         
     | 
| 
         @@ -264,12 +289,27 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       264 
289 
     | 
    
         
             
              end
         
     | 
| 
       265 
290 
     | 
    
         | 
| 
       266 
291 
     | 
    
         
             
              def test_inheritance_new_with_base_class
         
     | 
| 
       267 
     | 
    
         
            -
                company = Company.new(: 
     | 
| 
      
 292 
     | 
    
         
            +
                company = Company.new(type: "Company")
         
     | 
| 
       268 
293 
     | 
    
         
             
                assert_equal Company, company.class
         
     | 
| 
       269 
294 
     | 
    
         
             
              end
         
     | 
| 
       270 
295 
     | 
    
         | 
| 
       271 
296 
     | 
    
         
             
              def test_inheritance_new_with_subclass
         
     | 
| 
       272 
     | 
    
         
            -
                firm = Company.new(: 
     | 
| 
      
 297 
     | 
    
         
            +
                firm = Company.new(type: "Firm")
         
     | 
| 
      
 298 
     | 
    
         
            +
                assert_equal Firm, firm.class
         
     | 
| 
      
 299 
     | 
    
         
            +
              end
         
     | 
| 
      
 300 
     | 
    
         
            +
             
     | 
| 
      
 301 
     | 
    
         
            +
              def test_where_new_with_subclass
         
     | 
| 
      
 302 
     | 
    
         
            +
                firm = Company.where(type: "Firm").new
         
     | 
| 
      
 303 
     | 
    
         
            +
                assert_equal Firm, firm.class
         
     | 
| 
      
 304 
     | 
    
         
            +
              end
         
     | 
| 
      
 305 
     | 
    
         
            +
             
     | 
| 
      
 306 
     | 
    
         
            +
              def test_where_create_with_subclass
         
     | 
| 
      
 307 
     | 
    
         
            +
                firm = Company.where(type: "Firm").create(name: "Basecamp")
         
     | 
| 
      
 308 
     | 
    
         
            +
                assert_equal Firm, firm.class
         
     | 
| 
      
 309 
     | 
    
         
            +
              end
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
      
 311 
     | 
    
         
            +
              def test_where_create_bang_with_subclass
         
     | 
| 
      
 312 
     | 
    
         
            +
                firm = Company.where(type: "Firm").create!(name: "Basecamp")
         
     | 
| 
       273 
313 
     | 
    
         
             
                assert_equal Firm, firm.class
         
     | 
| 
       274 
314 
     | 
    
         
             
              end
         
     | 
| 
       275 
315 
     | 
    
         | 
| 
         @@ -288,17 +328,41 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       288 
328 
     | 
    
         
             
              end
         
     | 
| 
       289 
329 
     | 
    
         | 
| 
       290 
330 
     | 
    
         
             
              def test_new_with_invalid_type
         
     | 
| 
       291 
     | 
    
         
            -
                assert_raise(ActiveRecord::SubclassNotFound) { Company.new(: 
     | 
| 
      
 331 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.new(type: "InvalidType") }
         
     | 
| 
       292 
332 
     | 
    
         
             
              end
         
     | 
| 
       293 
333 
     | 
    
         | 
| 
       294 
334 
     | 
    
         
             
              def test_new_with_unrelated_type
         
     | 
| 
       295 
     | 
    
         
            -
                assert_raise(ActiveRecord::SubclassNotFound) { Company.new(: 
     | 
| 
      
 335 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.new(type: "Account") }
         
     | 
| 
      
 336 
     | 
    
         
            +
              end
         
     | 
| 
      
 337 
     | 
    
         
            +
             
     | 
| 
      
 338 
     | 
    
         
            +
              def test_where_new_with_invalid_type
         
     | 
| 
      
 339 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.where(type: "InvalidType").new }
         
     | 
| 
      
 340 
     | 
    
         
            +
              end
         
     | 
| 
      
 341 
     | 
    
         
            +
             
     | 
| 
      
 342 
     | 
    
         
            +
              def test_where_new_with_unrelated_type
         
     | 
| 
      
 343 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.where(type: "Account").new }
         
     | 
| 
      
 344 
     | 
    
         
            +
              end
         
     | 
| 
      
 345 
     | 
    
         
            +
             
     | 
| 
      
 346 
     | 
    
         
            +
              def test_where_create_with_invalid_type
         
     | 
| 
      
 347 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.where(type: "InvalidType").create }
         
     | 
| 
      
 348 
     | 
    
         
            +
              end
         
     | 
| 
      
 349 
     | 
    
         
            +
             
     | 
| 
      
 350 
     | 
    
         
            +
              def test_where_create_with_unrelated_type
         
     | 
| 
      
 351 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.where(type: "Account").create }
         
     | 
| 
      
 352 
     | 
    
         
            +
              end
         
     | 
| 
      
 353 
     | 
    
         
            +
             
     | 
| 
      
 354 
     | 
    
         
            +
              def test_where_create_bang_with_invalid_type
         
     | 
| 
      
 355 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.where(type: "InvalidType").create! }
         
     | 
| 
      
 356 
     | 
    
         
            +
              end
         
     | 
| 
      
 357 
     | 
    
         
            +
             
     | 
| 
      
 358 
     | 
    
         
            +
              def test_where_create_bang_with_unrelated_type
         
     | 
| 
      
 359 
     | 
    
         
            +
                assert_raise(ActiveRecord::SubclassNotFound) { Company.where(type: "Account").create! }
         
     | 
| 
       296 
360 
     | 
    
         
             
              end
         
     | 
| 
       297 
361 
     | 
    
         | 
| 
       298 
362 
     | 
    
         
             
              def test_new_with_unrelated_namespaced_type
         
     | 
| 
       299 
363 
     | 
    
         
             
                without_store_full_sti_class do
         
     | 
| 
       300 
364 
     | 
    
         
             
                  e = assert_raises ActiveRecord::SubclassNotFound do
         
     | 
| 
       301 
     | 
    
         
            -
                    Namespaced::Company.new(type:  
     | 
| 
      
 365 
     | 
    
         
            +
                    Namespaced::Company.new(type: "Firm")
         
     | 
| 
       302 
366 
     | 
    
         
             
                  end
         
     | 
| 
       303 
367 
     | 
    
         | 
| 
       304 
368 
     | 
    
         
             
                  assert_equal "Invalid single-table inheritance type: Namespaced::Firm is not a subclass of Namespaced::Company", e.message
         
     | 
| 
         @@ -306,21 +370,21 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       306 
370 
     | 
    
         
             
              end
         
     | 
| 
       307 
371 
     | 
    
         | 
| 
       308 
372 
     | 
    
         
             
              def test_new_with_complex_inheritance
         
     | 
| 
       309 
     | 
    
         
            -
                assert_nothing_raised { Client.new(type:  
     | 
| 
      
 373 
     | 
    
         
            +
                assert_nothing_raised { Client.new(type: "VerySpecialClient") }
         
     | 
| 
       310 
374 
     | 
    
         
             
              end
         
     | 
| 
       311 
375 
     | 
    
         | 
| 
       312 
376 
     | 
    
         
             
              def test_new_without_storing_full_sti_class
         
     | 
| 
       313 
377 
     | 
    
         
             
                without_store_full_sti_class do
         
     | 
| 
       314 
     | 
    
         
            -
                  item = Company.new(type:  
     | 
| 
      
 378 
     | 
    
         
            +
                  item = Company.new(type: "SpecialCo")
         
     | 
| 
       315 
379 
     | 
    
         
             
                  assert_instance_of Company::SpecialCo, item
         
     | 
| 
       316 
380 
     | 
    
         
             
                end
         
     | 
| 
       317 
381 
     | 
    
         
             
              end
         
     | 
| 
       318 
382 
     | 
    
         | 
| 
       319 
383 
     | 
    
         
             
              def test_new_with_autoload_paths
         
     | 
| 
       320 
     | 
    
         
            -
                path = File.expand_path( 
     | 
| 
      
 384 
     | 
    
         
            +
                path = File.expand_path("../models/autoloadable", __dir__)
         
     | 
| 
       321 
385 
     | 
    
         
             
                ActiveSupport::Dependencies.autoload_paths << path
         
     | 
| 
       322 
386 
     | 
    
         | 
| 
       323 
     | 
    
         
            -
                firm = Company.new(: 
     | 
| 
      
 387 
     | 
    
         
            +
                firm = Company.new(type: "ExtraFirm")
         
     | 
| 
       324 
388 
     | 
    
         
             
                assert_equal ExtraFirm, firm.class
         
     | 
| 
       325 
389 
     | 
    
         
             
              ensure
         
     | 
| 
       326 
390 
     | 
    
         
             
                ActiveSupport::Dependencies.autoload_paths.reject! { |p| p == path }
         
     | 
| 
         @@ -328,8 +392,8 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       328 
392 
     | 
    
         
             
              end
         
     | 
| 
       329 
393 
     | 
    
         | 
| 
       330 
394 
     | 
    
         
             
              def test_inheritance_condition
         
     | 
| 
       331 
     | 
    
         
            -
                assert_equal  
     | 
| 
       332 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 395 
     | 
    
         
            +
                assert_equal 12, Company.count
         
     | 
| 
      
 396 
     | 
    
         
            +
                assert_equal 3, Firm.count
         
     | 
| 
       333 
397 
     | 
    
         
             
                assert_equal 5, Client.count
         
     | 
| 
       334 
398 
     | 
    
         
             
              end
         
     | 
| 
       335 
399 
     | 
    
         | 
| 
         @@ -353,7 +417,7 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       353 
417 
     | 
    
         
             
                Client.update_all "name = 'I am a client'"
         
     | 
| 
       354 
418 
     | 
    
         
             
                assert_equal "I am a client", Client.first.name
         
     | 
| 
       355 
419 
     | 
    
         
             
                # Order by added as otherwise Oracle tests were failing because of different order of results
         
     | 
| 
       356 
     | 
    
         
            -
                assert_equal "37signals", Firm.all.merge!(: 
     | 
| 
      
 420 
     | 
    
         
            +
                assert_equal "37signals", Firm.all.merge!(order: "id").to_a.first.name
         
     | 
| 
       357 
421 
     | 
    
         
             
              end
         
     | 
| 
       358 
422 
     | 
    
         | 
| 
       359 
423 
     | 
    
         
             
              def test_alt_update_all_within_inheritance
         
     | 
| 
         @@ -365,7 +429,7 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       365 
429 
     | 
    
         
             
              def test_destroy_all_within_inheritance
         
     | 
| 
       366 
430 
     | 
    
         
             
                Client.destroy_all
         
     | 
| 
       367 
431 
     | 
    
         
             
                assert_equal 0, Client.count
         
     | 
| 
       368 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 432 
     | 
    
         
            +
                assert_equal 3, Firm.count
         
     | 
| 
       369 
433 
     | 
    
         
             
              end
         
     | 
| 
       370 
434 
     | 
    
         | 
| 
       371 
435 
     | 
    
         
             
              def test_alt_destroy_all_within_inheritance
         
     | 
| 
         @@ -375,51 +439,52 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       375 
439 
     | 
    
         
             
              end
         
     | 
| 
       376 
440 
     | 
    
         | 
| 
       377 
441 
     | 
    
         
             
              def test_find_first_within_inheritance
         
     | 
| 
       378 
     | 
    
         
            -
                assert_kind_of Firm, Company.all.merge!(: 
     | 
| 
       379 
     | 
    
         
            -
                assert_kind_of Firm, Firm.all.merge!(: 
     | 
| 
       380 
     | 
    
         
            -
                assert_nil Client.all.merge!(: 
     | 
| 
      
 442 
     | 
    
         
            +
                assert_kind_of Firm, Company.all.merge!(where: "name = '37signals'").first
         
     | 
| 
      
 443 
     | 
    
         
            +
                assert_kind_of Firm, Firm.all.merge!(where: "name = '37signals'").first
         
     | 
| 
      
 444 
     | 
    
         
            +
                assert_nil Client.all.merge!(where: "name = '37signals'").first
         
     | 
| 
       381 
445 
     | 
    
         
             
              end
         
     | 
| 
       382 
446 
     | 
    
         | 
| 
       383 
447 
     | 
    
         
             
              def test_alt_find_first_within_inheritance
         
     | 
| 
       384 
     | 
    
         
            -
                assert_kind_of Cabbage, Vegetable.all.merge!(: 
     | 
| 
       385 
     | 
    
         
            -
                assert_kind_of Cabbage, Cabbage.all.merge!(: 
     | 
| 
       386 
     | 
    
         
            -
                assert_nil Cucumber.all.merge!(: 
     | 
| 
      
 448 
     | 
    
         
            +
                assert_kind_of Cabbage, Vegetable.all.merge!(where: "name = 'his cabbage'").first
         
     | 
| 
      
 449 
     | 
    
         
            +
                assert_kind_of Cabbage, Cabbage.all.merge!(where: "name = 'his cabbage'").first
         
     | 
| 
      
 450 
     | 
    
         
            +
                assert_nil Cucumber.all.merge!(where: "name = 'his cabbage'").first
         
     | 
| 
       387 
451 
     | 
    
         
             
              end
         
     | 
| 
       388 
452 
     | 
    
         | 
| 
       389 
453 
     | 
    
         
             
              def test_complex_inheritance
         
     | 
| 
       390 
454 
     | 
    
         
             
                very_special_client = VerySpecialClient.create("name" => "veryspecial")
         
     | 
| 
       391 
455 
     | 
    
         
             
                assert_equal very_special_client, VerySpecialClient.where("name = 'veryspecial'").first
         
     | 
| 
       392 
     | 
    
         
            -
                assert_equal very_special_client, SpecialClient.all.merge!(: 
     | 
| 
       393 
     | 
    
         
            -
                assert_equal very_special_client, Company.all.merge!(: 
     | 
| 
       394 
     | 
    
         
            -
                assert_equal very_special_client, Client.all.merge!(: 
     | 
| 
       395 
     | 
    
         
            -
                assert_equal 1, Client.all.merge!(: 
     | 
| 
      
 456 
     | 
    
         
            +
                assert_equal very_special_client, SpecialClient.all.merge!(where: "name = 'veryspecial'").first
         
     | 
| 
      
 457 
     | 
    
         
            +
                assert_equal very_special_client, Company.all.merge!(where: "name = 'veryspecial'").first
         
     | 
| 
      
 458 
     | 
    
         
            +
                assert_equal very_special_client, Client.all.merge!(where: "name = 'veryspecial'").first
         
     | 
| 
      
 459 
     | 
    
         
            +
                assert_equal 1, Client.all.merge!(where: "name = 'Summit'").to_a.size
         
     | 
| 
       396 
460 
     | 
    
         
             
                assert_equal very_special_client, Client.find(very_special_client.id)
         
     | 
| 
       397 
461 
     | 
    
         
             
              end
         
     | 
| 
       398 
462 
     | 
    
         | 
| 
       399 
463 
     | 
    
         
             
              def test_alt_complex_inheritance
         
     | 
| 
       400 
464 
     | 
    
         
             
                king_cole = KingCole.create("name" => "uniform heads")
         
     | 
| 
       401 
465 
     | 
    
         
             
                assert_equal king_cole, KingCole.where("name = 'uniform heads'").first
         
     | 
| 
       402 
     | 
    
         
            -
                assert_equal king_cole, GreenCabbage.all.merge!(: 
     | 
| 
       403 
     | 
    
         
            -
                assert_equal king_cole, Cabbage.all.merge!(: 
     | 
| 
       404 
     | 
    
         
            -
                assert_equal king_cole, Vegetable.all.merge!(: 
     | 
| 
       405 
     | 
    
         
            -
                assert_equal 1, Cabbage.all.merge!(: 
     | 
| 
      
 466 
     | 
    
         
            +
                assert_equal king_cole, GreenCabbage.all.merge!(where: "name = 'uniform heads'").first
         
     | 
| 
      
 467 
     | 
    
         
            +
                assert_equal king_cole, Cabbage.all.merge!(where: "name = 'uniform heads'").first
         
     | 
| 
      
 468 
     | 
    
         
            +
                assert_equal king_cole, Vegetable.all.merge!(where: "name = 'uniform heads'").first
         
     | 
| 
      
 469 
     | 
    
         
            +
                assert_equal 1, Cabbage.all.merge!(where: "name = 'his cabbage'").to_a.size
         
     | 
| 
       406 
470 
     | 
    
         
             
                assert_equal king_cole, Cabbage.find(king_cole.id)
         
     | 
| 
       407 
471 
     | 
    
         
             
              end
         
     | 
| 
       408 
472 
     | 
    
         | 
| 
       409 
473 
     | 
    
         
             
              def test_eager_load_belongs_to_something_inherited
         
     | 
| 
       410 
     | 
    
         
            -
                account = Account.all.merge!(: 
     | 
| 
      
 474 
     | 
    
         
            +
                account = Account.all.merge!(includes: :firm).find(1)
         
     | 
| 
       411 
475 
     | 
    
         
             
                assert account.association(:firm).loaded?, "association was not eager loaded"
         
     | 
| 
       412 
476 
     | 
    
         
             
              end
         
     | 
| 
       413 
477 
     | 
    
         | 
| 
       414 
478 
     | 
    
         
             
              def test_alt_eager_loading
         
     | 
| 
       415 
     | 
    
         
            -
                cabbage = RedCabbage.all.merge!(: 
     | 
| 
      
 479 
     | 
    
         
            +
                cabbage = RedCabbage.all.merge!(includes: :seller).find(4)
         
     | 
| 
       416 
480 
     | 
    
         
             
                assert cabbage.association(:seller).loaded?, "association was not eager loaded"
         
     | 
| 
       417 
481 
     | 
    
         
             
              end
         
     | 
| 
       418 
482 
     | 
    
         | 
| 
       419 
483 
     | 
    
         
             
              def test_eager_load_belongs_to_primary_key_quoting
         
     | 
| 
       420 
     | 
    
         
            -
                 
     | 
| 
       421 
     | 
    
         
            -
                 
     | 
| 
       422 
     | 
    
         
            -
             
     | 
| 
      
 484 
     | 
    
         
            +
                c = Account.connection
         
     | 
| 
      
 485 
     | 
    
         
            +
                bind_param = Arel::Nodes::BindParam.new(nil)
         
     | 
| 
      
 486 
     | 
    
         
            +
                assert_sql(/#{Regexp.escape(c.quote_table_name("companies.id"))} = (?:#{Regexp.escape(bind_param.to_sql)}|1)/i) do
         
     | 
| 
      
 487 
     | 
    
         
            +
                  Account.all.merge!(includes: :firm).find(1)
         
     | 
| 
       423 
488 
     | 
    
         
             
                end
         
     | 
| 
       424 
489 
     | 
    
         
             
              end
         
     | 
| 
       425 
490 
     | 
    
         | 
| 
         @@ -429,12 +494,12 @@ class InheritanceTest < ActiveRecord::TestCase 
     | 
|
| 
       429 
494 
     | 
    
         | 
| 
       430 
495 
     | 
    
         
             
              def test_inheritance_without_mapping
         
     | 
| 
       431 
496 
     | 
    
         
             
                assert_kind_of SpecialSubscriber, SpecialSubscriber.find("webster132")
         
     | 
| 
       432 
     | 
    
         
            -
                assert_nothing_raised { s = SpecialSubscriber.new("name" => "And breaaaaathe!"); s.id =  
     | 
| 
      
 497 
     | 
    
         
            +
                assert_nothing_raised { s = SpecialSubscriber.new("name" => "And breaaaaathe!"); s.id = "roger"; s.save }
         
     | 
| 
       433 
498 
     | 
    
         
             
              end
         
     | 
| 
       434 
499 
     | 
    
         | 
| 
       435 
500 
     | 
    
         
             
              def test_scope_inherited_properly
         
     | 
| 
       436 
     | 
    
         
            -
                assert_nothing_raised { Company.of_first_firm }
         
     | 
| 
       437 
     | 
    
         
            -
                assert_nothing_raised { Client.of_first_firm }
         
     | 
| 
      
 501 
     | 
    
         
            +
                assert_nothing_raised { Company.of_first_firm.to_a }
         
     | 
| 
      
 502 
     | 
    
         
            +
                assert_nothing_raised { Client.of_first_firm.to_a }
         
     | 
| 
       438 
503 
     | 
    
         
             
              end
         
     | 
| 
       439 
504 
     | 
    
         | 
| 
       440 
505 
     | 
    
         
             
              def test_inheritance_with_default_scope
         
     | 
| 
         @@ -446,23 +511,20 @@ class InheritanceComputeTypeTest < ActiveRecord::TestCase 
     | 
|
| 
       446 
511 
     | 
    
         
             
              include InheritanceTestHelper
         
     | 
| 
       447 
512 
     | 
    
         
             
              fixtures :companies
         
     | 
| 
       448 
513 
     | 
    
         | 
| 
       449 
     | 
    
         
            -
              teardown do
         
     | 
| 
       450 
     | 
    
         
            -
                self.class.const_remove :FirmOnTheFly rescue nil
         
     | 
| 
       451 
     | 
    
         
            -
                Firm.const_remove :FirmOnTheFly rescue nil
         
     | 
| 
       452 
     | 
    
         
            -
              end
         
     | 
| 
       453 
     | 
    
         
            -
             
     | 
| 
       454 
514 
     | 
    
         
             
              def test_instantiation_doesnt_try_to_require_corresponding_file
         
     | 
| 
       455 
515 
     | 
    
         
             
                without_store_full_sti_class do
         
     | 
| 
       456 
516 
     | 
    
         
             
                  foo = Firm.first.clone
         
     | 
| 
       457 
     | 
    
         
            -
                  foo.type =  
     | 
| 
      
 517 
     | 
    
         
            +
                  foo.type = "FirmOnTheFly"
         
     | 
| 
       458 
518 
     | 
    
         
             
                  foo.save!
         
     | 
| 
       459 
519 
     | 
    
         | 
| 
       460 
520 
     | 
    
         
             
                  # Should fail without FirmOnTheFly in the type condition.
         
     | 
| 
       461 
521 
     | 
    
         
             
                  assert_raise(ActiveRecord::RecordNotFound) { Firm.find(foo.id) }
         
     | 
| 
      
 522 
     | 
    
         
            +
                  assert_raise(ActiveRecord::RecordNotFound) { Firm.find_by!(id: foo.id) }
         
     | 
| 
       462 
523 
     | 
    
         | 
| 
       463 
524 
     | 
    
         
             
                  # Nest FirmOnTheFly in the test case where Dependencies won't see it.
         
     | 
| 
       464 
525 
     | 
    
         
             
                  self.class.const_set :FirmOnTheFly, Class.new(Firm)
         
     | 
| 
       465 
526 
     | 
    
         
             
                  assert_raise(ActiveRecord::SubclassNotFound) { Firm.find(foo.id) }
         
     | 
| 
      
 527 
     | 
    
         
            +
                  assert_raise(ActiveRecord::SubclassNotFound) { Firm.find_by!(id: foo.id) }
         
     | 
| 
       466 
528 
     | 
    
         | 
| 
       467 
529 
     | 
    
         
             
                  # Nest FirmOnTheFly in Firm where Dependencies will see it.
         
     | 
| 
       468 
530 
     | 
    
         
             
                  # This is analogous to nesting models in a migration.
         
     | 
| 
         @@ -471,34 +533,38 @@ class InheritanceComputeTypeTest < ActiveRecord::TestCase 
     | 
|
| 
       471 
533 
     | 
    
         
             
                  # And instantiate will find the existing constant rather than trying
         
     | 
| 
       472 
534 
     | 
    
         
             
                  # to require firm_on_the_fly.
         
     | 
| 
       473 
535 
     | 
    
         
             
                  assert_nothing_raised { assert_kind_of Firm::FirmOnTheFly, Firm.find(foo.id) }
         
     | 
| 
      
 536 
     | 
    
         
            +
                  assert_nothing_raised { assert_kind_of Firm::FirmOnTheFly, Firm.find_by!(id: foo.id) }
         
     | 
| 
       474 
537 
     | 
    
         
             
                end
         
     | 
| 
      
 538 
     | 
    
         
            +
              ensure
         
     | 
| 
      
 539 
     | 
    
         
            +
                self.class.send(:remove_const, :FirmOnTheFly) rescue nil
         
     | 
| 
      
 540 
     | 
    
         
            +
                Firm.send(:remove_const, :FirmOnTheFly) rescue nil
         
     | 
| 
       475 
541 
     | 
    
         
             
              end
         
     | 
| 
       476 
542 
     | 
    
         | 
| 
       477 
543 
     | 
    
         
             
              def test_sti_type_from_attributes_disabled_in_non_sti_class
         
     | 
| 
       478 
     | 
    
         
            -
                phone = Shop::Product::Type.new(name:  
     | 
| 
       479 
     | 
    
         
            -
                product = Shop::Product.new(: 
     | 
| 
      
 544 
     | 
    
         
            +
                phone = Shop::Product::Type.new(name: "Phone")
         
     | 
| 
      
 545 
     | 
    
         
            +
                product = Shop::Product.new(type: phone)
         
     | 
| 
       480 
546 
     | 
    
         
             
                assert product.save
         
     | 
| 
       481 
547 
     | 
    
         
             
              end
         
     | 
| 
       482 
548 
     | 
    
         | 
| 
       483 
549 
     | 
    
         
             
              def test_inheritance_new_with_subclass_as_default
         
     | 
| 
       484 
550 
     | 
    
         
             
                original_type = Company.columns_hash["type"].default
         
     | 
| 
       485 
     | 
    
         
            -
                ActiveRecord::Base.connection.change_column_default :companies, :type,  
     | 
| 
      
 551 
     | 
    
         
            +
                ActiveRecord::Base.connection.change_column_default :companies, :type, "Firm"
         
     | 
| 
       486 
552 
     | 
    
         
             
                Company.reset_column_information
         
     | 
| 
       487 
553 
     | 
    
         | 
| 
       488 
554 
     | 
    
         
             
                firm = Company.new # without arguments
         
     | 
| 
       489 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 555 
     | 
    
         
            +
                assert_equal "Firm", firm.type
         
     | 
| 
       490 
556 
     | 
    
         
             
                assert_instance_of Firm, firm
         
     | 
| 
       491 
557 
     | 
    
         | 
| 
       492 
     | 
    
         
            -
                firm = Company.new(firm_name:  
     | 
| 
       493 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 558 
     | 
    
         
            +
                firm = Company.new(firm_name: "Shri Hans Plastic") # with arguments
         
     | 
| 
      
 559 
     | 
    
         
            +
                assert_equal "Firm", firm.type
         
     | 
| 
       494 
560 
     | 
    
         
             
                assert_instance_of Firm, firm
         
     | 
| 
       495 
561 
     | 
    
         | 
| 
       496 
562 
     | 
    
         
             
                client = Client.new
         
     | 
| 
       497 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 563 
     | 
    
         
            +
                assert_equal "Client", client.type
         
     | 
| 
       498 
564 
     | 
    
         
             
                assert_instance_of Client, client
         
     | 
| 
       499 
565 
     | 
    
         | 
| 
       500 
     | 
    
         
            -
                firm = Company.new(type:  
     | 
| 
       501 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 566 
     | 
    
         
            +
                firm = Company.new(type: "Client") # overwrite the default type
         
     | 
| 
      
 567 
     | 
    
         
            +
                assert_equal "Client", firm.type
         
     | 
| 
       502 
568 
     | 
    
         
             
                assert_instance_of Client, firm
         
     | 
| 
       503 
569 
     | 
    
         
             
              ensure
         
     | 
| 
       504 
570 
     | 
    
         
             
                ActiveRecord::Base.connection.change_column_default :companies, :type, original_type
         
     | 
| 
         @@ -507,9 +573,8 @@ class InheritanceComputeTypeTest < ActiveRecord::TestCase 
     | 
|
| 
       507 
573 
     | 
    
         
             
            end
         
     | 
| 
       508 
574 
     | 
    
         | 
| 
       509 
575 
     | 
    
         
             
            class InheritanceAttributeTest < ActiveRecord::TestCase
         
     | 
| 
       510 
     | 
    
         
            -
             
     | 
| 
       511 
576 
     | 
    
         
             
              class Company < ActiveRecord::Base
         
     | 
| 
       512 
     | 
    
         
            -
                self.table_name =  
     | 
| 
      
 577 
     | 
    
         
            +
                self.table_name = "companies"
         
     | 
| 
       513 
578 
     | 
    
         
             
                attribute :type, :string, default: "InheritanceAttributeTest::Startup"
         
     | 
| 
       514 
579 
     | 
    
         
             
              end
         
     | 
| 
       515 
580 
     | 
    
         | 
| 
         @@ -521,11 +586,11 @@ class InheritanceAttributeTest < ActiveRecord::TestCase 
     | 
|
| 
       521 
586 
     | 
    
         | 
| 
       522 
587 
     | 
    
         
             
              def test_inheritance_new_with_subclass_as_default
         
     | 
| 
       523 
588 
     | 
    
         
             
                startup = Company.new # without arguments
         
     | 
| 
       524 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 589 
     | 
    
         
            +
                assert_equal "InheritanceAttributeTest::Startup", startup.type
         
     | 
| 
       525 
590 
     | 
    
         
             
                assert_instance_of Startup, startup
         
     | 
| 
       526 
591 
     | 
    
         | 
| 
       527 
     | 
    
         
            -
                empire = Company.new(type:  
     | 
| 
       528 
     | 
    
         
            -
                assert_equal  
     | 
| 
      
 592 
     | 
    
         
            +
                empire = Company.new(type: "InheritanceAttributeTest::Empire") # without arguments
         
     | 
| 
      
 593 
     | 
    
         
            +
                assert_equal "InheritanceAttributeTest::Empire", empire.type
         
     | 
| 
       529 
594 
     | 
    
         
             
                assert_instance_of Empire, empire
         
     | 
| 
       530 
595 
     | 
    
         
             
              end
         
     | 
| 
       531 
596 
     | 
    
         
             
            end
         
     | 
| 
         @@ -533,7 +598,7 @@ end 
     | 
|
| 
       533 
598 
     | 
    
         
             
            class InheritanceAttributeMappingTest < ActiveRecord::TestCase
         
     | 
| 
       534 
599 
     | 
    
         
             
              setup do
         
     | 
| 
       535 
600 
     | 
    
         
             
                @old_registry = ActiveRecord::Type.registry
         
     | 
| 
       536 
     | 
    
         
            -
                ActiveRecord::Type.registry = ActiveRecord::Type 
     | 
| 
      
 601 
     | 
    
         
            +
                ActiveRecord::Type.registry = ActiveRecord::Type.registry.dup
         
     | 
| 
       537 
602 
     | 
    
         
             
                ActiveRecord::Type.register :omg_sti, InheritanceAttributeMappingTest::OmgStiType
         
     | 
| 
       538 
603 
     | 
    
         
             
                Company.delete_all
         
     | 
| 
       539 
604 
     | 
    
         
             
                Sponsor.delete_all
         
     | 
| 
         @@ -560,7 +625,7 @@ class InheritanceAttributeMappingTest < ActiveRecord::TestCase 
     | 
|
| 
       560 
625 
     | 
    
         
             
              end
         
     | 
| 
       561 
626 
     | 
    
         | 
| 
       562 
627 
     | 
    
         
             
              class Company < ActiveRecord::Base
         
     | 
| 
       563 
     | 
    
         
            -
                self.table_name =  
     | 
| 
      
 628 
     | 
    
         
            +
                self.table_name = "companies"
         
     | 
| 
       564 
629 
     | 
    
         
             
                attribute :type, :omg_sti
         
     | 
| 
       565 
630 
     | 
    
         
             
              end
         
     | 
| 
       566 
631 
     | 
    
         | 
| 
         @@ -568,18 +633,18 @@ class InheritanceAttributeMappingTest < ActiveRecord::TestCase 
     | 
|
| 
       568 
633 
     | 
    
         
             
              class Empire < Company; end
         
     | 
| 
       569 
634 
     | 
    
         | 
| 
       570 
635 
     | 
    
         
             
              class Sponsor < ActiveRecord::Base
         
     | 
| 
       571 
     | 
    
         
            -
                self.table_name =  
     | 
| 
      
 636 
     | 
    
         
            +
                self.table_name = "sponsors"
         
     | 
| 
       572 
637 
     | 
    
         
             
                attribute :sponsorable_type, :omg_sti
         
     | 
| 
       573 
638 
     | 
    
         | 
| 
       574 
639 
     | 
    
         
             
                belongs_to :sponsorable, polymorphic: true
         
     | 
| 
       575 
640 
     | 
    
         
             
              end
         
     | 
| 
       576 
641 
     | 
    
         | 
| 
       577 
642 
     | 
    
         
             
              def test_sti_with_custom_type
         
     | 
| 
       578 
     | 
    
         
            -
                Startup.create! name:  
     | 
| 
       579 
     | 
    
         
            -
                Empire.create! name:  
     | 
| 
      
 643 
     | 
    
         
            +
                Startup.create! name: "a Startup"
         
     | 
| 
      
 644 
     | 
    
         
            +
                Empire.create! name: "an Empire"
         
     | 
| 
       580 
645 
     | 
    
         | 
| 
       581 
646 
     | 
    
         
             
                assert_equal [["a Startup", "omg_inheritance_attribute_mapping_test/startup"],
         
     | 
| 
       582 
     | 
    
         
            -
                              ["an Empire", "omg_inheritance_attribute_mapping_test/empire"]], ActiveRecord::Base.connection.select_rows( 
     | 
| 
      
 647 
     | 
    
         
            +
                              ["an Empire", "omg_inheritance_attribute_mapping_test/empire"]], ActiveRecord::Base.connection.select_rows("SELECT name, type FROM companies").sort
         
     | 
| 
       583 
648 
     | 
    
         
             
                assert_equal [["a Startup", "InheritanceAttributeMappingTest::Startup"],
         
     | 
| 
       584 
649 
     | 
    
         
             
                              ["an Empire", "InheritanceAttributeMappingTest::Empire"]], Company.all.map { |a| [a.name, a.type] }.sort
         
     | 
| 
       585 
650 
     | 
    
         | 
| 
         @@ -588,19 +653,19 @@ class InheritanceAttributeMappingTest < ActiveRecord::TestCase 
     | 
|
| 
       588 
653 
     | 
    
         
             
                startup.save!
         
     | 
| 
       589 
654 
     | 
    
         | 
| 
       590 
655 
     | 
    
         
             
                assert_equal [["a Startup", "omg_inheritance_attribute_mapping_test/empire"],
         
     | 
| 
       591 
     | 
    
         
            -
                              ["an Empire", "omg_inheritance_attribute_mapping_test/empire"]], ActiveRecord::Base.connection.select_rows( 
     | 
| 
      
 656 
     | 
    
         
            +
                              ["an Empire", "omg_inheritance_attribute_mapping_test/empire"]], ActiveRecord::Base.connection.select_rows("SELECT name, type FROM companies").sort
         
     | 
| 
       592 
657 
     | 
    
         | 
| 
       593 
658 
     | 
    
         
             
                assert_equal [["a Startup", "InheritanceAttributeMappingTest::Empire"],
         
     | 
| 
       594 
659 
     | 
    
         
             
                              ["an Empire", "InheritanceAttributeMappingTest::Empire"]], Company.all.map { |a| [a.name, a.type] }.sort
         
     | 
| 
       595 
660 
     | 
    
         
             
              end
         
     | 
| 
       596 
661 
     | 
    
         | 
| 
       597 
662 
     | 
    
         
             
              def test_polymorphic_associations_custom_type
         
     | 
| 
       598 
     | 
    
         
            -
                startup = Startup.create! name:  
     | 
| 
      
 663 
     | 
    
         
            +
                startup = Startup.create! name: "a Startup"
         
     | 
| 
       599 
664 
     | 
    
         
             
                sponsor = Sponsor.create! sponsorable: startup
         
     | 
| 
       600 
665 
     | 
    
         | 
| 
       601 
     | 
    
         
            -
                assert_equal ["omg_inheritance_attribute_mapping_test/company"], ActiveRecord::Base.connection.select_values( 
     | 
| 
      
 666 
     | 
    
         
            +
                assert_equal ["omg_inheritance_attribute_mapping_test/company"], ActiveRecord::Base.connection.select_values("SELECT sponsorable_type FROM sponsors")
         
     | 
| 
       602 
667 
     | 
    
         | 
| 
       603 
     | 
    
         
            -
                sponsor = Sponsor. 
     | 
| 
      
 668 
     | 
    
         
            +
                sponsor = Sponsor.find(sponsor.id)
         
     | 
| 
       604 
669 
     | 
    
         
             
                assert_equal startup, sponsor.sponsorable
         
     | 
| 
       605 
670 
     | 
    
         
             
              end
         
     | 
| 
       606 
671 
     | 
    
         
             
            end
         
     |