aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/autosave_association_test.rb
diff options
context:
space:
mode:
authorLauro Caetano <laurocaetano1@gmail.com>2014-02-08 18:46:32 -0200
committerLauro Caetano <laurocaetano1@gmail.com>2014-02-08 18:57:26 -0200
commit1ea61cb9bc95bf3857012850ffb475836e5d88e8 (patch)
tree6ba56d2465d58c58a26509d372358f99a8c9e046 /activerecord/test/cases/autosave_association_test.rb
parent77577149f71e1fa0df15dbc02ae7c33349dddba8 (diff)
downloadrails-1ea61cb9bc95bf3857012850ffb475836e5d88e8.tar.gz
rails-1ea61cb9bc95bf3857012850ffb475836e5d88e8.tar.bz2
rails-1ea61cb9bc95bf3857012850ffb475836e5d88e8.zip
Add test case for autosave HasMany with accepts_nested_attributes.
It should not save the parent record when the nested attributes are invalid. Test case to cover #8194.
Diffstat (limited to 'activerecord/test/cases/autosave_association_test.rb')
-rw-r--r--activerecord/test/cases/autosave_association_test.rb29
1 files changed, 29 insertions, 0 deletions
diff --git a/activerecord/test/cases/autosave_association_test.rb b/activerecord/test/cases/autosave_association_test.rb
index 7a0c335627..c55dd685a1 100644
--- a/activerecord/test/cases/autosave_association_test.rb
+++ b/activerecord/test/cases/autosave_association_test.rb
@@ -17,6 +17,8 @@ require 'models/tag'
require 'models/tagging'
require 'models/treasure'
require 'models/eye'
+require 'models/electron'
+require 'models/molecule'
class TestAutosaveAssociationsInGeneral < ActiveRecord::TestCase
def test_should_not_add_the_same_callbacks_multiple_times_for_has_one
@@ -343,6 +345,33 @@ class TestDefaultAutosaveAssociationOnABelongsToAssociation < ActiveRecord::Test
end
end
+class TestDefaultAutosaveAssociationOnAHasManyAssociationWithAcceptsNestedAttributes < ActiveRecord::TestCase
+ def test_invalid_adding_with_nested_attributes
+ molecule = Molecule.new
+ valid_electron = Electron.new(name: 'electron')
+ invalid_electron = Electron.new
+
+ molecule.electrons = [valid_electron, invalid_electron]
+ molecule.save
+
+ assert_not invalid_electron.valid?
+ assert valid_electron.valid?
+ assert_not molecule.persisted?, 'Molecule should not be persisted when its electrons are invalid'
+ end
+
+ def test_valid_adding_with_nested_attributes
+ molecule = Molecule.new
+ valid_electron = Electron.new(name: 'electron')
+
+ molecule.electrons = [valid_electron]
+ molecule.save
+
+ assert valid_electron.valid?
+ assert molecule.persisted?
+ assert_equal 1, molecule.electrons.count
+ end
+end
+
class TestDefaultAutosaveAssociationOnAHasManyAssociation < ActiveRecord::TestCase
fixtures :companies, :people