From 71ada3a8e689a883b5ffdeb1744ea16f176ab730 Mon Sep 17 00:00:00 2001 From: Loic Bistuer Date: Fri, 30 Jan 2015 01:15:27 +0700 Subject: Fixed #6707 -- Added RelatedManager.set() and made descriptors' __set__ use it. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Thanks Anssi Kääriäinen, Carl Meyer, Collin Anderson, and Tim Graham for the reviews. --- tests/many_to_many/tests.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) (limited to 'tests/many_to_many') diff --git a/tests/many_to_many/tests.py b/tests/many_to_many/tests.py index adb897840a..192bc5f0e8 100644 --- a/tests/many_to_many/tests.py +++ b/tests/many_to_many/tests.py @@ -332,6 +332,45 @@ class ManyToManyTests(TestCase): ]) self.assertQuerysetEqual(self.a3.publications.all(), []) + def test_set(self): + self.p2.article_set.set([self.a4, self.a3]) + self.assertQuerysetEqual(self.p2.article_set.all(), + [ + '', + '', + ]) + self.assertQuerysetEqual(self.a4.publications.all(), + ['']) + self.a4.publications.set([self.p3.id]) + self.assertQuerysetEqual(self.p2.article_set.all(), + ['']) + self.assertQuerysetEqual(self.a4.publications.all(), + ['']) + + self.p2.article_set.set([]) + self.assertQuerysetEqual(self.p2.article_set.all(), []) + self.a4.publications.set([]) + self.assertQuerysetEqual(self.a4.publications.all(), []) + + self.p2.article_set.set([self.a4, self.a3], clear=True) + self.assertQuerysetEqual(self.p2.article_set.all(), + [ + '', + '', + ]) + self.assertQuerysetEqual(self.a4.publications.all(), + ['']) + self.a4.publications.set([self.p3.id], clear=True) + self.assertQuerysetEqual(self.p2.article_set.all(), + ['']) + self.assertQuerysetEqual(self.a4.publications.all(), + ['']) + + self.p2.article_set.set([], clear=True) + self.assertQuerysetEqual(self.p2.article_set.all(), []) + self.a4.publications.set([], clear=True) + self.assertQuerysetEqual(self.a4.publications.all(), []) + def test_assign(self): # Relation sets can be assigned. Assignment clears any existing set members self.p2.article_set = [self.a4, self.a3] -- cgit v1.2.1