diff options
author | Carlos Figueiredo <carlos.figueiredo87@gmail.com> | 2017-02-27 17:06:32 -0500 |
---|---|---|
committer | Carlos Figueiredo <carlos.figueiredo87@gmail.com> | 2017-02-27 17:17:56 -0500 |
commit | 835bf751253769af17ffd548faea04aa44259f52 (patch) | |
tree | 54131eb827eb6fe3ea484288464b9ce6cab3a07b | |
parent | 2e0f7baef344474b39d660db5fb0b8c9fb33dc3b (diff) | |
download | rails-835bf751253769af17ffd548faea04aa44259f52.tar.gz rails-835bf751253769af17ffd548faea04aa44259f52.tar.bz2 rails-835bf751253769af17ffd548faea04aa44259f52.zip |
Make required by default test for belongs_to association clearer
Since #18937 `belongs_to` associations receive a setting to determine if
it should be or not treated as `required` by default.
While the tests were still passing, it was not evident that the
"default" behaviour for `required` could change in fuction of a setting,
that is set by default for fresh Rails5 apps, but not for upgraded
apps.
This commit try to relate them to make it clear what is the behaviour
expected when the setting is set as `true` or not set.
-rw-r--r-- | activerecord/test/cases/associations/required_test.rb | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/activerecord/test/cases/associations/required_test.rb b/activerecord/test/cases/associations/required_test.rb index f8b686721e..0daa35ea83 100644 --- a/activerecord/test/cases/associations/required_test.rb +++ b/activerecord/test/cases/associations/required_test.rb @@ -22,7 +22,10 @@ class RequiredAssociationsTest < ActiveRecord::TestCase @connection.drop_table "children", if_exists: true end - test "belongs_to associations are not required by default" do + test "belongs_to associations can be optional by default" do + original_value = ActiveRecord::Base.belongs_to_required_by_default + ActiveRecord::Base.belongs_to_required_by_default = false + model = subclass_of(Child) do belongs_to :parent, inverse_of: false, class_name: "RequiredAssociationsTest::Parent" @@ -30,6 +33,8 @@ class RequiredAssociationsTest < ActiveRecord::TestCase assert model.new.save assert model.new(parent: Parent.new).save + + ActiveRecord::Base.belongs_to_required_by_default = original_value end test "required belongs_to associations have presence validated" do @@ -46,6 +51,25 @@ class RequiredAssociationsTest < ActiveRecord::TestCase assert record.save end + test "belongs_to associations can be required by default" do + original_value = ActiveRecord::Base.belongs_to_required_by_default + ActiveRecord::Base.belongs_to_required_by_default = true + + model = subclass_of(Child) do + belongs_to :parent, inverse_of: false, + class_name: "RequiredAssociationsTest::Parent" + end + + record = model.new + assert_not record.save + assert_equal ["Parent must exist"], record.errors.full_messages + + record.parent = Parent.new + assert record.save + + ActiveRecord::Base.belongs_to_required_by_default = original_value + end + test "has_one associations are not required by default" do model = subclass_of(Parent) do has_one :child, inverse_of: false, |