aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/associations/required_test.rb
diff options
context:
space:
mode:
authorCarlos Figueiredo <carlos.figueiredo87@gmail.com>2017-02-27 17:06:32 -0500
committerCarlos Figueiredo <carlos.figueiredo87@gmail.com>2017-02-27 17:17:56 -0500
commit835bf751253769af17ffd548faea04aa44259f52 (patch)
tree54131eb827eb6fe3ea484288464b9ce6cab3a07b /activerecord/test/cases/associations/required_test.rb
parent2e0f7baef344474b39d660db5fb0b8c9fb33dc3b (diff)
downloadrails-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.
Diffstat (limited to 'activerecord/test/cases/associations/required_test.rb')
-rw-r--r--activerecord/test/cases/associations/required_test.rb26
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,