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
data/test/cases/migrator_test.rb
CHANGED
@@ -2,11 +2,11 @@ require "cases/helper"
|
|
2
2
|
require "cases/migration/helper"
|
3
3
|
|
4
4
|
class MigratorTest < ActiveRecord::TestCase
|
5
|
-
self.
|
5
|
+
self.use_transactional_tests = false
|
6
6
|
|
7
7
|
# Use this class to sense if migrations have gone
|
8
8
|
# up or down.
|
9
|
-
class Sensor < ActiveRecord::Migration
|
9
|
+
class Sensor < ActiveRecord::Migration::Current
|
10
10
|
attr_reader :went_up, :went_down
|
11
11
|
|
12
12
|
def initialize name = self.class.name, version = nil
|
@@ -123,6 +123,67 @@ class MigratorTest < ActiveRecord::TestCase
|
|
123
123
|
assert_equal migration_list.last, migrations.first
|
124
124
|
end
|
125
125
|
|
126
|
+
def test_migrations_status
|
127
|
+
path = MIGRATIONS_ROOT + "/valid"
|
128
|
+
|
129
|
+
ActiveRecord::SchemaMigration.create(version: 2)
|
130
|
+
ActiveRecord::SchemaMigration.create(version: 10)
|
131
|
+
|
132
|
+
assert_equal [
|
133
|
+
["down", "001", "Valid people have last names"],
|
134
|
+
["up", "002", "We need reminders"],
|
135
|
+
["down", "003", "Innocent jointable"],
|
136
|
+
["up", "010", "********** NO FILE **********"],
|
137
|
+
], ActiveRecord::Migrator.migrations_status(path)
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_migrations_status_in_subdirectories
|
141
|
+
path = MIGRATIONS_ROOT + "/valid_with_subdirectories"
|
142
|
+
|
143
|
+
ActiveRecord::SchemaMigration.create(version: 2)
|
144
|
+
ActiveRecord::SchemaMigration.create(version: 10)
|
145
|
+
|
146
|
+
assert_equal [
|
147
|
+
["down", "001", "Valid people have last names"],
|
148
|
+
["up", "002", "We need reminders"],
|
149
|
+
["down", "003", "Innocent jointable"],
|
150
|
+
["up", "010", "********** NO FILE **********"],
|
151
|
+
], ActiveRecord::Migrator.migrations_status(path)
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_migrations_status_with_schema_define_in_subdirectories
|
155
|
+
path = MIGRATIONS_ROOT + "/valid_with_subdirectories"
|
156
|
+
prev_paths = ActiveRecord::Migrator.migrations_paths
|
157
|
+
ActiveRecord::Migrator.migrations_paths = path
|
158
|
+
|
159
|
+
ActiveRecord::Schema.define(version: 3) do
|
160
|
+
end
|
161
|
+
|
162
|
+
assert_equal [
|
163
|
+
["up", "001", "Valid people have last names"],
|
164
|
+
["up", "002", "We need reminders"],
|
165
|
+
["up", "003", "Innocent jointable"],
|
166
|
+
], ActiveRecord::Migrator.migrations_status(path)
|
167
|
+
ensure
|
168
|
+
ActiveRecord::Migrator.migrations_paths = prev_paths
|
169
|
+
end
|
170
|
+
|
171
|
+
def test_migrations_status_from_two_directories
|
172
|
+
paths = [MIGRATIONS_ROOT + "/valid_with_timestamps", MIGRATIONS_ROOT + "/to_copy_with_timestamps"]
|
173
|
+
|
174
|
+
ActiveRecord::SchemaMigration.create(version: "20100101010101")
|
175
|
+
ActiveRecord::SchemaMigration.create(version: "20160528010101")
|
176
|
+
|
177
|
+
assert_equal [
|
178
|
+
["down", "20090101010101", "People have hobbies"],
|
179
|
+
["down", "20090101010202", "People have descriptions"],
|
180
|
+
["up", "20100101010101", "Valid with timestamps people have last names"],
|
181
|
+
["down", "20100201010101", "Valid with timestamps we need reminders"],
|
182
|
+
["down", "20100301010101", "Valid with timestamps innocent jointable"],
|
183
|
+
["up", "20160528010101", "********** NO FILE **********"],
|
184
|
+
], ActiveRecord::Migrator.migrations_status(paths)
|
185
|
+
end
|
186
|
+
|
126
187
|
def test_migrator_interleaved_migrations
|
127
188
|
pass_one = [Sensor.new('One', 1)]
|
128
189
|
|
@@ -149,7 +210,7 @@ class MigratorTest < ActiveRecord::TestCase
|
|
149
210
|
def test_up_calls_up
|
150
211
|
migrations = [Sensor.new(nil, 0), Sensor.new(nil, 1), Sensor.new(nil, 2)]
|
151
212
|
ActiveRecord::Migrator.new(:up, migrations).migrate
|
152
|
-
assert migrations.all?
|
213
|
+
assert migrations.all?(&:went_up)
|
153
214
|
assert migrations.all? { |m| !m.went_down }
|
154
215
|
assert_equal 2, ActiveRecord::Migrator.current_version
|
155
216
|
end
|
@@ -160,7 +221,7 @@ class MigratorTest < ActiveRecord::TestCase
|
|
160
221
|
migrations = [Sensor.new(nil, 0), Sensor.new(nil, 1), Sensor.new(nil, 2)]
|
161
222
|
ActiveRecord::Migrator.new(:down, migrations).migrate
|
162
223
|
assert migrations.all? { |m| !m.went_up }
|
163
|
-
assert migrations.all?
|
224
|
+
assert migrations.all?(&:went_down)
|
164
225
|
assert_equal 0, ActiveRecord::Migrator.current_version
|
165
226
|
end
|
166
227
|
|
@@ -237,6 +298,7 @@ class MigratorTest < ActiveRecord::TestCase
|
|
237
298
|
def test_migrator_verbosity
|
238
299
|
_, migrations = sensors(3)
|
239
300
|
|
301
|
+
ActiveRecord::Migration.verbose = true
|
240
302
|
ActiveRecord::Migrator.new(:up, migrations, 1).migrate
|
241
303
|
assert_not_equal 0, ActiveRecord::Migration.message_count
|
242
304
|
|
@@ -249,7 +311,6 @@ class MigratorTest < ActiveRecord::TestCase
|
|
249
311
|
def test_migrator_verbosity_off
|
250
312
|
_, migrations = sensors(3)
|
251
313
|
|
252
|
-
ActiveRecord::Migration.message_count = 0
|
253
314
|
ActiveRecord::Migration.verbose = false
|
254
315
|
ActiveRecord::Migrator.new(:up, migrations, 1).migrate
|
255
316
|
assert_equal 0, ActiveRecord::Migration.message_count
|
@@ -290,6 +351,27 @@ class MigratorTest < ActiveRecord::TestCase
|
|
290
351
|
assert_equal [[:up, 1], [:up, 2], [:up, 3]], calls
|
291
352
|
end
|
292
353
|
|
354
|
+
def test_migrator_output_when_running_multiple_migrations
|
355
|
+
_, migrator = migrator_class(3)
|
356
|
+
|
357
|
+
result = migrator.migrate("valid")
|
358
|
+
assert_equal(3, result.count)
|
359
|
+
|
360
|
+
# Nothing migrated from duplicate run
|
361
|
+
result = migrator.migrate("valid")
|
362
|
+
assert_equal(0, result.count)
|
363
|
+
|
364
|
+
result = migrator.rollback("valid")
|
365
|
+
assert_equal(1, result.count)
|
366
|
+
end
|
367
|
+
|
368
|
+
def test_migrator_output_when_running_single_migration
|
369
|
+
_, migrator = migrator_class(1)
|
370
|
+
result = migrator.run(:up, "valid", 1)
|
371
|
+
|
372
|
+
assert_equal(1, result.version)
|
373
|
+
end
|
374
|
+
|
293
375
|
def test_migrator_rollback
|
294
376
|
_, migrator = migrator_class(3)
|
295
377
|
|
@@ -312,10 +394,11 @@ class MigratorTest < ActiveRecord::TestCase
|
|
312
394
|
def test_migrator_db_has_no_schema_migrations_table
|
313
395
|
_, migrator = migrator_class(3)
|
314
396
|
|
315
|
-
ActiveRecord::Base.connection.
|
316
|
-
|
397
|
+
ActiveRecord::Base.connection.drop_table "schema_migrations"
|
398
|
+
#, if_exists: true
|
399
|
+
ActiveSupport::Deprecation.silence { assert_not ActiveRecord::Base.connection.table_exists?('schema_migrations') }
|
317
400
|
migrator.migrate("valid", 1)
|
318
|
-
assert ActiveRecord::Base.connection.table_exists?('schema_migrations')
|
401
|
+
ActiveSupport::Deprecation.silence { assert ActiveRecord::Base.connection.table_exists?('schema_migrations') }
|
319
402
|
end
|
320
403
|
|
321
404
|
def test_migrator_forward
|
data/test/cases/mixin_test.rb
CHANGED
@@ -61,8 +61,6 @@ class TouchTest < ActiveRecord::TestCase
|
|
61
61
|
|
62
62
|
# Make sure Mixin.record_timestamps gets reset, even if this test fails,
|
63
63
|
# so that other tests do not fail because Mixin.record_timestamps == false
|
64
|
-
rescue Exception => e
|
65
|
-
raise e
|
66
64
|
ensure
|
67
65
|
Mixin.record_timestamps = true
|
68
66
|
end
|
data/test/cases/modules_test.rb
CHANGED
@@ -63,17 +63,16 @@ class ModulesTest < ActiveRecord::TestCase
|
|
63
63
|
def test_assign_ids
|
64
64
|
firm = MyApplication::Business::Firm.first
|
65
65
|
|
66
|
-
assert_nothing_raised
|
66
|
+
assert_nothing_raised do
|
67
67
|
firm.client_ids = [MyApplication::Business::Client.first.id]
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
-
#
|
72
|
-
# the old join model, to test that. See http://dev.rubyonrails.org/ticket/9640
|
71
|
+
# An eager loading condition to force the eager loading model into the old join model.
|
73
72
|
def test_eager_loading_in_modules
|
74
73
|
clients = []
|
75
74
|
|
76
|
-
assert_nothing_raised
|
75
|
+
assert_nothing_raised do
|
77
76
|
clients << MyApplication::Business::Client.references(:accounts).merge!(:includes => {:firm => :account}, :where => 'accounts.id IS NOT NULL').find(3)
|
78
77
|
clients << MyApplication::Business::Client.includes(:firm => :account).find(3)
|
79
78
|
end
|
@@ -199,6 +199,7 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
|
|
199
199
|
|
200
200
|
def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes
|
201
201
|
with_timezone_config default: :utc, aware_attributes: true, zone: -28800 do
|
202
|
+
Topic.reset_column_information
|
202
203
|
attributes = {
|
203
204
|
"written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
|
204
205
|
"written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
|
@@ -209,6 +210,22 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
|
|
209
210
|
assert_equal Time.utc(2004, 6, 24, 16, 24, 0), topic.written_on.time
|
210
211
|
assert_equal Time.zone, topic.written_on.time_zone
|
211
212
|
end
|
213
|
+
ensure
|
214
|
+
Topic.reset_column_information
|
215
|
+
end
|
216
|
+
|
217
|
+
def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes_and_invalid_time_params
|
218
|
+
with_timezone_config aware_attributes: true do
|
219
|
+
Topic.reset_column_information
|
220
|
+
attributes = {
|
221
|
+
"written_on(1i)" => "2004", "written_on(2i)" => "", "written_on(3i)" => ""
|
222
|
+
}
|
223
|
+
topic = Topic.find(1)
|
224
|
+
topic.attributes = attributes
|
225
|
+
assert_nil topic.written_on
|
226
|
+
end
|
227
|
+
ensure
|
228
|
+
Topic.reset_column_information
|
212
229
|
end
|
213
230
|
|
214
231
|
def test_multiparameter_attributes_on_time_with_time_zone_aware_attributes_false
|
@@ -227,6 +244,7 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
|
|
227
244
|
def test_multiparameter_attributes_on_time_with_skip_time_zone_conversion_for_attributes
|
228
245
|
with_timezone_config default: :utc, aware_attributes: true, zone: -28800 do
|
229
246
|
Topic.skip_time_zone_conversion_for_attributes = [:written_on]
|
247
|
+
Topic.reset_column_information
|
230
248
|
attributes = {
|
231
249
|
"written_on(1i)" => "2004", "written_on(2i)" => "6", "written_on(3i)" => "24",
|
232
250
|
"written_on(4i)" => "16", "written_on(5i)" => "24", "written_on(6i)" => "00"
|
@@ -238,21 +256,25 @@ class MultiParameterAttributeTest < ActiveRecord::TestCase
|
|
238
256
|
end
|
239
257
|
ensure
|
240
258
|
Topic.skip_time_zone_conversion_for_attributes = []
|
259
|
+
Topic.reset_column_information
|
241
260
|
end
|
242
261
|
|
243
262
|
# Oracle does not have a TIME datatype.
|
244
263
|
unless current_adapter?(:OracleAdapter)
|
245
264
|
def test_multiparameter_attributes_on_time_only_column_with_time_zone_aware_attributes_does_not_do_time_zone_conversion
|
246
265
|
with_timezone_config default: :utc, aware_attributes: true, zone: -28800 do
|
266
|
+
Topic.reset_column_information
|
247
267
|
attributes = {
|
248
268
|
"bonus_time(1i)" => "2000", "bonus_time(2i)" => "1", "bonus_time(3i)" => "1",
|
249
269
|
"bonus_time(4i)" => "16", "bonus_time(5i)" => "24"
|
250
270
|
}
|
251
271
|
topic = Topic.find(1)
|
252
272
|
topic.attributes = attributes
|
253
|
-
assert_equal Time.
|
254
|
-
|
273
|
+
assert_equal Time.zone.local(2000, 1, 1, 16, 24, 0), topic.bonus_time
|
274
|
+
assert_not topic.bonus_time.utc?
|
255
275
|
end
|
276
|
+
ensure
|
277
|
+
Topic.reset_column_information
|
256
278
|
end
|
257
279
|
end
|
258
280
|
|
@@ -4,7 +4,7 @@ require 'models/bird'
|
|
4
4
|
require 'models/course'
|
5
5
|
|
6
6
|
class MultipleDbTest < ActiveRecord::TestCase
|
7
|
-
self.
|
7
|
+
self.use_transactional_tests = false
|
8
8
|
|
9
9
|
def setup
|
10
10
|
@courses = create_fixtures("courses") { Course.retrieve_connection }
|
@@ -24,6 +24,13 @@ class MultipleDbTest < ActiveRecord::TestCase
|
|
24
24
|
assert_equal(ActiveRecord::Base.connection, Entrant.connection)
|
25
25
|
end
|
26
26
|
|
27
|
+
def test_swapping_the_connection
|
28
|
+
old_spec_name, Course.connection_specification_name = Course.connection_specification_name, "primary"
|
29
|
+
assert_equal(Entrant.connection, Course.connection)
|
30
|
+
ensure
|
31
|
+
Course.connection_specification_name = old_spec_name
|
32
|
+
end
|
33
|
+
|
27
34
|
def test_find
|
28
35
|
c1 = Course.find(1)
|
29
36
|
assert_equal "Ruby Development", c1.name
|
@@ -89,8 +96,8 @@ class MultipleDbTest < ActiveRecord::TestCase
|
|
89
96
|
end
|
90
97
|
|
91
98
|
def test_connection
|
92
|
-
assert_equal Entrant.arel_engine.connection, Bird.arel_engine.connection
|
93
|
-
assert_not_equal Entrant.arel_engine.connection, Course.arel_engine.connection
|
99
|
+
assert_equal Entrant.arel_engine.connection.object_id, Bird.arel_engine.connection.object_id
|
100
|
+
assert_not_equal Entrant.arel_engine.connection.object_id, Course.arel_engine.connection.object_id
|
94
101
|
end
|
95
102
|
|
96
103
|
unless in_memory_db?
|
@@ -104,7 +111,7 @@ class MultipleDbTest < ActiveRecord::TestCase
|
|
104
111
|
def test_associations_should_work_when_model_has_no_connection
|
105
112
|
begin
|
106
113
|
ActiveRecord::Base.remove_connection
|
107
|
-
assert_nothing_raised
|
114
|
+
assert_nothing_raised do
|
108
115
|
College.first.courses.first
|
109
116
|
end
|
110
117
|
ensure
|
@@ -13,7 +13,7 @@ require 'active_support/hash_with_indifferent_access'
|
|
13
13
|
|
14
14
|
class TestNestedAttributesInGeneral < ActiveRecord::TestCase
|
15
15
|
teardown do
|
16
|
-
Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc
|
16
|
+
Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc(&:empty?)
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_base_should_have_an_empty_nested_attributes_options
|
@@ -61,6 +61,13 @@ class TestNestedAttributesInGeneral < ActiveRecord::TestCase
|
|
61
61
|
assert_equal "No association found for name `honesty'. Has it been defined yet?", exception.message
|
62
62
|
end
|
63
63
|
|
64
|
+
def test_should_raise_an_UnknownAttributeError_for_non_existing_nested_attributes
|
65
|
+
exception = assert_raise ActiveModel::UnknownAttributeError do
|
66
|
+
Pirate.new(:ship_attributes => { :sail => true })
|
67
|
+
end
|
68
|
+
assert_equal "unknown attribute 'sail' for Ship.", exception.message
|
69
|
+
end
|
70
|
+
|
64
71
|
def test_should_disable_allow_destroy_by_default
|
65
72
|
Pirate.accepts_nested_attributes_for :ship
|
66
73
|
|
@@ -69,7 +76,7 @@ class TestNestedAttributesInGeneral < ActiveRecord::TestCase
|
|
69
76
|
|
70
77
|
pirate.update(ship_attributes: { '_destroy' => true, :id => ship.id })
|
71
78
|
|
72
|
-
assert_nothing_raised
|
79
|
+
assert_nothing_raised { pirate.ship.reload }
|
73
80
|
end
|
74
81
|
|
75
82
|
def test_a_model_should_respond_to_underscore_destroy_and_return_if_it_is_marked_for_destruction
|
@@ -173,7 +180,7 @@ class TestNestedAttributesInGeneral < ActiveRecord::TestCase
|
|
173
180
|
|
174
181
|
pirate = Pirate.new(:catchphrase => "Stop wastin' me time")
|
175
182
|
pirate.ship_attributes = { :id => "" }
|
176
|
-
assert_nothing_raised
|
183
|
+
assert_nothing_raised { pirate.save! }
|
177
184
|
end
|
178
185
|
|
179
186
|
def test_first_and_array_index_zero_methods_return_the_same_value_when_nested_attributes_are_set_to_update_existing_record
|
@@ -286,10 +293,11 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
|
|
286
293
|
end
|
287
294
|
|
288
295
|
def test_should_modify_an_existing_record_if_there_is_a_matching_composite_id
|
289
|
-
@ship.
|
290
|
-
|
296
|
+
@ship.stub(:id, 'ABC1X') do
|
297
|
+
@pirate.ship_attributes = { :id => @ship.id, :name => 'Davy Jones Gold Dagger' }
|
291
298
|
|
292
|
-
|
299
|
+
assert_equal 'Davy Jones Gold Dagger', @pirate.ship.name
|
300
|
+
end
|
293
301
|
end
|
294
302
|
|
295
303
|
def test_should_destroy_an_existing_record_if_there_is_a_matching_id_and_destroy_is_truthy
|
@@ -313,13 +321,13 @@ class TestNestedAttributesOnAHasOneAssociation < ActiveRecord::TestCase
|
|
313
321
|
end
|
314
322
|
|
315
323
|
def test_should_not_destroy_an_existing_record_if_allow_destroy_is_false
|
316
|
-
Pirate.accepts_nested_attributes_for :ship, :allow_destroy => false, :reject_if => proc
|
324
|
+
Pirate.accepts_nested_attributes_for :ship, :allow_destroy => false, :reject_if => proc(&:empty?)
|
317
325
|
|
318
326
|
@pirate.update(ship_attributes: { id: @pirate.ship.id, _destroy: '1' })
|
319
327
|
|
320
328
|
assert_equal @ship, @pirate.reload.ship
|
321
329
|
|
322
|
-
Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc
|
330
|
+
Pirate.accepts_nested_attributes_for :ship, :allow_destroy => true, :reject_if => proc(&:empty?)
|
323
331
|
end
|
324
332
|
|
325
333
|
def test_should_also_work_with_a_HashWithIndifferentAccess
|
@@ -470,10 +478,11 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
|
|
470
478
|
end
|
471
479
|
|
472
480
|
def test_should_modify_an_existing_record_if_there_is_a_matching_composite_id
|
473
|
-
@pirate.
|
474
|
-
|
481
|
+
@pirate.stub(:id, 'ABC1X') do
|
482
|
+
@ship.pirate_attributes = { :id => @pirate.id, :catchphrase => 'Arr' }
|
475
483
|
|
476
|
-
|
484
|
+
assert_equal 'Arr', @ship.pirate.catchphrase
|
485
|
+
end
|
477
486
|
end
|
478
487
|
|
479
488
|
def test_should_destroy_an_existing_record_if_there_is_a_matching_id_and_destroy_is_truthy
|
@@ -502,17 +511,17 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
|
|
502
511
|
def test_should_not_destroy_an_existing_record_if_destroy_is_not_truthy
|
503
512
|
[nil, '0', 0, 'false', false].each do |not_truth|
|
504
513
|
@ship.update(pirate_attributes: { id: @ship.pirate.id, _destroy: not_truth })
|
505
|
-
assert_nothing_raised
|
514
|
+
assert_nothing_raised { @ship.pirate.reload }
|
506
515
|
end
|
507
516
|
end
|
508
517
|
|
509
518
|
def test_should_not_destroy_an_existing_record_if_allow_destroy_is_false
|
510
|
-
Ship.accepts_nested_attributes_for :pirate, :allow_destroy => false, :reject_if => proc
|
519
|
+
Ship.accepts_nested_attributes_for :pirate, :allow_destroy => false, :reject_if => proc(&:empty?)
|
511
520
|
|
512
521
|
@ship.update(pirate_attributes: { id: @ship.pirate.id, _destroy: '1' })
|
513
|
-
assert_nothing_raised
|
522
|
+
assert_nothing_raised { @ship.pirate.reload }
|
514
523
|
ensure
|
515
|
-
Ship.accepts_nested_attributes_for :pirate, :allow_destroy => true, :reject_if => proc
|
524
|
+
Ship.accepts_nested_attributes_for :pirate, :allow_destroy => true, :reject_if => proc(&:empty?)
|
516
525
|
end
|
517
526
|
|
518
527
|
def test_should_work_with_update_as_well
|
@@ -527,7 +536,7 @@ class TestNestedAttributesOnABelongsToAssociation < ActiveRecord::TestCase
|
|
527
536
|
pirate = @ship.pirate
|
528
537
|
|
529
538
|
@ship.attributes = { :pirate_attributes => { :id => pirate.id, '_destroy' => true } }
|
530
|
-
assert_nothing_raised
|
539
|
+
assert_nothing_raised { Pirate.find(pirate.id) }
|
531
540
|
@ship.save
|
532
541
|
assert_raise(ActiveRecord::RecordNotFound) { Pirate.find(pirate.id) }
|
533
542
|
end
|
@@ -580,6 +589,13 @@ module NestedAttributesOnACollectionAssociationTests
|
|
580
589
|
assert_respond_to @pirate, association_setter
|
581
590
|
end
|
582
591
|
|
592
|
+
def test_should_raise_an_UnknownAttributeError_for_non_existing_nested_attributes_for_has_many
|
593
|
+
exception = assert_raise ActiveModel::UnknownAttributeError do
|
594
|
+
@pirate.parrots_attributes = [{ peg_leg: true }]
|
595
|
+
end
|
596
|
+
assert_equal "unknown attribute 'peg_leg' for Parrot.", exception.message
|
597
|
+
end
|
598
|
+
|
583
599
|
def test_should_save_only_one_association_on_create
|
584
600
|
pirate = Pirate.create!({
|
585
601
|
:catchphrase => 'Arr',
|
@@ -651,17 +667,19 @@ module NestedAttributesOnACollectionAssociationTests
|
|
651
667
|
end
|
652
668
|
|
653
669
|
def test_should_take_a_hash_with_composite_id_keys_and_assign_the_attributes_to_the_associated_models
|
654
|
-
@child_1.
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
670
|
+
@child_1.stub(:id, 'ABC1X') do
|
671
|
+
@child_2.stub(:id, 'ABC2X') do
|
672
|
+
|
673
|
+
@pirate.attributes = {
|
674
|
+
association_getter => [
|
675
|
+
{ :id => @child_1.id, :name => 'Grace OMalley' },
|
676
|
+
{ :id => @child_2.id, :name => 'Privateers Greed' }
|
677
|
+
]
|
678
|
+
}
|
663
679
|
|
664
|
-
|
680
|
+
assert_equal ['Grace OMalley', 'Privateers Greed'], [@child_1.name, @child_2.name]
|
681
|
+
end
|
682
|
+
end
|
665
683
|
end
|
666
684
|
|
667
685
|
def test_should_raise_RecordNotFound_if_an_id_is_given_but_doesnt_return_a_record
|
@@ -671,6 +689,16 @@ module NestedAttributesOnACollectionAssociationTests
|
|
671
689
|
assert_equal "Couldn't find #{@child_1.class.name} with ID=1234567890 for Pirate with ID=#{@pirate.id}", exception.message
|
672
690
|
end
|
673
691
|
|
692
|
+
def test_should_raise_RecordNotFound_if_an_id_belonging_to_a_different_record_is_given
|
693
|
+
other_pirate = Pirate.create! catchphrase: 'Ahoy!'
|
694
|
+
other_child = other_pirate.send(@association_name).create! name: 'Buccaneers Servant'
|
695
|
+
|
696
|
+
exception = assert_raise ActiveRecord::RecordNotFound do
|
697
|
+
@pirate.attributes = { association_getter => [{ id: other_child.id }] }
|
698
|
+
end
|
699
|
+
assert_equal "Couldn't find #{@child_1.class.name} with ID=#{other_child.id} for Pirate with ID=#{@pirate.id}", exception.message
|
700
|
+
end
|
701
|
+
|
674
702
|
def test_should_automatically_build_new_associated_models_for_each_entry_in_a_hash_where_the_id_is_missing
|
675
703
|
@pirate.send(@association_name).destroy_all
|
676
704
|
@pirate.reload.attributes = {
|
@@ -685,7 +713,7 @@ module NestedAttributesOnACollectionAssociationTests
|
|
685
713
|
end
|
686
714
|
|
687
715
|
def test_should_not_assign_destroy_key_to_a_record
|
688
|
-
assert_nothing_raised
|
716
|
+
assert_nothing_raised do
|
689
717
|
@pirate.send(association_setter, { 'foo' => { '_destroy' => '0' }})
|
690
718
|
end
|
691
719
|
end
|
@@ -720,8 +748,8 @@ module NestedAttributesOnACollectionAssociationTests
|
|
720
748
|
end
|
721
749
|
|
722
750
|
def test_should_raise_an_argument_error_if_something_else_than_a_hash_is_passed
|
723
|
-
assert_nothing_raised
|
724
|
-
assert_nothing_raised
|
751
|
+
assert_nothing_raised { @pirate.send(association_setter, {}) }
|
752
|
+
assert_nothing_raised { @pirate.send(association_setter, Hash.new) }
|
725
753
|
|
726
754
|
exception = assert_raise ArgumentError do
|
727
755
|
@pirate.send(association_setter, "foo")
|
@@ -796,7 +824,7 @@ module NestedAttributesOnACollectionAssociationTests
|
|
796
824
|
|
797
825
|
def test_can_use_symbols_as_object_identifier
|
798
826
|
@pirate.attributes = { :parrots_attributes => { :foo => { :name => 'Lovely Day' }, :bar => { :name => 'Blown Away' } } }
|
799
|
-
assert_nothing_raised
|
827
|
+
assert_nothing_raised { @pirate.save! }
|
800
828
|
end
|
801
829
|
|
802
830
|
def test_numeric_column_changes_from_zero_to_no_empty_string
|
@@ -868,7 +896,7 @@ end
|
|
868
896
|
|
869
897
|
module NestedAttributesLimitTests
|
870
898
|
def teardown
|
871
|
-
Pirate.accepts_nested_attributes_for :parrots, :allow_destroy => true, :reject_if => proc
|
899
|
+
Pirate.accepts_nested_attributes_for :parrots, :allow_destroy => true, :reject_if => proc(&:empty?)
|
872
900
|
end
|
873
901
|
|
874
902
|
def test_limit_with_less_records
|
@@ -956,7 +984,7 @@ class TestNestedAttributesWithNonStandardPrimaryKeys < ActiveRecord::TestCase
|
|
956
984
|
end
|
957
985
|
|
958
986
|
class TestHasOneAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRecord::TestCase
|
959
|
-
self.
|
987
|
+
self.use_transactional_tests = false unless supports_savepoints?
|
960
988
|
|
961
989
|
def setup
|
962
990
|
@pirate = Pirate.create!(:catchphrase => "My baby takes tha mornin' train!")
|
@@ -996,7 +1024,7 @@ class TestHasOneAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRe
|
|
996
1024
|
end
|
997
1025
|
|
998
1026
|
class TestHasManyAutosaveAssociationWhichItselfHasAutosaveAssociations < ActiveRecord::TestCase
|
999
|
-
self.
|
1027
|
+
self.use_transactional_tests = false unless supports_savepoints?
|
1000
1028
|
|
1001
1029
|
def setup
|
1002
1030
|
@ship = Ship.create!(:name => "The good ship Dollypop")
|