ibm_db 3.0.5-x86-mingw32 → 5.0.5-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
 - data/CHANGES +4 -0
 - data/LICENSE +1 -1
 - data/ParameterizedQueries README +6 -6
 - data/README +38 -55
 - data/ext/Makefile +269 -0
 - data/ext/extconf.rb +34 -3
 - data/ext/gil_release_version +3 -0
 - data/ext/ibm_db-i386-mingw32.def +2 -0
 - data/ext/ibm_db.c +100 -108
 - data/ext/ibm_db.o +0 -0
 - data/ext/ibm_db.so +0 -0
 - data/ext/mkmf.log +110 -0
 - data/ext/ruby_ibm_db_cli.o +0 -0
 - data/ext/unicode_support_version +3 -0
 - data/lib/active_record/connection_adapters/ibm_db_adapter.rb +923 -527
 - data/lib/active_record/connection_adapters/ibmdb_adapter.rb +4 -1
 - data/lib/mswin32/ibm_db.rb +7 -39
 - data/lib/mswin32/rb2x/i386/ibm_db.so +0 -0
 - data/test/active_record/connection_adapters/fake_adapter.rb +8 -5
 - data/test/cases/adapter_test.rb +133 -58
 - data/test/cases/adapters/mysql2/active_schema_test.rb +193 -0
 - data/test/cases/adapters/mysql2/bind_parameter_test.rb +50 -0
 - data/test/cases/adapters/mysql2/boolean_test.rb +100 -0
 - data/test/cases/adapters/mysql2/case_sensitivity_test.rb +63 -0
 - data/test/cases/adapters/mysql2/charset_collation_test.rb +54 -0
 - data/test/cases/adapters/mysql2/connection_test.rb +210 -0
 - data/test/cases/adapters/mysql2/datetime_precision_quoting_test.rb +45 -0
 - data/test/cases/adapters/mysql2/enum_test.rb +26 -0
 - data/test/cases/adapters/mysql2/explain_test.rb +21 -0
 - data/test/cases/adapters/mysql2/json_test.rb +195 -0
 - data/test/cases/adapters/mysql2/mysql2_adapter_test.rb +83 -0
 - data/test/cases/adapters/mysql2/reserved_word_test.rb +152 -0
 - data/test/cases/adapters/mysql2/schema_migrations_test.rb +59 -0
 - data/test/cases/adapters/mysql2/schema_test.rb +126 -0
 - data/test/cases/adapters/mysql2/sp_test.rb +36 -0
 - data/test/cases/adapters/mysql2/sql_types_test.rb +14 -0
 - data/test/cases/adapters/mysql2/table_options_test.rb +42 -0
 - data/test/cases/adapters/mysql2/unsigned_type_test.rb +66 -0
 - data/test/cases/adapters/postgresql/active_schema_test.rb +98 -0
 - data/test/cases/adapters/postgresql/array_test.rb +339 -0
 - data/test/cases/adapters/postgresql/bit_string_test.rb +82 -0
 - data/test/cases/adapters/postgresql/bytea_test.rb +134 -0
 - data/test/cases/adapters/postgresql/case_insensitive_test.rb +26 -0
 - data/test/cases/adapters/postgresql/change_schema_test.rb +38 -0
 - data/test/cases/adapters/postgresql/cidr_test.rb +25 -0
 - data/test/cases/adapters/postgresql/citext_test.rb +78 -0
 - data/test/cases/adapters/postgresql/collation_test.rb +53 -0
 - data/test/cases/adapters/postgresql/composite_test.rb +132 -0
 - data/test/cases/adapters/postgresql/connection_test.rb +257 -0
 - data/test/cases/adapters/postgresql/datatype_test.rb +92 -0
 - data/test/cases/adapters/postgresql/domain_test.rb +47 -0
 - data/test/cases/adapters/postgresql/enum_test.rb +91 -0
 - data/test/cases/adapters/postgresql/explain_test.rb +20 -0
 - data/test/cases/adapters/postgresql/extension_migration_test.rb +63 -0
 - data/test/cases/adapters/postgresql/full_text_test.rb +44 -0
 - data/test/cases/adapters/postgresql/geometric_test.rb +378 -0
 - data/test/cases/adapters/postgresql/hstore_test.rb +382 -0
 - data/test/cases/adapters/postgresql/infinity_test.rb +69 -0
 - data/test/cases/adapters/postgresql/integer_test.rb +25 -0
 - data/test/cases/adapters/postgresql/json_test.rb +237 -0
 - data/test/cases/adapters/postgresql/ltree_test.rb +53 -0
 - data/test/cases/adapters/postgresql/money_test.rb +96 -0
 - data/test/cases/adapters/postgresql/network_test.rb +94 -0
 - data/test/cases/adapters/postgresql/numbers_test.rb +49 -0
 - data/test/cases/adapters/postgresql/postgresql_adapter_test.rb +405 -0
 - data/test/cases/adapters/postgresql/prepared_statements_test.rb +22 -0
 - data/test/cases/adapters/postgresql/quoting_test.rb +44 -0
 - data/test/cases/adapters/postgresql/range_test.rb +343 -0
 - data/test/cases/adapters/postgresql/referential_integrity_test.rb +111 -0
 - data/test/cases/adapters/postgresql/rename_table_test.rb +34 -0
 - data/test/cases/adapters/postgresql/schema_authorization_test.rb +119 -0
 - data/test/cases/adapters/postgresql/schema_test.rb +597 -0
 - data/test/cases/adapters/postgresql/serial_test.rb +154 -0
 - data/test/cases/adapters/postgresql/statement_pool_test.rb +41 -0
 - data/test/cases/adapters/postgresql/timestamp_test.rb +90 -0
 - data/test/cases/adapters/postgresql/type_lookup_test.rb +33 -0
 - data/test/cases/adapters/postgresql/utils_test.rb +62 -0
 - data/test/cases/adapters/postgresql/uuid_test.rb +294 -0
 - data/test/cases/adapters/postgresql/xml_test.rb +54 -0
 - data/test/cases/adapters/sqlite3/collation_test.rb +53 -0
 - data/test/cases/adapters/sqlite3/copy_table_test.rb +98 -0
 - data/test/cases/adapters/sqlite3/explain_test.rb +21 -0
 - data/test/cases/adapters/sqlite3/quoting_test.rb +101 -0
 - data/test/cases/adapters/sqlite3/sqlite3_adapter_test.rb +441 -0
 - data/test/cases/adapters/sqlite3/sqlite3_create_folder_test.rb +24 -0
 - data/test/cases/adapters/sqlite3/statement_pool_test.rb +20 -0
 - data/test/cases/aggregations_test.rb +11 -1
 - data/test/cases/ar_schema_test.rb +35 -50
 - data/test/cases/associations/association_scope_test.rb +1 -6
 - data/test/cases/associations/belongs_to_associations_test.rb +122 -10
 - data/test/cases/associations/bidirectional_destroy_dependencies_test.rb +41 -0
 - data/test/cases/associations/callbacks_test.rb +5 -7
 - data/test/cases/associations/cascaded_eager_loading_test.rb +1 -1
 - data/test/cases/associations/eager_load_nested_include_test.rb +1 -3
 - data/test/cases/associations/eager_test.rb +158 -73
 - data/test/cases/associations/extension_test.rb +7 -2
 - data/test/cases/associations/has_and_belongs_to_many_associations_test.rb +64 -32
 - data/test/cases/associations/has_many_associations_test.rb +362 -43
 - data/test/cases/associations/has_many_through_associations_test.rb +108 -41
 - data/test/cases/associations/has_one_associations_test.rb +105 -8
 - data/test/cases/associations/has_one_through_associations_test.rb +6 -3
 - data/test/cases/associations/inner_join_association_test.rb +3 -3
 - data/test/cases/associations/inverse_associations_test.rb +38 -11
 - data/test/cases/associations/join_model_test.rb +59 -36
 - data/test/cases/associations/left_outer_join_association_test.rb +88 -0
 - data/test/cases/associations/nested_through_associations_test.rb +2 -2
 - data/test/cases/associations/required_test.rb +25 -5
 - data/test/cases/associations_test.rb +39 -34
 - data/test/cases/attribute_decorators_test.rb +9 -8
 - data/test/cases/attribute_methods/read_test.rb +5 -5
 - data/test/cases/attribute_methods_test.rb +97 -40
 - data/test/cases/attribute_set_test.rb +64 -4
 - data/test/cases/attribute_test.rb +84 -18
 - data/test/cases/attributes_test.rb +151 -34
 - data/test/cases/autosave_association_test.rb +149 -36
 - data/test/cases/base_test.rb +290 -241
 - data/test/cases/batches_test.rb +299 -22
 - data/test/cases/binary_test.rb +2 -10
 - data/test/cases/bind_parameter_test.rb +76 -66
 - data/test/cases/cache_key_test.rb +26 -0
 - data/test/cases/calculations_test.rb +167 -15
 - data/test/cases/callbacks_test.rb +161 -68
 - data/test/cases/coders/json_test.rb +15 -0
 - data/test/cases/collection_cache_key_test.rb +115 -0
 - data/test/cases/column_definition_test.rb +26 -57
 - data/test/cases/comment_test.rb +145 -0
 - data/test/cases/connection_adapters/adapter_leasing_test.rb +5 -3
 - data/test/cases/connection_adapters/connection_handler_test.rb +128 -21
 - data/test/cases/connection_adapters/connection_specification_test.rb +1 -1
 - data/test/cases/connection_adapters/merge_and_resolve_default_url_config_test.rb +0 -38
 - data/test/cases/connection_adapters/mysql_type_lookup_test.rb +5 -1
 - data/test/cases/connection_adapters/schema_cache_test.rb +8 -3
 - data/test/cases/connection_adapters/type_lookup_test.rb +15 -7
 - data/test/cases/connection_management_test.rb +46 -56
 - data/test/cases/connection_pool_test.rb +195 -20
 - data/test/cases/connection_specification/resolver_test.rb +15 -0
 - data/test/cases/counter_cache_test.rb +10 -5
 - data/test/cases/custom_locking_test.rb +1 -1
 - data/test/cases/database_statements_test.rb +18 -3
 - data/test/cases/{invalid_date_test.rb → date_test.rb} +13 -1
 - data/test/cases/date_time_precision_test.rb +107 -0
 - data/test/cases/defaults_test.rb +85 -89
 - data/test/cases/dirty_test.rb +30 -52
 - data/test/cases/disconnected_test.rb +4 -2
 - data/test/cases/enum_test.rb +178 -24
 - data/test/cases/errors_test.rb +16 -0
 - data/test/cases/explain_test.rb +32 -21
 - data/test/cases/finder_test.rb +273 -148
 - data/test/cases/fixture_set/file_test.rb +18 -0
 - data/test/cases/fixtures_test.rb +112 -32
 - data/test/cases/forbidden_attributes_protection_test.rb +69 -3
 - data/test/cases/helper.rb +10 -16
 - data/test/cases/hot_compatibility_test.rb +89 -1
 - data/test/cases/inheritance_test.rb +284 -53
 - data/test/cases/integration_test.rb +23 -7
 - data/test/cases/invalid_connection_test.rb +4 -2
 - data/test/cases/invertible_migration_test.rb +124 -32
 - data/test/cases/json_serialization_test.rb +11 -2
 - data/test/cases/locking_test.rb +22 -6
 - data/test/cases/log_subscriber_test.rb +106 -17
 - data/test/cases/migration/change_schema_test.rb +60 -114
 - data/test/cases/migration/change_table_test.rb +34 -2
 - data/test/cases/migration/column_attributes_test.rb +7 -23
 - data/test/cases/migration/column_positioning_test.rb +8 -8
 - data/test/cases/migration/columns_test.rb +17 -11
 - data/test/cases/migration/command_recorder_test.rb +47 -2
 - data/test/cases/migration/compatibility_test.rb +118 -0
 - data/test/cases/migration/create_join_table_test.rb +21 -12
 - data/test/cases/migration/foreign_key_test.rb +52 -18
 - data/test/cases/migration/index_test.rb +14 -12
 - data/test/cases/migration/logger_test.rb +1 -1
 - data/test/cases/migration/pending_migrations_test.rb +0 -1
 - data/test/cases/migration/references_foreign_key_test.rb +59 -7
 - data/test/cases/migration/references_index_test.rb +4 -4
 - data/test/cases/migration/references_statements_test.rb +26 -6
 - data/test/cases/migration/rename_table_test.rb +25 -25
 - data/test/cases/migration_test.rb +279 -81
 - data/test/cases/migrator_test.rb +91 -8
 - data/test/cases/mixin_test.rb +0 -2
 - data/test/cases/modules_test.rb +3 -4
 - data/test/cases/multiparameter_attributes_test.rb +24 -2
 - data/test/cases/multiple_db_test.rb +11 -4
 - data/test/cases/nested_attributes_test.rb +61 -33
 - data/test/cases/persistence_test.rb +102 -10
 - data/test/cases/pooled_connections_test.rb +3 -3
 - data/test/cases/primary_keys_test.rb +170 -31
 - data/test/cases/query_cache_test.rb +216 -96
 - data/test/cases/quoting_test.rb +65 -19
 - data/test/cases/readonly_test.rb +2 -1
 - data/test/cases/reflection_test.rb +68 -22
 - data/test/cases/relation/delegation_test.rb +3 -8
 - data/test/cases/relation/merging_test.rb +10 -14
 - data/test/cases/relation/mutation_test.rb +42 -24
 - data/test/cases/relation/or_test.rb +92 -0
 - data/test/cases/relation/predicate_builder_test.rb +4 -2
 - data/test/cases/relation/record_fetch_warning_test.rb +40 -0
 - data/test/cases/relation/where_chain_test.rb +23 -99
 - data/test/cases/relation/where_clause_test.rb +182 -0
 - data/test/cases/relation/where_test.rb +45 -23
 - data/test/cases/relation_test.rb +67 -58
 - data/test/cases/relations_test.rb +249 -38
 - data/test/cases/result_test.rb +10 -0
 - data/test/cases/sanitize_test.rb +108 -15
 - data/test/cases/schema_dumper_test.rb +119 -125
 - data/test/cases/schema_loading_test.rb +52 -0
 - data/test/cases/scoping/default_scoping_test.rb +113 -39
 - data/test/cases/scoping/named_scoping_test.rb +46 -9
 - data/test/cases/scoping/relation_scoping_test.rb +47 -4
 - data/test/cases/secure_token_test.rb +32 -0
 - data/test/cases/serialization_test.rb +1 -1
 - data/test/cases/serialized_attribute_test.rb +93 -6
 - data/test/cases/statement_cache_test.rb +38 -0
 - data/test/cases/store_test.rb +2 -1
 - data/test/cases/suppressor_test.rb +63 -0
 - data/test/cases/tasks/database_tasks_test.rb +73 -9
 - data/test/cases/tasks/mysql_rake_test.rb +139 -118
 - data/test/cases/tasks/postgresql_rake_test.rb +60 -6
 - data/test/cases/tasks/sqlite_rake_test.rb +30 -3
 - data/test/cases/test_case.rb +28 -20
 - data/test/cases/test_fixtures_test.rb +36 -0
 - data/test/cases/time_precision_test.rb +103 -0
 - data/test/cases/timestamp_test.rb +44 -10
 - data/test/cases/touch_later_test.rb +121 -0
 - data/test/cases/transaction_callbacks_test.rb +128 -62
 - data/test/cases/transaction_isolation_test.rb +2 -2
 - data/test/cases/transactions_test.rb +61 -43
 - data/test/cases/type/adapter_specific_registry_test.rb +133 -0
 - data/test/cases/type/date_time_test.rb +14 -0
 - data/test/cases/type/integer_test.rb +2 -96
 - data/test/cases/type/string_test.rb +0 -14
 - data/test/cases/type_test.rb +39 -0
 - data/test/cases/types_test.rb +1 -118
 - data/test/cases/unconnected_test.rb +1 -1
 - data/test/cases/validations/absence_validation_test.rb +73 -0
 - data/test/cases/validations/association_validation_test.rb +13 -2
 - data/test/cases/validations/i18n_validation_test.rb +6 -10
 - data/test/cases/validations/length_validation_test.rb +62 -30
 - data/test/cases/validations/presence_validation_test.rb +36 -1
 - data/test/cases/validations/uniqueness_validation_test.rb +128 -37
 - data/test/cases/validations_repair_helper.rb +2 -6
 - data/test/cases/validations_test.rb +36 -7
 - data/test/cases/view_test.rb +102 -5
 - data/test/cases/yaml_serialization_test.rb +21 -26
 - data/test/config.example.yml +97 -0
 - data/test/fixtures/bad_posts.yml +9 -0
 - data/test/fixtures/books.yml +20 -0
 - data/test/fixtures/content.yml +3 -0
 - data/test/fixtures/content_positions.yml +3 -0
 - data/test/fixtures/dead_parrots.yml +5 -0
 - data/test/fixtures/live_parrots.yml +4 -0
 - data/test/fixtures/naked/yml/parrots.yml +2 -0
 - data/test/fixtures/naked/yml/trees.yml +3 -0
 - data/test/fixtures/nodes.yml +29 -0
 - data/test/fixtures/other_comments.yml +6 -0
 - data/test/fixtures/other_dogs.yml +2 -0
 - data/test/fixtures/other_posts.yml +7 -0
 - data/test/fixtures/price_estimates.yml +10 -1
 - data/test/fixtures/trees.yml +3 -0
 - data/test/migrations/10_urban/9_add_expressions.rb +1 -1
 - data/test/migrations/decimal/1_give_me_big_numbers.rb +1 -1
 - data/test/migrations/magic/1_currencies_have_symbols.rb +1 -1
 - data/test/migrations/missing/1000_people_have_middle_names.rb +2 -2
 - data/test/migrations/missing/1_people_have_last_names.rb +2 -2
 - data/test/migrations/missing/3_we_need_reminders.rb +2 -2
 - data/test/migrations/missing/4_innocent_jointable.rb +2 -2
 - data/test/migrations/rename/1_we_need_things.rb +2 -2
 - data/test/migrations/rename/2_rename_things.rb +2 -2
 - data/test/migrations/to_copy/1_people_have_hobbies.rb +1 -1
 - data/test/migrations/to_copy/2_people_have_descriptions.rb +1 -1
 - data/test/migrations/to_copy2/1_create_articles.rb +1 -1
 - data/test/migrations/to_copy2/2_create_comments.rb +1 -1
 - data/test/migrations/to_copy_with_name_collision/1_people_have_hobbies.rb +1 -1
 - data/test/migrations/to_copy_with_timestamps/20090101010101_people_have_hobbies.rb +1 -1
 - data/test/migrations/to_copy_with_timestamps/20090101010202_people_have_descriptions.rb +1 -1
 - data/test/migrations/to_copy_with_timestamps2/20090101010101_create_articles.rb +1 -1
 - data/test/migrations/to_copy_with_timestamps2/20090101010202_create_comments.rb +1 -1
 - data/test/migrations/valid/1_valid_people_have_last_names.rb +1 -1
 - data/test/migrations/valid/2_we_need_reminders.rb +2 -2
 - data/test/migrations/valid/3_innocent_jointable.rb +2 -2
 - data/test/migrations/valid_with_subdirectories/1_valid_people_have_last_names.rb +1 -1
 - data/test/migrations/valid_with_subdirectories/sub/2_we_need_reminders.rb +2 -2
 - data/test/migrations/valid_with_subdirectories/sub1/3_innocent_jointable.rb +2 -2
 - data/test/migrations/valid_with_timestamps/20100101010101_valid_with_timestamps_people_have_last_names.rb +1 -1
 - data/test/migrations/valid_with_timestamps/20100201010101_valid_with_timestamps_we_need_reminders.rb +1 -1
 - data/test/migrations/valid_with_timestamps/20100301010101_valid_with_timestamps_innocent_jointable.rb +1 -1
 - data/test/migrations/version_check/20131219224947_migration_version_check.rb +1 -1
 - data/test/models/admin/randomly_named_c1.rb +6 -2
 - data/test/models/aircraft.rb +1 -0
 - data/test/models/author.rb +4 -7
 - data/test/models/bird.rb +1 -1
 - data/test/models/book.rb +5 -0
 - data/test/models/bulb.rb +2 -1
 - data/test/models/car.rb +3 -0
 - data/test/models/cat.rb +10 -0
 - data/test/models/chef.rb +1 -0
 - data/test/models/club.rb +2 -0
 - data/test/models/comment.rb +17 -5
 - data/test/models/company.rb +4 -2
 - data/test/models/company_in_module.rb +1 -1
 - data/test/models/contact.rb +1 -1
 - data/test/models/content.rb +40 -0
 - data/test/models/customer.rb +8 -2
 - data/test/models/developer.rb +19 -0
 - data/test/models/face.rb +1 -1
 - data/test/models/guitar.rb +4 -0
 - data/test/models/hotel.rb +2 -0
 - data/test/models/member.rb +1 -0
 - data/test/models/member_detail.rb +4 -3
 - data/test/models/mentor.rb +3 -0
 - data/test/models/mocktail_designer.rb +2 -0
 - data/test/models/node.rb +5 -0
 - data/test/models/non_primary_key.rb +2 -0
 - data/test/models/notification.rb +3 -0
 - data/test/models/other_dog.rb +5 -0
 - data/test/models/owner.rb +4 -1
 - data/test/models/parrot.rb +6 -7
 - data/test/models/person.rb +0 -1
 - data/test/models/pet.rb +3 -0
 - data/test/models/pet_treasure.rb +6 -0
 - data/test/models/pirate.rb +3 -3
 - data/test/models/post.rb +18 -9
 - data/test/models/project.rb +9 -0
 - data/test/models/randomly_named_c1.rb +1 -1
 - data/test/models/recipe.rb +3 -0
 - data/test/models/ship.rb +8 -2
 - data/test/models/tag.rb +6 -0
 - data/test/models/topic.rb +2 -8
 - data/test/models/tree.rb +3 -0
 - data/test/models/tuning_peg.rb +4 -0
 - data/test/models/user.rb +14 -0
 - data/test/models/uuid_item.rb +6 -0
 - data/test/schema/mysql2_specific_schema.rb +33 -23
 - data/test/schema/oracle_specific_schema.rb +1 -4
 - data/test/schema/postgresql_specific_schema.rb +36 -124
 - data/test/schema/schema.rb +170 -65
 - data/test/schema/schema.rb.original +1057 -0
 - data/test/schema/sqlite_specific_schema.rb +1 -5
 - data/test/support/connection.rb +1 -0
 - data/test/support/schema_dumping_helper.rb +1 -1
 - data/test/support/yaml_compatibility_fixtures/rails_4_1.yml +22 -0
 - data/test/support/yaml_compatibility_fixtures/rails_4_2_0.yml +182 -0
 - metadata +146 -30
 - data/lib/mswin32/rb19x/ibm_db.so +0 -0
 - data/lib/mswin32/rb21x/i386/ibm_db.so +0 -0
 - data/lib/mswin32/rb22x/i386/ibm_db.so +0 -0
 - data/lib/mswin32/rb23x/i386/ibm_db.so +0 -0
 - data/test/cases/associations/deprecated_counter_cache_on_has_many_through_test.rb +0 -26
 - data/test/cases/attribute_methods/serialization_test.rb +0 -29
 - data/test/cases/migration/change_schema_test - Copy.rb +0 -448
 - data/test/cases/migration/foreign_key_test - Changed.rb +0 -325
 - data/test/cases/migration/table_and_index_test.rb +0 -24
 - data/test/cases/relation/where_test2.rb +0 -36
 - data/test/cases/type/decimal_test.rb +0 -56
 - data/test/cases/type/unsigned_integer_test.rb +0 -18
 - data/test/cases/xml_serialization_test.rb +0 -457
 - data/test/fixtures/naked/csv/accounts.csv +0 -1
 - data/test/schema/mysql_specific_schema.rb +0 -70
 
