summaryrefslogtreecommitdiff
path: root/tests/many_to_one_null
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@gmail.com>2015-01-30 01:15:27 +0700
committerLoic Bistuer <loic.bistuer@gmail.com>2015-02-05 12:45:08 +0700
commit71ada3a8e689a883b5ffdeb1744ea16f176ab730 (patch)
tree7e4696ec75370e0747a26c4dea541626573895b2 /tests/many_to_one_null
parent49516f7158ed0ca39ea8116d25a32a80288d47b3 (diff)
downloaddjango-71ada3a8e689a883b5ffdeb1744ea16f176ab730.tar.gz
Fixed #6707 -- Added RelatedManager.set() and made descriptors' __set__ use it.
Thanks Anssi Kääriäinen, Carl Meyer, Collin Anderson, and Tim Graham for the reviews.
Diffstat (limited to 'tests/many_to_one_null')
-rw-r--r--tests/many_to_one_null/tests.py19
1 files changed, 18 insertions, 1 deletions
diff --git a/tests/many_to_one_null/tests.py b/tests/many_to_one_null/tests.py
index a72b821f88..e39f527abe 100644
--- a/tests/many_to_one_null/tests.py
+++ b/tests/many_to_one_null/tests.py
@@ -74,9 +74,26 @@ class ManyToOneNullTests(TestCase):
self.assertRaises(Reporter.DoesNotExist, self.r.article_set.remove, self.a4)
self.assertQuerysetEqual(self.r2.article_set.all(), ['<Article: Fourth>'])
+ def test_set(self):
+ # Use manager.set() to allocate ForeignKey. Null is legal, so existing
+ # members of the set that are not in the assignment set are set to null.
+ self.r2.article_set.set([self.a2, self.a3])
+ self.assertQuerysetEqual(self.r2.article_set.all(),
+ ['<Article: Second>', '<Article: Third>'])
+ # Use manager.set(clear=True)
+ self.r2.article_set.set([self.a3, self.a4], clear=True)
+ self.assertQuerysetEqual(self.r2.article_set.all(),
+ ['<Article: Fourth>', '<Article: Third>'])
+ # Clear the rest of the set
+ self.r2.article_set.set([])
+ self.assertQuerysetEqual(self.r2.article_set.all(), [])
+ self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True),
+ ['<Article: Fourth>', '<Article: Second>', '<Article: Third>'])
+
def test_assign_clear_related_set(self):
# Use descriptor assignment to allocate ForeignKey. Null is legal, so
- # existing members of set that are not in the assignment set are set null
+ # existing members of the set that are not in the assignment set are
+ # set to null.
self.r2.article_set = [self.a2, self.a3]
self.assertQuerysetEqual(self.r2.article_set.all(),
['<Article: Second>', '<Article: Third>'])