mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fixed #19462 -- Made assertQuerysetEqual detect undefined ordering
If there are more than one values to compare against and the qs isn't ordered then assertQuerysetEqual will raise a ValueError.
This commit is contained in:
@@ -54,6 +54,46 @@ class AssertNumQueriesTests(TestCase):
|
||||
self.assertNumQueries(2, test_func)
|
||||
|
||||
|
||||
class AssertQuerysetEqualTests(TestCase):
|
||||
def setUp(self):
|
||||
self.p1 = Person.objects.create(name='p1')
|
||||
self.p2 = Person.objects.create(name='p2')
|
||||
|
||||
def test_ordered(self):
|
||||
self.assertQuerysetEqual(
|
||||
Person.objects.all().order_by('name'),
|
||||
[repr(self.p1), repr(self.p2)]
|
||||
)
|
||||
|
||||
def test_unordered(self):
|
||||
self.assertQuerysetEqual(
|
||||
Person.objects.all().order_by('name'),
|
||||
[repr(self.p2), repr(self.p1)],
|
||||
ordered=False
|
||||
)
|
||||
|
||||
def test_transform(self):
|
||||
self.assertQuerysetEqual(
|
||||
Person.objects.all().order_by('name'),
|
||||
[self.p1.pk, self.p2.pk],
|
||||
transform=lambda x: x.pk
|
||||
)
|
||||
|
||||
def test_undefined_order(self):
|
||||
# Using an unordered queryset with more than one ordered value
|
||||
# is an error.
|
||||
with self.assertRaises(ValueError):
|
||||
self.assertQuerysetEqual(
|
||||
Person.objects.all(),
|
||||
[repr(self.p1), repr(self.p2)]
|
||||
)
|
||||
# No error for one value.
|
||||
self.assertQuerysetEqual(
|
||||
Person.objects.filter(name='p1'),
|
||||
[repr(self.p1)]
|
||||
)
|
||||
|
||||
|
||||
class AssertNumQueriesContextManagerTests(TestCase):
|
||||
urls = 'regressiontests.test_utils.urls'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user