| 
         @@ -123,6 +123,24 @@ END 
     | 
|
| 
       123 
123 
     | 
    
         
             
                    end
         
     | 
| 
       124 
124 
     | 
    
         
             
                  end
         
     | 
| 
       125 
125 
     | 
    
         | 
| 
      
 126 
     | 
    
         
            +
                  def test_removes_fixture_config_row
         
     | 
| 
      
 127 
     | 
    
         
            +
                    File.open(::File.join(FIXTURES_ROOT, 'other_posts.yml')) do |fh|
         
     | 
| 
      
 128 
     | 
    
         
            +
                      assert_equal(['second_welcome'], fh.each.map { |name, _| name })
         
     | 
| 
      
 129 
     | 
    
         
            +
                    end
         
     | 
| 
      
 130 
     | 
    
         
            +
                  end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
                  def test_extracts_model_class_from_config_row
         
     | 
| 
      
 133 
     | 
    
         
            +
                    File.open(::File.join(FIXTURES_ROOT, 'other_posts.yml')) do |fh|
         
     | 
| 
      
 134 
     | 
    
         
            +
                      assert_equal 'Post', fh.model_class
         
     | 
| 
      
 135 
     | 
    
         
            +
                    end
         
     | 
| 
      
 136 
     | 
    
         
            +
                  end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                  def test_erb_filename
         
     | 
