mirror of
https://github.com/django/django.git
synced 2025-08-04 10:59:45 +00:00
Fixed #31235 -- Made assertQuerysetEqual() compare querysets directly.
This also replaces assertQuerysetEqual() to assertSequenceEqual()/assertCountEqual() where appropriate. Co-authored-by: Peter Inglesby <peter.inglesby@gmail.com> Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
This commit is contained in:
parent
13b6fff117
commit
3f7b327562
39 changed files with 1447 additions and 1801 deletions
|
@ -33,8 +33,8 @@ class ManyToOneNullTests(TestCase):
|
|||
|
||||
def test_related_set(self):
|
||||
# Reporter objects have access to their related Article objects.
|
||||
self.assertQuerysetEqual(self.r.article_set.all(), ['<Article: First>', '<Article: Second>'])
|
||||
self.assertQuerysetEqual(self.r.article_set.filter(headline__startswith='Fir'), ['<Article: First>'])
|
||||
self.assertSequenceEqual(self.r.article_set.all(), [self.a, self.a2])
|
||||
self.assertSequenceEqual(self.r.article_set.filter(headline__startswith='Fir'), [self.a])
|
||||
self.assertEqual(self.r.article_set.count(), 2)
|
||||
|
||||
def test_created_without_related(self):
|
||||
|
@ -47,43 +47,43 @@ class ManyToOneNullTests(TestCase):
|
|||
# if the reporter is set to None.
|
||||
self.assertIsNone(a3.reporter)
|
||||
# To retrieve the articles with no reporters set, use "reporter__isnull=True".
|
||||
self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True), ['<Article: Third>'])
|
||||
self.assertSequenceEqual(Article.objects.filter(reporter__isnull=True), [self.a3])
|
||||
# We can achieve the same thing by filtering for the case where the
|
||||
# reporter is None.
|
||||
self.assertQuerysetEqual(Article.objects.filter(reporter=None), ['<Article: Third>'])
|
||||
self.assertSequenceEqual(Article.objects.filter(reporter=None), [self.a3])
|
||||
# Set the reporter for the Third article
|
||||
self.assertQuerysetEqual(self.r.article_set.all(), ['<Article: First>', '<Article: Second>'])
|
||||
self.assertSequenceEqual(self.r.article_set.all(), [self.a, self.a2])
|
||||
self.r.article_set.add(a3)
|
||||
self.assertQuerysetEqual(
|
||||
self.assertSequenceEqual(
|
||||
self.r.article_set.all(),
|
||||
['<Article: First>', '<Article: Second>', '<Article: Third>']
|
||||
[self.a, self.a2, self.a3],
|
||||
)
|
||||
# Remove an article from the set, and check that it was removed.
|
||||
self.r.article_set.remove(a3)
|
||||
self.assertQuerysetEqual(self.r.article_set.all(), ['<Article: First>', '<Article: Second>'])
|
||||
self.assertQuerysetEqual(Article.objects.filter(reporter__isnull=True), ['<Article: Third>'])
|
||||
self.assertSequenceEqual(self.r.article_set.all(), [self.a, self.a2])
|
||||
self.assertSequenceEqual(Article.objects.filter(reporter__isnull=True), [self.a3])
|
||||
|
||||
def test_remove_from_wrong_set(self):
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(), ['<Article: Fourth>'])
|
||||
self.assertSequenceEqual(self.r2.article_set.all(), [self.a4])
|
||||
# Try to remove a4 from a set it does not belong to
|
||||
with self.assertRaises(Reporter.DoesNotExist):
|
||||
self.r.article_set.remove(self.a4)
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(), ['<Article: Fourth>'])
|
||||
self.assertSequenceEqual(self.r2.article_set.all(), [self.a4])
|
||||
|
||||
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>'])
|
||||
self.assertSequenceEqual(self.r2.article_set.all(), [self.a2, self.a3])
|
||||
# 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>'])
|
||||
self.assertSequenceEqual(self.r2.article_set.all(), [self.a4, self.a3])
|
||||
# Clear the rest of the set
|
||||
self.r2.article_set.set([])
|
||||
self.assertQuerysetEqual(self.r2.article_set.all(), [])
|
||||
self.assertQuerysetEqual(
|
||||
self.assertSequenceEqual(self.r2.article_set.all(), [])
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.filter(reporter__isnull=True),
|
||||
['<Article: Fourth>', '<Article: Second>', '<Article: Third>']
|
||||
[self.a4, self.a2, self.a3],
|
||||
)
|
||||
|
||||
def test_set_clear_non_bulk(self):
|
||||
|
@ -96,13 +96,13 @@ class ManyToOneNullTests(TestCase):
|
|||
# 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>'])
|
||||
self.assertSequenceEqual(self.r2.article_set.all(), [self.a2, self.a3])
|
||||
# Clear the rest of the set
|
||||
self.r.article_set.clear()
|
||||
self.assertQuerysetEqual(self.r.article_set.all(), [])
|
||||
self.assertQuerysetEqual(
|
||||
self.assertSequenceEqual(self.r.article_set.all(), [])
|
||||
self.assertSequenceEqual(
|
||||
Article.objects.filter(reporter__isnull=True),
|
||||
['<Article: First>', '<Article: Fourth>']
|
||||
[self.a, self.a4],
|
||||
)
|
||||
|
||||
def test_assign_with_queryset(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue