mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Refs #33476 -- Reformatted code with Black.
This commit is contained in:
committed by
Mariusz Felisiak
parent
f68fa8b45d
commit
9c19aff7c7
@@ -1,7 +1,13 @@
|
||||
from django.test import TestCase
|
||||
|
||||
from .models import (
|
||||
Event, Movie, Package, PackageNullFK, Person, Screening, ScreeningNullFK,
|
||||
Event,
|
||||
Movie,
|
||||
Package,
|
||||
PackageNullFK,
|
||||
Person,
|
||||
Screening,
|
||||
ScreeningNullFK,
|
||||
)
|
||||
|
||||
|
||||
@@ -27,8 +33,10 @@ from .models import (
|
||||
class NestedForeignKeysTests(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.director = Person.objects.create(name='Terry Gilliam / Terry Jones')
|
||||
cls.movie = Movie.objects.create(title='Monty Python and the Holy Grail', director=cls.director)
|
||||
cls.director = Person.objects.create(name="Terry Gilliam / Terry Jones")
|
||||
cls.movie = Movie.objects.create(
|
||||
title="Monty Python and the Holy Grail", director=cls.director
|
||||
)
|
||||
|
||||
# This test failed in #16715 because in some cases INNER JOIN was selected
|
||||
# for the second foreign key relation instead of LEFT OUTER JOIN.
|
||||
@@ -37,16 +45,21 @@ class NestedForeignKeysTests(TestCase):
|
||||
Screening.objects.create(movie=self.movie)
|
||||
|
||||
self.assertEqual(len(Event.objects.all()), 2)
|
||||
self.assertEqual(len(Event.objects.select_related('screening')), 2)
|
||||
self.assertEqual(len(Event.objects.select_related("screening")), 2)
|
||||
# This failed.
|
||||
self.assertEqual(len(Event.objects.select_related('screening__movie')), 2)
|
||||
self.assertEqual(len(Event.objects.select_related("screening__movie")), 2)
|
||||
|
||||
self.assertEqual(len(Event.objects.values()), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__pk')), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__pk')), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__title')), 2)
|
||||
self.assertEqual(len(Event.objects.values("screening__pk")), 2)
|
||||
self.assertEqual(len(Event.objects.values("screening__movie__pk")), 2)
|
||||
self.assertEqual(len(Event.objects.values("screening__movie__title")), 2)
|
||||
# This failed.
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__pk', 'screening__movie__title')), 2)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values("screening__movie__pk", "screening__movie__title")
|
||||
),
|
||||
2,
|
||||
)
|
||||
|
||||
# Simple filter/exclude queries for good measure.
|
||||
self.assertEqual(Event.objects.filter(screening__movie=self.movie).count(), 1)
|
||||
@@ -59,24 +72,35 @@ class NestedForeignKeysTests(TestCase):
|
||||
ScreeningNullFK.objects.create(movie=self.movie)
|
||||
|
||||
self.assertEqual(len(Event.objects.all()), 3)
|
||||
self.assertEqual(len(Event.objects.select_related('screeningnullfk')), 3)
|
||||
self.assertEqual(len(Event.objects.select_related('screeningnullfk__movie')), 3)
|
||||
self.assertEqual(len(Event.objects.select_related("screeningnullfk")), 3)
|
||||
self.assertEqual(len(Event.objects.select_related("screeningnullfk__movie")), 3)
|
||||
|
||||
self.assertEqual(len(Event.objects.values()), 3)
|
||||
self.assertEqual(len(Event.objects.values('screeningnullfk__pk')), 3)
|
||||
self.assertEqual(len(Event.objects.values('screeningnullfk__movie__pk')), 3)
|
||||
self.assertEqual(len(Event.objects.values('screeningnullfk__movie__title')), 3)
|
||||
self.assertEqual(len(Event.objects.values('screeningnullfk__movie__pk', 'screeningnullfk__movie__title')), 3)
|
||||
self.assertEqual(len(Event.objects.values("screeningnullfk__pk")), 3)
|
||||
self.assertEqual(len(Event.objects.values("screeningnullfk__movie__pk")), 3)
|
||||
self.assertEqual(len(Event.objects.values("screeningnullfk__movie__title")), 3)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values(
|
||||
"screeningnullfk__movie__pk", "screeningnullfk__movie__title"
|
||||
)
|
||||
),
|
||||
3,
|
||||
)
|
||||
|
||||
self.assertEqual(Event.objects.filter(screeningnullfk__movie=self.movie).count(), 1)
|
||||
self.assertEqual(Event.objects.exclude(screeningnullfk__movie=self.movie).count(), 2)
|
||||
self.assertEqual(
|
||||
Event.objects.filter(screeningnullfk__movie=self.movie).count(), 1
|
||||
)
|
||||
self.assertEqual(
|
||||
Event.objects.exclude(screeningnullfk__movie=self.movie).count(), 2
|
||||
)
|
||||
|
||||
def test_null_exclude(self):
|
||||
screening = ScreeningNullFK.objects.create(movie=None)
|
||||
ScreeningNullFK.objects.create(movie=self.movie)
|
||||
self.assertEqual(
|
||||
list(ScreeningNullFK.objects.exclude(movie__id=self.movie.pk)),
|
||||
[screening])
|
||||
list(ScreeningNullFK.objects.exclude(movie__id=self.movie.pk)), [screening]
|
||||
)
|
||||
|
||||
# This test failed in #16715 because in some cases INNER JOIN was selected
|
||||
# for the second foreign key relation instead of LEFT OUTER JOIN.
|
||||
@@ -86,18 +110,27 @@ class NestedForeignKeysTests(TestCase):
|
||||
Package.objects.create(screening=screening)
|
||||
|
||||
self.assertEqual(len(Package.objects.all()), 2)
|
||||
self.assertEqual(len(Package.objects.select_related('screening')), 2)
|
||||
self.assertEqual(len(Package.objects.select_related('screening__movie')), 2)
|
||||
self.assertEqual(len(Package.objects.select_related("screening")), 2)
|
||||
self.assertEqual(len(Package.objects.select_related("screening__movie")), 2)
|
||||
|
||||
self.assertEqual(len(Package.objects.values()), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__pk')), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__pk')), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__title')), 2)
|
||||
self.assertEqual(len(Package.objects.values("screening__pk")), 2)
|
||||
self.assertEqual(len(Package.objects.values("screening__movie__pk")), 2)
|
||||
self.assertEqual(len(Package.objects.values("screening__movie__title")), 2)
|
||||
# This failed.
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__pk', 'screening__movie__title')), 2)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Package.objects.values(
|
||||
"screening__movie__pk", "screening__movie__title"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
|
||||
self.assertEqual(Package.objects.filter(screening__movie=self.movie).count(), 1)
|
||||
self.assertEqual(Package.objects.exclude(screening__movie=self.movie).count(), 1)
|
||||
self.assertEqual(
|
||||
Package.objects.exclude(screening__movie=self.movie).count(), 1
|
||||
)
|
||||
|
||||
# These all work because the second foreign key in the chain has null=True.
|
||||
def test_explicit_ForeignKey_NullFK(self):
|
||||
@@ -108,17 +141,32 @@ class NestedForeignKeysTests(TestCase):
|
||||
PackageNullFK.objects.create(screening=screening_with_movie)
|
||||
|
||||
self.assertEqual(len(PackageNullFK.objects.all()), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.select_related('screening')), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.select_related('screening__movie')), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.select_related("screening")), 3)
|
||||
self.assertEqual(
|
||||
len(PackageNullFK.objects.select_related("screening__movie")), 3
|
||||
)
|
||||
|
||||
self.assertEqual(len(PackageNullFK.objects.values()), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.values('screening__pk')), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.values('screening__movie__pk')), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.values('screening__movie__title')), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.values('screening__movie__pk', 'screening__movie__title')), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.values("screening__pk")), 3)
|
||||
self.assertEqual(len(PackageNullFK.objects.values("screening__movie__pk")), 3)
|
||||
self.assertEqual(
|
||||
len(PackageNullFK.objects.values("screening__movie__title")), 3
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
PackageNullFK.objects.values(
|
||||
"screening__movie__pk", "screening__movie__title"
|
||||
)
|
||||
),
|
||||
3,
|
||||
)
|
||||
|
||||
self.assertEqual(PackageNullFK.objects.filter(screening__movie=self.movie).count(), 1)
|
||||
self.assertEqual(PackageNullFK.objects.exclude(screening__movie=self.movie).count(), 2)
|
||||
self.assertEqual(
|
||||
PackageNullFK.objects.filter(screening__movie=self.movie).count(), 1
|
||||
)
|
||||
self.assertEqual(
|
||||
PackageNullFK.objects.exclude(screening__movie=self.movie).count(), 2
|
||||
)
|
||||
|
||||
|
||||
# Some additional tests for #16715. The only difference is the depth of the
|
||||
@@ -127,30 +175,72 @@ class NestedForeignKeysTests(TestCase):
|
||||
class DeeplyNestedForeignKeysTests(TestCase):
|
||||
@classmethod
|
||||
def setUpTestData(cls):
|
||||
cls.director = Person.objects.create(name='Terry Gilliam / Terry Jones')
|
||||
cls.movie = Movie.objects.create(title='Monty Python and the Holy Grail', director=cls.director)
|
||||
cls.director = Person.objects.create(name="Terry Gilliam / Terry Jones")
|
||||
cls.movie = Movie.objects.create(
|
||||
title="Monty Python and the Holy Grail", director=cls.director
|
||||
)
|
||||
|
||||
def test_inheritance(self):
|
||||
Event.objects.create()
|
||||
Screening.objects.create(movie=self.movie)
|
||||
|
||||
self.assertEqual(len(Event.objects.all()), 2)
|
||||
self.assertEqual(len(Event.objects.select_related('screening__movie__director')), 2)
|
||||
self.assertEqual(
|
||||
len(Event.objects.select_related("screening__movie__director")), 2
|
||||
)
|
||||
|
||||
self.assertEqual(len(Event.objects.values()), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__director__pk')), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__director__name')), 2)
|
||||
self.assertEqual(len(Event.objects.values("screening__movie__director__pk")), 2)
|
||||
self.assertEqual(
|
||||
len(Event.objects.values('screening__movie__director__pk', 'screening__movie__director__name')),
|
||||
2
|
||||
len(Event.objects.values("screening__movie__director__name")), 2
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values(
|
||||
"screening__movie__director__pk", "screening__movie__director__name"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values(
|
||||
"screening__movie__pk", "screening__movie__director__pk"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values(
|
||||
"screening__movie__pk", "screening__movie__director__name"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values(
|
||||
"screening__movie__title", "screening__movie__director__pk"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Event.objects.values(
|
||||
"screening__movie__title", "screening__movie__director__name"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__pk', 'screening__movie__director__pk')), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__pk', 'screening__movie__director__name')), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__title', 'screening__movie__director__pk')), 2)
|
||||
self.assertEqual(len(Event.objects.values('screening__movie__title', 'screening__movie__director__name')), 2)
|
||||
|
||||
self.assertEqual(Event.objects.filter(screening__movie__director=self.director).count(), 1)
|
||||
self.assertEqual(Event.objects.exclude(screening__movie__director=self.director).count(), 1)
|
||||
self.assertEqual(
|
||||
Event.objects.filter(screening__movie__director=self.director).count(), 1
|
||||
)
|
||||
self.assertEqual(
|
||||
Event.objects.exclude(screening__movie__director=self.director).count(), 1
|
||||
)
|
||||
|
||||
def test_explicit_ForeignKey(self):
|
||||
Package.objects.create()
|
||||
@@ -158,19 +248,61 @@ class DeeplyNestedForeignKeysTests(TestCase):
|
||||
Package.objects.create(screening=screening)
|
||||
|
||||
self.assertEqual(len(Package.objects.all()), 2)
|
||||
self.assertEqual(len(Package.objects.select_related('screening__movie__director')), 2)
|
||||
self.assertEqual(
|
||||
len(Package.objects.select_related("screening__movie__director")), 2
|
||||
)
|
||||
|
||||
self.assertEqual(len(Package.objects.values()), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__director__pk')), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__director__name')), 2)
|
||||
self.assertEqual(
|
||||
len(Package.objects.values('screening__movie__director__pk', 'screening__movie__director__name')),
|
||||
2
|
||||
len(Package.objects.values("screening__movie__director__pk")), 2
|
||||
)
|
||||
self.assertEqual(
|
||||
len(Package.objects.values("screening__movie__director__name")), 2
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Package.objects.values(
|
||||
"screening__movie__director__pk", "screening__movie__director__name"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Package.objects.values(
|
||||
"screening__movie__pk", "screening__movie__director__pk"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Package.objects.values(
|
||||
"screening__movie__pk", "screening__movie__director__name"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Package.objects.values(
|
||||
"screening__movie__title", "screening__movie__director__pk"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
len(
|
||||
Package.objects.values(
|
||||
"screening__movie__title", "screening__movie__director__name"
|
||||
)
|
||||
),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__pk', 'screening__movie__director__pk')), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__pk', 'screening__movie__director__name')), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__title', 'screening__movie__director__pk')), 2)
|
||||
self.assertEqual(len(Package.objects.values('screening__movie__title', 'screening__movie__director__name')), 2)
|
||||
|
||||
self.assertEqual(Package.objects.filter(screening__movie__director=self.director).count(), 1)
|
||||
self.assertEqual(Package.objects.exclude(screening__movie__director=self.director).count(), 1)
|
||||
self.assertEqual(
|
||||
Package.objects.filter(screening__movie__director=self.director).count(), 1
|
||||
)
|
||||
self.assertEqual(
|
||||
Package.objects.exclude(screening__movie__director=self.director).count(), 1
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user