| 
      
 139 
     | 
    
         
            +
                    filename = 'filename.yaml'
         
     | 
| 
      
 140 
     | 
    
         
            +
                    erb = File.new(filename).send(:prepare_erb, "<% Rails.env %>\n")
         
     | 
| 
      
 141 
     | 
    
         
            +
                    assert_equal erb.filename, filename
         
     | 
| 
      
 142 
     | 
    
         
            +
                  end
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
       126 
144 
     | 
    
         
             
                  private
         
     | 
| 
       127 
145 
     | 
    
         
             
                  def tmp_yaml(name, contents)
         
     | 
| 
       128 
146 
     | 
    
         
             
                    t = Tempfile.new name
         
     | 
    
        data/test/cases/fixtures_test.rb
    CHANGED
    
    | 
         @@ -7,16 +7,18 @@ require 'models/binary' 
     | 
|
| 
       7 
7 
     | 
    
         
             
            require 'models/book'
         
     | 
| 
       8 
8 
     | 
    
         
             
            require 'models/bulb'
         
     | 
| 
       9 
9 
     | 
    
         
             
            require 'models/category'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'models/comment'
         
     | 
| 
       10 
11 
     | 
    
         
             
            require 'models/company'
         
     | 
| 
       11 
12 
     | 
    
         
             
            require 'models/computer'
         
     | 
