summaryrefslogtreecommitdiff
path: root/tests/nested_foreign_keys
diff options
context:
space:
mode:
authordjango-bot <ops@djangoproject.com>2022-02-03 20:24:19 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-07 20:37:05 +0100
commit9c19aff7c7561e3a82978a272ecdaad40dda5c00 (patch)
treef0506b668a013d0063e5fba3dbf4863b466713ba /tests/nested_foreign_keys
parentf68fa8b45dfac545cfc4111d4e52804c86db68d3 (diff)
downloaddjango-9c19aff7c7561e3a82978a272ecdaad40dda5c00.tar.gz
Refs #33476 -- Reformatted code with Black.
Diffstat (limited to 'tests/nested_foreign_keys')
-rw-r--r--tests/nested_foreign_keys/tests.py248
1 files changed, 190 insertions, 58 deletions
diff --git a/tests/nested_foreign_keys/tests.py b/tests/nested_foreign_keys/tests.py
index 08a19504e4..840d5f21fa 100644
--- a/tests/nested_foreign_keys/tests.py
+++ b/tests/nested_foreign_keys/tests.py
@@ -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
+ )