aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2015-10-28 12:24:07 -0600
committerSean Griffin <sean@seantheprogrammer.com>2015-10-28 12:24:07 -0600
commitf7d0a3ba7e9e676d399e7aeed7485a8bf03992f8 (patch)
tree2021a3477af697b70198a739082befd7780ff321 /activerecord/test/cases
parentd74c89ac16aa87f3bc166450e8d4b87382da17a4 (diff)
parentd5bf649a535948e70692e521ce3070595334e71b (diff)
downloadrails-f7d0a3ba7e9e676d399e7aeed7485a8bf03992f8.tar.gz
rails-f7d0a3ba7e9e676d399e7aeed7485a8bf03992f8.tar.bz2
rails-f7d0a3ba7e9e676d399e7aeed7485a8bf03992f8.zip
Merge pull request #18548 from sebjacobs/support-bidirectional-destroy-dependencies
Add support for bidirectional destroy dependencies
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/associations/bidirectional_destroy_dependencies_test.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/activerecord/test/cases/associations/bidirectional_destroy_dependencies_test.rb b/activerecord/test/cases/associations/bidirectional_destroy_dependencies_test.rb
new file mode 100644
index 0000000000..2b867965ba
--- /dev/null
+++ b/activerecord/test/cases/associations/bidirectional_destroy_dependencies_test.rb
@@ -0,0 +1,41 @@
+require 'cases/helper'
+require 'models/content'
+
+class BidirectionalDestroyDependenciesTest < ActiveRecord::TestCase
+ fixtures :content, :content_positions
+
+ def setup
+ Content.destroyed_ids.clear
+ ContentPosition.destroyed_ids.clear
+ end
+
+ def test_bidirectional_dependence_when_destroying_item_with_belongs_to_association
+ content_position = ContentPosition.find(1)
+ content = content_position.content
+ assert_not_nil content
+
+ content_position.destroy
+
+ assert_equal [content_position.id], ContentPosition.destroyed_ids
+ assert_equal [content.id], Content.destroyed_ids
+ end
+
+ def test_bidirectional_dependence_when_destroying_item_with_has_one_association
+ content = Content.find(1)
+ content_position = content.content_position
+ assert_not_nil content_position
+
+ content.destroy
+
+ assert_equal [content.id], Content.destroyed_ids
+ assert_equal [content_position.id], ContentPosition.destroyed_ids
+ end
+
+ def test_bidirectional_dependence_when_destroying_item_with_has_one_association_fails_first_time
+ content = ContentWhichRequiresTwoDestroyCalls.find(1)
+
+ 2.times { content.destroy }
+
+ assert_equal content.destroyed?, true
+ end
+end