| 
       12 
13 
     | 
    
         
             
            require 'models/course'
         
     | 
| 
       13 
14 
     | 
    
         
             
            require 'models/developer'
         
     | 
| 
       14 
     | 
    
         
            -
            require  
     | 
| 
      
 15 
     | 
    
         
            +
            require "models/dog"
         
     | 
| 
      
 16 
     | 
    
         
            +
            require 'models/doubloon'
         
     | 
| 
       15 
17 
     | 
    
         
             
            require 'models/joke'
         
     | 
| 
       16 
18 
     | 
    
         
             
            require 'models/matey'
         
     | 
| 
      
 19 
     | 
    
         
            +
            require "models/other_dog"
         
     | 
| 
       17 
20 
     | 
    
         
             
            require 'models/parrot'
         
     | 
| 
       18 
21 
     | 
    
         
             
            require 'models/pirate'
         
     | 
| 
       19 
     | 
    
         
            -
            require 'models/doubloon'
         
     | 
| 
       20 
22 
     | 
    
         
             
            require 'models/post'
         
     | 
| 
       21 
23 
     | 
    
         
             
            require 'models/randomly_named_c1'
         
     | 
| 
       22 
24 
     | 
    
         
             
            require 'models/reply'
         
     | 
| 
         @@ -29,10 +31,10 @@ require 'tempfile' 
     | 
|
| 
       29 
31 
     | 
    
         | 
| 
       30 
32 
     | 
    
         
             
            class FixturesTest < ActiveRecord::TestCase
         
     | 
| 
       31 
33 
     | 
    
         
             
              self.use_instantiated_fixtures = true
         
     | 
| 
       32 
     | 
    
         
            -
              self. 
     | 
| 
      
 34 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       33 
35 
     | 
    
         | 
| 
       34 
36 
     | 
    
         
             
              # other_topics fixture should not be included here
         
     | 
| 
       35 
     | 
    
         
            -
              fixtures :topics, :developers, :accounts, :tasks, :categories, :funny_jokes, :binaries, :traffic_lights 
     | 
| 
      
 37 
     | 
    
         
            +
              fixtures :topics, :developers, :accounts, :tasks, :categories, :funny_jokes, :binaries, :traffic_lights
         
     | 
| 
       36 
38 
     | 
    
         | 
| 
       37 
39 
     | 
    
         
             
              FIXTURES = %w( accounts binaries companies customers
         
     | 
| 
       38 
40 
     | 
    
         
             
                             developers developers_projects entrants
         
     | 
| 
         @@ -184,7 +186,6 @@ class FixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       184 
186 
     | 
    
         
             
              end
         
     | 
| 
       185 
187 
     | 
    
         | 
| 
       186 
188 
     | 
    
         
             
              def test_fixtures_from_root_yml_with_instantiation
         
     | 
| 
       187 
     | 
    
         
            -
                # assert_equal 2, @accounts.size
         
     | 
| 
       188 
189 
     | 
    
         
             
                assert_equal 50, @unknown.credit_limit
         
     | 
| 
       189 
190 
     | 
    
         
             
              end
         
     | 
| 
       190 
191 
     | 
    
         | 
| 
         @@ -263,18 +264,19 @@ class FixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       263 
264 
     | 
    
         
             
              def test_fixtures_are_set_up_with_database_env_variable
         
     | 
| 
       264 
265 
     | 
    
         
             
                db_url_tmp = ENV['DATABASE_URL']
         
     | 
| 
       265 
266 
     | 
    
         
             
                ENV['DATABASE_URL'] = "sqlite3::memory:"
         
     | 
| 
       266 
     | 
    
         
            -
                ActiveRecord::Base. 
     | 
| 
       267 
     | 
    
         
            -
             
     | 
| 
       268 
     | 
    
         
            -
             
     | 
| 
      
 267 
     | 
    
         
            +
                ActiveRecord::Base.stub(:configurations, {}) do
         
     | 
| 
      
 268 
     | 
    
         
            +
                  test_case = Class.new(ActiveRecord::TestCase) do
         
     | 
| 
      
 269 
     | 
    
         
            +
                    fixtures :accounts
         
     | 
| 
       269 
270 
     | 
    
         | 
| 
       270 
     | 
    
         
            -
             
     | 
| 
       271 
     | 
    
         
            -
             
     | 
| 
      
 271 
     | 
    
         
            +
                    def test_fixtures
         
     | 
| 
      
 272 
     | 
    
         
            +
                      assert accounts(:signals37)
         
     | 
| 
      
 273 
     | 
    
         
            +
                    end
         
     | 
| 
       272 
274 
     | 
    
         
             
                  end
         
     | 
| 
       273 
     | 
    
         
            -
                end
         
     | 
| 
       274 
275 
     | 
    
         | 
| 
       275 
     | 
    
         
            -
             
     | 
| 
      
 276 
     | 
    
         
            +
                  result = test_case.new(:test_fixtures).run
         
     | 
| 
       276 
277 
     | 
    
         | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
      
 278 
     | 
    
         
            +
                  assert result.passed?, "Expected #{result.name} to pass:\n#{result}"
         
     | 
| 
      
 279 
     | 
    
         
            +
                end
         
     | 
| 
       278 
280 
     | 
    
         
             
              ensure
         
     | 
| 
       279 
281 
     | 
    
         
             
                ENV['DATABASE_URL'] = db_url_tmp
         
     | 
| 
       280 
282 
     | 
    
         
             
              end
         
     | 
| 
         @@ -412,9 +414,11 @@ class FixturesWithoutInstantiationTest < ActiveRecord::TestCase 
     | 
|
| 
       412 
414 
     | 
    
         
             
              end
         
     | 
| 
       413 
415 
     | 
    
         | 
| 
       414 
416 
     | 
    
         
             
              def test_reloading_fixtures_through_accessor_methods
         
     | 
| 
      
 417 
     | 
    
         
            +
                topic = Struct.new(:title)
         
     | 
| 
       415 
418 
     | 
    
         
             
                assert_equal "The First Topic", topics(:first).title
         
     | 
| 
       416 
     | 
    
         
            -
                @loaded_fixtures['topics']['first'] 
     | 
| 
       417 
     | 
    
         
            -
             
     | 
| 
      
 419 
     | 
    
         
            +
                assert_called(@loaded_fixtures['topics']['first'], :find, returns: topic.new("Fresh Topic!")) do
         
     | 
| 
      
 420 
     | 
    
         
            +
                  assert_equal "Fresh Topic!", topics(:first, true).title
         
     | 
| 
      
 421 
     | 
    
         
            +
                end
         
     | 
| 
       418 
422 
     | 
    
         
             
              end
         
     | 
| 
       419 
423 
     | 
    
         
             
            end
         
     | 
| 
       420 
424 
     | 
    
         | 
| 
         @@ -431,7 +435,7 @@ end 
     | 
|
| 
       431 
435 
     | 
    
         | 
| 
       432 
436 
     | 
    
         
             
            class TransactionalFixturesTest < ActiveRecord::TestCase
         
     | 
| 
       433 
437 
     | 
    
         
             
              self.use_instantiated_fixtures = true
         
     | 
| 
       434 
     | 
    
         
            -
              self. 
     | 
| 
      
 438 
     | 
    
         
            +
              self.use_transactional_tests = true
         
     | 
| 
       435 
439 
     | 
    
         | 
| 
       436 
440 
     | 
    
         
             
              fixtures :topics
         
     | 
| 
       437 
441 
     | 
    
         | 
| 
         @@ -477,7 +481,6 @@ class SetupSubclassTest < SetupTest 
     | 
|
| 
       477 
481 
     | 
    
         
             
              end
         
     | 
| 
       478 
482 
     | 
    
         
             
            end
         
     | 
| 
       479 
483 
     | 
    
         | 
| 
       480 
     | 
    
         
            -
             
     | 
| 
       481 
484 
     | 
    
         
             
            class OverlappingFixturesTest < ActiveRecord::TestCase
         
     | 
| 
       482 
485 
     | 
    
         
             
              fixtures :topics, :developers
         
     | 
| 
       483 
486 
     | 
    
         
             
              fixtures :developers, :accounts
         
     | 
| 
         @@ -518,12 +521,44 @@ class OverRideFixtureMethodTest < ActiveRecord::TestCase 
     | 
|
| 
       518 
521 
     | 
    
         
             
              end
         
     | 
| 
       519 
522 
     | 
    
         
             
            end
         
     | 
| 
       520 
523 
     | 
    
         | 
| 
      
 524 
     | 
    
         
            +
            class FixtureWithSetModelClassTest < ActiveRecord::TestCase
         
     | 
| 
      
 525 
     | 
    
         
            +
              fixtures :other_posts, :other_comments
         
     | 
| 
      
 526 
     | 
    
         
            +
             
     | 
| 
      
 527 
     | 
    
         
            +
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
      
 528 
     | 
    
         
            +
              # and thus takes into account the +set_model_class+.
         
     | 
| 
      
 529 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
      
 530 
     | 
    
         
            +
             
     | 
| 
      
 531 
     | 
    
         
            +
              def test_uses_fixture_class_defined_in_yaml
         
     | 
| 
      
 532 
     | 
    
         
            +
                assert_kind_of Post, other_posts(:second_welcome)
         
     | 
| 
      
 533 
     | 
    
         
            +
              end
         
     | 
| 
      
 534 
     | 
    
         
            +
             
     | 
| 
      
 535 
     | 
    
         
            +
              def test_loads_the_associations_to_fixtures_with_set_model_class
         
     | 
| 
      
 536 
     | 
    
         
            +
                post = other_posts(:second_welcome)
         
     | 
| 
      
 537 
     | 
    
         
            +
                comment = other_comments(:second_greetings)
         
     | 
| 
      
 538 
     | 
    
         
            +
                assert_equal [comment], post.comments
         
     | 
| 
      
 539 
     | 
    
         
            +
                assert_equal post, comment.post
         
     | 
| 
      
 540 
     | 
    
         
            +
              end
         
     | 
| 
      
 541 
     | 
    
         
            +
            end
         
     | 
| 
      
 542 
     | 
    
         
            +
             
     | 
| 
      
 543 
     | 
    
         
            +
            class SetFixtureClassPrevailsTest < ActiveRecord::TestCase
         
     | 
| 
      
 544 
     | 
    
         
            +
              set_fixture_class bad_posts: Post
         
     | 
| 
      
 545 
     | 
    
         
            +
              fixtures :bad_posts
         
     | 
| 
      
 546 
     | 
    
         
            +
             
     | 
| 
      
 547 
     | 
    
         
            +
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
      
 548 
     | 
    
         
            +
              # and thus takes into account the +set_model_class+.
         
     | 
| 
      
 549 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
      
 550 
     | 
    
         
            +
             
     | 
| 
      
 551 
     | 
    
         
            +
              def test_uses_set_fixture_class
         
     | 
| 
      
 552 
     | 
    
         
            +
                assert_kind_of Post, bad_posts(:bad_welcome)
         
     | 
| 
      
 553 
     | 
    
         
            +
              end
         
     | 
| 
      
 554 
     | 
    
         
            +
            end
         
     | 
| 
      
 555 
     | 
    
         
            +
             
     | 
| 
       521 
556 
     | 
    
         
             
            class CheckSetTableNameFixturesTest < ActiveRecord::TestCase
         
     | 
| 
       522 
557 
     | 
    
         
             
              set_fixture_class :funny_jokes => Joke
         
     | 
| 
       523 
558 
     | 
    
         
             
              fixtures :funny_jokes
         
     | 
| 
       524 
559 
     | 
    
         
             
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
       525 
560 
     | 
    
         
             
              # and thus takes into account our set_fixture_class
         
     | 
| 
       526 
     | 
    
         
            -
              self. 
     | 
| 
      
 561 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       527 
562 
     | 
    
         | 
| 
       528 
563 
     | 
    
         
             
              def test_table_method
         
     | 
| 
       529 
564 
     | 
    
         
             
                assert_kind_of Joke, funny_jokes(:a_joke)
         
     | 
| 
         @@ -535,7 +570,7 @@ class FixtureNameIsNotTableNameFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       535 
570 
     | 
    
         
             
              fixtures :items
         
     | 
| 
       536 
571 
     | 
    
         
             
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
       537 
572 
     | 
    
         
             
              # and thus takes into account our set_fixture_class
         
     | 
| 
       538 
     | 
    
         
            -
              self. 
     | 
| 
      
 573 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       539 
574 
     | 
    
         | 
| 
       540 
575 
     | 
    
         
             
              def test_named_accessor
         
     | 
| 
       541 
576 
     | 
    
         
             
                assert_kind_of Book, items(:dvd)
         
     | 
| 
         @@ -547,7 +582,7 @@ class FixtureNameIsNotTableNameMultipleFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       547 
582 
     | 
    
         
             
              fixtures :items, :funny_jokes
         
     | 
| 
       548 
583 
     | 
    
         
             
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
       549 
584 
     | 
    
         
             
              # and thus takes into account our set_fixture_class
         
     | 
| 
       550 
     | 
    
         
            -
              self. 
     | 
| 
      
 585 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       551 
586 
     | 
    
         | 
| 
       552 
587 
     | 
    
         
             
              def test_named_accessor_of_differently_named_fixture
         
     | 
| 
       553 
588 
     | 
    
         
             
                assert_kind_of Book, items(:dvd)
         
     | 
| 
         @@ -561,7 +596,7 @@ end 
     | 
|
| 
       561 
596 
     | 
    
         
             
            class CustomConnectionFixturesTest < ActiveRecord::TestCase
         
     | 
| 
       562 
597 
     | 
    
         
             
              set_fixture_class :courses => Course
         
     | 
| 
       563 
598 
     | 
    
         
             
              fixtures :courses
         
     | 
| 
       564 
     | 
    
         
            -
              self. 
     | 
| 
      
 599 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       565 
600 
     | 
    
         | 
| 
       566 
601 
     | 
    
         
             
              def test_leaky_destroy
         
     | 
| 
       567 
602 
     | 
    
         
             
                assert_nothing_raised { courses(:ruby) }
         
     | 
| 
         @@ -576,7 +611,7 @@ end 
     | 
|
| 
       576 
611 
     | 
    
         
             
            class TransactionalFixturesOnCustomConnectionTest < ActiveRecord::TestCase
         
     | 
| 
       577 
612 
     | 
    
         
             
              set_fixture_class :courses => Course
         
     | 
| 
       578 
613 
     | 
    
         
             
              fixtures :courses
         
     | 
| 
       579 
     | 
    
         
            -
              self. 
     | 
| 
      
 614 
     | 
    
         
            +
              self.use_transactional_tests = true
         
     | 
| 
       580 
615 
     | 
    
         | 
| 
       581 
616 
     | 
    
         
             
              def test_leaky_destroy
         
     | 
| 
       582 
617 
     | 
    
         
             
                assert_nothing_raised { courses(:ruby) }
         
     | 
| 
         @@ -592,7 +627,7 @@ class InvalidTableNameFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       592 
627 
     | 
    
         
             
              fixtures :funny_jokes
         
     | 
| 
       593 
628 
     | 
    
         
             
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
       594 
629 
     | 
    
         
             
              # and thus takes into account our lack of set_fixture_class
         
     | 
| 
       595 
     | 
    
         
            -
              self. 
     | 
| 
      
 630 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       596 
631 
     | 
    
         | 
| 
       597 
632 
     | 
    
         
             
              def test_raises_error
         
     | 
| 
       598 
633 
     | 
    
         
             
                assert_raise ActiveRecord::FixtureClassNotFound do
         
     | 
| 
         @@ -606,7 +641,7 @@ class CheckEscapedYamlFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       606 
641 
     | 
    
         
             
              fixtures :funny_jokes
         
     | 
| 
       607 
642 
     | 
    
         
             
              # Set to false to blow away fixtures cache and ensure our fixtures are loaded
         
     | 
| 
       608 
643 
     | 
    
         
             
              # and thus takes into account our set_fixture_class
         
     | 
| 
       609 
     | 
    
         
            -
              self. 
     | 
| 
      
 644 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       610 
645 
     | 
    
         | 
| 
       611 
646 
     | 
    
         
             
              def test_proper_escaped_fixture
         
     | 
| 
       612 
647 
     | 
    
         
             
                assert_equal "The \\n Aristocrats\nAte the candy\n", funny_jokes(:another_joke).name
         
     | 
| 
         @@ -676,7 +711,7 @@ class LoadAllFixturesWithPathnameTest < ActiveRecord::TestCase 
     | 
|
| 
       676 
711 
     | 
    
         
             
            end
         
     | 
| 
       677 
712 
     | 
    
         | 
| 
       678 
713 
     | 
    
         
             
            class FasterFixturesTest < ActiveRecord::TestCase
         
     | 
| 
       679 
     | 
    
         
            -
              self. 
     | 
| 
      
 714 
     | 
    
         
            +
              self.use_transactional_tests = false
         
     | 
| 
       680 
715 
     | 
    
         
             
              fixtures :categories, :authors
         
     | 
| 
       681 
716 
     | 
    
         | 
| 
       682 
717 
     | 
    
         
             
              def load_extra_fixture(name)
         
     | 
| 
         @@ -702,7 +737,8 @@ class FasterFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       702 
737 
     | 
    
         
             
            end
         
     | 
| 
       703 
738 
     | 
    
         | 
| 
       704 
739 
     | 
    
         
             
            class FoxyFixturesTest < ActiveRecord::TestCase
         
     | 
| 
       705 
     | 
    
         
            -
              fixtures :parrots, :parrots_pirates, :pirates, :treasures, :mateys, :ships, :computers, 
     | 
| 
      
 740 
     | 
    
         
            +
              fixtures :parrots, :parrots_pirates, :pirates, :treasures, :mateys, :ships, :computers,
         
     | 
| 
      
 741 
     | 
    
         
            +
                       :developers, :"admin/accounts", :"admin/users", :live_parrots, :dead_parrots, :books
         
     | 
| 
       706 
742 
     | 
    
         | 
| 
       707 
743 
     | 
    
         
             
              if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
         
     | 
| 
       708 
744 
     | 
    
         
             
                require 'models/uuid_parent'
         
     | 
| 
         @@ -822,6 +858,10 @@ class FoxyFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       822 
858 
     | 
    
         
             
                assert_equal("X marks the spot!", pirates(:mark).catchphrase)
         
     | 
| 
       823 
859 
     | 
    
         
             
              end
         
     | 
| 
       824 
860 
     | 
    
         | 
| 
      
 861 
     | 
    
         
            +
              def test_supports_label_interpolation_for_integer_label
         
     | 
| 
      
 862 
     | 
    
         
            +
                assert_equal("#1 pirate!", pirates(1).catchphrase)
         
     | 
| 
      
 863 
     | 
    
         
            +
              end
         
     | 
| 
      
 864 
     | 
    
         
            +
             
     | 
| 
       825 
865 
     | 
    
         
             
              def test_supports_polymorphic_belongs_to
         
     | 
| 
       826 
866 
     | 
    
         
             
                assert_equal(pirates(:redbeard), treasures(:sapphire).looter)
         
     | 
| 
       827 
867 
     | 
    
         
             
                assert_equal(parrots(:louis), treasures(:ruby).looter)
         
     | 
| 
         @@ -838,10 +878,23 @@ class FoxyFixturesTest < ActiveRecord::TestCase 
     | 
|
| 
       838 
878 
     | 
    
         
             
                assert_equal pirates(:blackbeard), parrots(:polly).killer
         
     | 
| 
       839 
879 
     | 
    
         
             
              end
         
     | 
| 
       840 
880 
     | 
    
         | 
| 
      
 881 
     | 
    
         
            +
              def test_supports_sti_with_respective_files
         
     | 
| 
      
 882 
     | 
    
         
            +
                assert_kind_of LiveParrot, live_parrots(:dusty)
         
     | 
| 
      
 883 
     | 
    
         
            +
                assert_kind_of DeadParrot, dead_parrots(:deadbird)
         
     | 
| 
      
 884 
     | 
    
         
            +
                assert_equal pirates(:blackbeard), dead_parrots(:deadbird).killer
         
     | 
| 
      
 885 
     | 
    
         
            +
              end
         
     | 
| 
      
 886 
     | 
    
         
            +
             
     | 
| 
       841 
887 
     | 
    
         
             
              def test_namespaced_models
         
     | 
| 
       842 
888 
     | 
    
         
             
                assert admin_accounts(:signals37).users.include?(admin_users(:david))
         
     | 
| 
       843 
889 
     | 
    
         
             
                assert_equal 2, admin_accounts(:signals37).users.size
         
     | 
| 
       844 
890 
     | 
    
         
             
              end
         
     | 
| 
      
 891 
     | 
    
         
            +
             
     | 
| 
      
 892 
     | 
    
         
            +
              def test_resolves_enums
         
     | 
| 
      
 893 
     | 
    
         
            +
                assert books(:awdr).published?
         
     | 
| 
      
 894 
     | 
    
         
            +
                assert books(:awdr).read?
         
     | 
| 
      
 895 
     | 
    
         
            +
                assert books(:rfr).proposed?
         
     | 
| 
      
 896 
     | 
    
         
            +
                assert books(:ddd).published?
         
     | 
| 
      
 897 
     | 
    
         
            +
              end
         
     | 
| 
       845 
898 
     | 
    
         
             
            end
         
     | 
| 
       846 
899 
     | 
    
         | 
| 
       847 
900 
     | 
    
         
             
            class ActiveSupportSubclassWithFixturesTest < ActiveRecord::TestCase
         
     | 
| 
         @@ -860,9 +913,9 @@ class CustomNameForFixtureOrModelTest < ActiveRecord::TestCase 
     | 
|
| 
       860 
913 
     | 
    
         
             
              set_fixture_class :randomly_named_a9         =>
         
     | 
| 
       861 
914 
     | 
    
         
             
                                    ClassNameThatDoesNotFollowCONVENTIONS,
         
     | 
| 
       862 
915 
     | 
    
         
             
                                :'admin/randomly_named_a9' =>
         
     | 
| 
       863 
     | 
    
         
            -
                                    Admin:: 
     | 
| 
      
 916 
     | 
    
         
            +
                                    Admin::ClassNameThatDoesNotFollowCONVENTIONS1,
         
     | 
| 
       864 
917 
     | 
    
         
             
                                'admin/randomly_named_b0'  =>
         
     | 
| 
       865 
     | 
    
         
            -
                                    Admin:: 
     | 
| 
      
 918 
     | 
    
         
            +
                                    Admin::ClassNameThatDoesNotFollowCONVENTIONS2
         
     | 
| 
       866 
919 
     | 
    
         | 
| 
       867 
920 
     | 
    
         
             
              fixtures :randomly_named_a9, 'admin/randomly_named_a9',
         
     | 
| 
       868 
921 
     | 
    
         
             
                       :'admin/randomly_named_b0'
         
     | 
| 
         @@ -873,15 +926,15 @@ class CustomNameForFixtureOrModelTest < ActiveRecord::TestCase 
     | 
|
| 
       873 
926 
     | 
    
         
             
              end
         
     | 
| 
       874 
927 
     | 
    
         | 
| 
       875 
928 
     | 
    
         
             
              def test_named_accessor_for_randomly_named_namespaced_fixture_and_class
         
     | 
| 
       876 
     | 
    
         
            -
                assert_kind_of Admin:: 
     | 
| 
      
 929 
     | 
    
         
            +
                assert_kind_of Admin::ClassNameThatDoesNotFollowCONVENTIONS1,
         
     | 
| 
       877 
930 
     | 
    
         
             
                               admin_randomly_named_a9(:first_instance)
         
     | 
| 
       878 
     | 
    
         
            -
                assert_kind_of Admin:: 
     | 
| 
      
 931 
     | 
    
         
            +
                assert_kind_of Admin::ClassNameThatDoesNotFollowCONVENTIONS2,
         
     | 
| 
       879 
932 
     | 
    
         
             
                               admin_randomly_named_b0(:second_instance)
         
     | 
| 
       880 
933 
     | 
    
         
             
              end
         
     | 
| 
       881 
934 
     | 
    
         | 
| 
       882 
935 
     | 
    
         
             
              def test_table_name_is_defined_in_the_model
         
     | 
| 
       883 
     | 
    
         
            -
                assert_equal ' 
     | 
| 
       884 
     | 
    
         
            -
                assert_equal ' 
     | 
| 
      
 936 
     | 
    
         
            +
                assert_equal 'randomly_named_table2', ActiveRecord::FixtureSet::all_loaded_fixtures["admin/randomly_named_a9"].table_name
         
     | 
| 
      
 937 
     | 
    
         
            +
                assert_equal 'randomly_named_table2', Admin::ClassNameThatDoesNotFollowCONVENTIONS1.table_name
         
     | 
| 
       885 
938 
     | 
    
         
             
              end
         
     | 
| 
       886 
939 
     | 
    
         
             
            end
         
     | 
| 
       887 
940 
     | 
    
         | 
| 
         @@ -906,3 +959,30 @@ class FixturesWithAbstractBelongsTo < ActiveRecord::TestCase 
     | 
|
| 
       906 
959 
     | 
    
         
             
                assert_equal pirates(:blackbeard), doubloons(:blackbeards_doubloon).pirate
         
     | 
| 
       907 
960 
     | 
    
         
             
              end
         
     | 
| 
       908 
961 
     | 
    
         
             
            end
         
     | 
| 
      
 962 
     | 
    
         
            +
             
     | 
| 
      
 963 
     | 
    
         
            +
            class FixtureClassNamesTest < ActiveRecord::TestCase
         
     | 
| 
      
 964 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 965 
     | 
    
         
            +
                @saved_cache = self.fixture_class_names.dup
         
     | 
| 
      
 966 
     | 
    
         
            +
              end
         
     | 
| 
      
 967 
     | 
    
         
            +
             
     | 
| 
      
 968 
     | 
    
         
            +
              def teardown
         
     | 
| 
      
 969 
     | 
    
         
            +
                self.fixture_class_names.replace(@saved_cache)
         
     | 
| 
      
 970 
     | 
    
         
            +
              end
         
     | 
| 
      
 971 
     | 
    
         
            +
             
     | 
| 
      
 972 
     | 
    
         
            +
              test "fixture_class_names returns nil for unregistered identifier" do
         
     | 
| 
      
 973 
     | 
    
         
            +
                assert_nil self.fixture_class_names['unregistered_identifier']
         
     | 
| 
      
 974 
     | 
    
         
            +
              end
         
     | 
| 
      
 975 
     | 
    
         
            +
            end
         
     | 
| 
      
 976 
     | 
    
         
            +
             
     | 
| 
      
 977 
     | 
    
         
            +
            class SameNameDifferentDatabaseFixturesTest < ActiveRecord::TestCase
         
     | 
| 
      
 978 
     | 
    
         
            +
              fixtures :dogs, :other_dogs
         
     | 
| 
      
 979 
     | 
    
         
            +
             
     | 
| 
      
 980 
     | 
    
         
            +
              test "fixtures are properly loaded" do
         
     | 
| 
      
 981 
     | 
    
         
            +
                # Force loading the fixtures again to reproduce issue
         
     | 
| 
      
 982 
     | 
    
         
            +
                ActiveRecord::FixtureSet.reset_cache
         
     | 
| 
      
 983 
     | 
    
         
            +
                create_fixtures("dogs", "other_dogs")
         
     | 
| 
      
 984 
     | 
    
         
            +
             
     | 
| 
      
 985 
     | 
    
         
            +
                assert_kind_of Dog, dogs(:sophie)
         
     | 
| 
      
 986 
     | 
    
         
            +
                assert_kind_of OtherDog, other_dogs(:lassie)
         
     | 
| 
      
 987 
     | 
    
         
            +
              end
         
     | 
| 
      
 988 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,14 +1,20 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'cases/helper'
         
     | 
| 
       2 
2 
     | 
    
         
             
            require 'active_support/core_ext/hash/indifferent_access'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       4 
4 
     | 
    
         
             
            require 'models/company'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'models/person'
         
     | 
| 
      
 6 
     | 
    
         
            +
            require 'models/ship'
         
     | 
| 
      
 7 
     | 
    
         
            +
            require 'models/ship_part'
         
     | 
| 
      
 8 
     | 
    
         
            +
            require 'models/treasure'
         
     | 
| 
       5 
9 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
            class ProtectedParams 
     | 
| 
      
 10 
     | 
    
         
            +
            class ProtectedParams
         
     | 
| 
       7 
11 
     | 
    
         
             
              attr_accessor :permitted
         
     | 
| 
       8 
12 
     | 
    
         
             
              alias :permitted? :permitted
         
     | 
| 
       9 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
              delegate :keys, :key?, :has_key?, :empty?, to: :@parameters
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       10 
16 
     | 
    
         
             
              def initialize(attributes)
         
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 17 
     | 
    
         
            +
                @parameters = attributes.with_indifferent_access
         
     | 
| 
       12 
18 
     | 
    
         
             
                @permitted = false
         
     | 
| 
       13 
19 
     | 
    
         
             
              end
         
     | 
| 
       14 
20 
     | 
    
         | 
| 
         @@ -17,6 +23,18 @@ class ProtectedParams < ActiveSupport::HashWithIndifferentAccess 
     | 
|
| 
       17 
23 
     | 
    
         
             
                self
         
     | 
| 
       18 
24 
     | 
    
         
             
              end
         
     | 
| 
       19 
25 
     | 
    
         | 
| 
      
 26 
     | 
    
         
            +
              def [](key)
         
     | 
| 
      
 27 
     | 
    
         
            +
                @parameters[key]
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              def to_h
         
     | 
| 
      
 31 
     | 
    
         
            +
                @parameters
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def stringify_keys
         
     | 
| 
      
 35 
     | 
    
         
            +
                dup
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       20 
38 
     | 
    
         
             
              def dup
         
     | 
| 
       21 
39 
     | 
    
         
             
                super.tap do |duplicate|
         
     | 
| 
       22 
40 
     | 
    
         
             
                  duplicate.instance_variable_set :@permitted, @permitted
         
     | 
| 
         @@ -75,6 +93,13 @@ class ForbiddenAttributesProtectionTest < ActiveRecord::TestCase 
     | 
|
| 
       75 
93 
     | 
    
         
             
                end
         
     | 
| 
       76 
94 
     | 
    
         
             
              end
         
     | 
| 
       77 
95 
     | 
    
         | 
| 
      
 96 
     | 
    
         
            +
              def test_create_with_works_with_permitted_params
         
     | 
| 
      
 97 
     | 
    
         
            +
                params = ProtectedParams.new(first_name: 'Guille').permit!
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                person = Person.create_with(params).create!
         
     | 
| 
      
 100 
     | 
    
         
            +
                assert_equal 'Guille', person.first_name
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
       78 
103 
     | 
    
         
             
              def test_create_with_works_with_params_values
         
     | 
| 
       79 
104 
     | 
    
         
             
                params = ProtectedParams.new(first_name: 'Guille')
         
     | 
| 
       80 
105 
     | 
    
         | 
| 
         @@ -90,10 +115,51 @@ class ForbiddenAttributesProtectionTest < ActiveRecord::TestCase 
     | 
|
| 
       90 
115 
     | 
    
         
             
                end
         
     | 
| 
       91 
116 
     | 
    
         
             
              end
         
     | 
| 
       92 
117 
     | 
    
         | 
| 
      
 118 
     | 
    
         
            +
              def test_where_works_with_permitted_params
         
     | 
| 
      
 119 
     | 
    
         
            +
                params = ProtectedParams.new(first_name: 'Guille').permit!
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                person = Person.where(params).create!
         
     | 
| 
      
 122 
     | 
    
         
            +
                assert_equal 'Guille', person.first_name
         
     | 
| 
      
 123 
     | 
    
         
            +
              end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
       93 
125 
     | 
    
         
             
              def test_where_works_with_params_values
         
     | 
| 
       94 
126 
     | 
    
         
             
                params = ProtectedParams.new(first_name: 'Guille')
         
     | 
| 
       95 
127 
     | 
    
         | 
| 
       96 
128 
     | 
    
         
             
                person = Person.where(first_name: params[:first_name]).create!
         
     | 
| 
       97 
129 
     | 
    
         
             
                assert_equal 'Guille', person.first_name
         
     | 
| 
       98 
130 
     | 
    
         
             
              end
         
     | 
| 
      
 131 
     | 
    
         
            +
             
     | 
| 
      
 132 
     | 
    
         
            +
              def test_where_not_checks_permitted
         
     | 
| 
      
 133 
     | 
    
         
            +
                params = ProtectedParams.new(first_name: 'Guille', gender: 'm')
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                assert_raises(ActiveModel::ForbiddenAttributesError) do
         
     | 
| 
      
 136 
     | 
    
         
            +
                  Person.where().not(params)
         
     | 
| 
      
 137 
     | 
    
         
            +
                end
         
     | 
| 
      
 138 
     | 
    
         
            +
              end
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
              def test_where_not_works_with_permitted_params
         
     | 
| 
      
 141 
     | 
    
         
            +
                params = ProtectedParams.new(first_name: 'Guille').permit!
         
     | 
| 
      
 142 
     | 
    
         
            +
                Person.create!(params)
         
     | 
| 
      
 143 
     | 
    
         
            +
                assert_empty Person.where.not(params).select {|p| p.first_name == 'Guille' }
         
     | 
| 
      
 144 
     | 
    
         
            +
              end
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
              def test_strong_params_style_objects_work_with_singular_associations
         
     | 
| 
      
 147 
     | 
    
         
            +
                params = ProtectedParams.new( name: "Stern", ship_attributes: ProtectedParams.new(name: "The Black Rock").permit!).permit!
         
     | 
| 
      
 148 
     | 
    
         
            +
                part = ShipPart.new(params)
         
     | 
| 
      
 149 
     | 
    
         
            +
             
     | 
| 
      
 150 
     | 
    
         
            +
                assert_equal "Stern", part.name
         
     | 
| 
      
 151 
     | 
    
         
            +
                assert_equal "The Black Rock", part.ship.name
         
     | 
| 
      
 152 
     | 
    
         
            +
              end
         
     | 
| 
      
 153 
     | 
    
         
            +
             
     | 
| 
      
 154 
     | 
    
         
            +
              def test_strong_params_style_objects_work_with_collection_associations
         
     | 
| 
      
 155 
     | 
    
         
            +
                params = ProtectedParams.new(
         
     | 
| 
      
 156 
     | 
    
         
            +
                  trinkets_attributes: ProtectedParams.new(
         
     | 
| 
      
 157 
     | 
    
         
            +
                    "0" => ProtectedParams.new(name: "Necklace").permit!,
         
     | 
| 
      
 158 
     | 
    
         
            +
                    "1" => ProtectedParams.new(name: "Spoon").permit! ) ).permit!
         
     | 
| 
      
 159 
     | 
    
         
            +
                part = ShipPart.new(params)
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                assert_equal "Necklace", part.trinkets[0].name
         
     | 
| 
      
 162 
     | 
    
         
            +
                assert_equal "Spoon", part.trinkets[1].name
         
     | 
| 
      
 163 
     | 
    
         
            +
              end
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
       99 
165 
     | 
    
         
             
            end
         
     | 
    
        data/test/cases/helper.rb
    CHANGED
    
    | 
         @@ -1,8 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.expand_path('../../../../load_paths', __FILE__)
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
1 
     | 
    
         
             
            require 'config'
         
     | 
| 
       4 
2 
     | 
    
         | 
| 
       5 
3 
     | 
    
         
             
            require 'active_support/testing/autorun'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'active_support/testing/method_call_assertions'
         
     | 
| 
       6 
5 
     | 
    
         
             
            require 'stringio'
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
       8 
7 
     | 
    
         
             
            require 'active_record'
         
     | 
| 
         @@ -24,15 +23,15 @@ ActiveSupport::Deprecation.debug = true 
     | 
|
| 
       24 
23 
     | 
    
         
             
            # Disable available locale checks to avoid warnings running the test suite.
         
     | 
| 
       25 
24 
     | 
    
         
             
            I18n.enforce_available_locales = false
         
     | 
| 
       26 
25 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
            # Enable raise errors in after_commit and after_rollback.
         
     | 
| 
       28 
     | 
    
         
            -
            ActiveRecord::Base.raise_in_transactional_callbacks = true
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
26 
     | 
    
         
             
            # Connect to the database
         
     | 
| 
       31 
27 
     | 
    
         
             
            ARTest.connect
         
     | 
| 
       32 
28 
     | 
    
         | 
| 
       33 
29 
     | 
    
         
             
            # Quote "type" if it's a reserved word for the current connection.
         
     | 
| 
       34 
30 
     | 
    
         
             
            QUOTED_TYPE = ActiveRecord::Base.connection.quote_column_name('type')
         
     | 
| 
       35 
31 
     | 
    
         | 
| 
      
 32 
     | 
    
         
            +
            # FIXME: Remove this when the deprecation cycle on TZ aware types by default ends.
         
     | 
| 
      
 33 
     | 
    
         
            +
            ActiveRecord::Base.time_zone_aware_types << :time
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       36 
35 
     | 
    
         
             
            def current_adapter?(*types)
         
     | 
| 
       37 
36 
     | 
    
         
             
              types.any? do |type|
         
     | 
| 
       38 
37 
     | 
    
         
             
                ActiveRecord::ConnectionAdapters.const_defined?(type) &&
         
     | 
| 
         @@ -45,13 +44,12 @@ def in_memory_db? 
     | 
|
| 
       45 
44 
     | 
    
         
             
              ActiveRecord::Base.connection_pool.spec.config[:database] == ":memory:"
         
     | 
| 
       46 
45 
     | 
    
         
             
            end
         
     | 
| 
       47 
46 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
            def  
     | 
| 
       49 
     | 
    
         
            -
               
     | 
| 
       50 
     | 
    
         
            -
                ActiveRecord::Base.connection.send(:version).join(".") >= "5.6.0"
         
     | 
| 
      
 47 
     | 
    
         
            +
            def subsecond_precision_supported?
         
     | 
| 
      
 48 
     | 
    
         
            +
              ActiveRecord::Base.connection.supports_datetime_with_precision?
         
     | 
| 
       51 
49 
     | 
    
         
             
            end
         
     | 
| 
       52 
50 
     | 
    
         | 
| 
       53 
51 
     | 
    
         
             
            def mysql_enforcing_gtid_consistency?
         
     | 
| 
       54 
     | 
    
         
            -
              current_adapter?(: 
     | 
| 
      
 52 
     | 
    
         
            +
              current_adapter?(:Mysql2Adapter) && 'ON' == ActiveRecord::Base.connection.show_variable('enforce_gtid_consistency')
         
     | 
| 
       55 
53 
     | 
    
         
             
            end
         
     | 
| 
       56 
54 
     | 
    
         | 
| 
       57 
55 
     | 
    
         
             
            def supports_savepoints?
         
     | 
| 
         @@ -124,7 +122,7 @@ def enable_extension!(extension, connection) 
     | 
|
| 
       124 
122 
     | 
    
         
             
              return connection.reconnect! if connection.extension_enabled?(extension)
         
     | 
| 
       125 
123 
     | 
    
         | 
| 
       126 
124 
     | 
    
         
             
              connection.enable_extension extension
         
     | 
| 
       127 
     | 
    
         
            -
              connection.commit_db_transaction
         
     | 
| 
      
 125 
     | 
    
         
            +
              connection.commit_db_transaction if connection.transaction_open?
         
     | 
| 
       128 
126 
     | 
    
         
             
              connection.reconnect!
         
     | 
| 
       129 
127 
     | 
    
         
             
            end
         
     | 
| 
       130 
128 
     | 
    
         | 
| 
         @@ -140,10 +138,11 @@ require "cases/validations_repair_helper" 
     | 
|
| 
       140 
138 
     | 
    
         
             
            class ActiveSupport::TestCase
         
     | 
| 
       141 
139 
     | 
    
         
             
              include ActiveRecord::TestFixtures
         
     | 
| 
       142 
140 
     | 
    
         
             
              include ActiveRecord::ValidationsRepairHelper
         
     | 
| 
      
 141 
     | 
    
         
            +
              include ActiveSupport::Testing::MethodCallAssertions
         
     | 
| 
       143 
142 
     | 
    
         | 
| 
       144 
143 
     | 
    
         
             
              self.fixture_path = FIXTURES_ROOT
         
     | 
| 
       145 
144 
     | 
    
         
             
              self.use_instantiated_fixtures  = false
         
     | 
| 
       146 
     | 
    
         
            -
              self. 
     | 
| 
      
 145 
     | 
    
         
            +
              self.use_transactional_tests = true
         
     | 
| 
       147 
146 
     | 
    
         | 
| 
       148 
147 
     | 
    
         
             
              def create_fixtures(*fixture_set_names, &block)
         
     | 
| 
       149 
148 
     | 
    
         
             
                ActiveRecord::FixtureSet.create_fixtures(ActiveSupport::TestCase.fixture_path, fixture_set_names, fixture_class_names, &block)
         
     | 
| 
         @@ -203,8 +202,3 @@ module InTimeZone 
     | 
|
| 
       203 
202 
     | 
    
         
             
            end
         
     | 
| 
       204 
203 
     | 
    
         | 
| 
       205 
204 
     | 
    
         
             
            require 'mocha/setup' # FIXME: stop using mocha
         
     | 
| 
       206 
     | 
    
         
            -
             
     | 
| 
       207 
     | 
    
         
            -
            # FIXME: we have tests that depend on run order, we should fix that and
         
     | 
| 
       208 
     | 
    
         
            -
            # remove this method call.
         
     | 
| 
       209 
     | 
    
         
            -
            require 'active_support/test_case'
         
     | 
| 
       210 
     | 
    
         
            -
            ActiveSupport::TestCase.test_order = :sorted
         
     |