Skip to content

Commit

Permalink
Get rid of some noise in the test that is clouding my thinking.
Browse files Browse the repository at this point in the history
  • Loading branch information
kezabelle committed Jun 20, 2016
1 parent 4b4e2f3 commit 455a65c
Showing 1 changed file with 65 additions and 50 deletions.
115 changes: 65 additions & 50 deletions tests/test_query_counts.py
Expand Up @@ -44,6 +44,21 @@ def test_resetting(self):
tuple(A.polymorphs.select_related('fk').models(*models, include_self=False).models(None))


class SanityChecksTestCase(TestCase):
def test_cc_prefetch_related(self):
"""
proving to myself how prefetching from the grandchild works.
"""
with self.assertNumQueries(9):
fk3 = FK3.objects.create()
fk8 = FK8.objects.create()
fk5 = FK5.objects.create()
out = CC._default_manager.create(fk3=fk3, fk5=fk5, fk8=fk8, fk=None)
# 1 CC query + 1 each for fk3,fk5,fk8
with self.assertNumQueries(4):
list(CC.objects.prefetch_related('fk3', 'fk5', 'fk8').filter(pk=out))


class RelationQueryCounts(TestCase):
def test_not_doing_any_prefetching_related_via_children(self):
with self.assertNumQueries(39):
Expand Down Expand Up @@ -212,56 +227,56 @@ def test_prefetch_related(self):
pk_cb = CB._default_manager.create(fk4=fk4, fk2=fk2, fk7=fk7).pk
pk_cc = CC._default_manager.create(fk3=fk3, fk5=fk5, fk8=fk8).pk


with self.assertNumQueries(2):
a = A.polymorphs.get(pk=pk_a)
assert a.fk == fk

with self.assertNumQueries(1):
prefetches = ('aa__fk2', 'aa__fk')
aa = A.polymorphs.select_subclasses(AA).prefetch_related(*prefetches).get(pk=pk_aa)
assert aa.fk2 == fk2
assert aa.fk is None

with self.assertNumQueries(1):
prefetches = ('ab__fk3', 'ab__fk')
ab = A.polymorphs.select_subclasses(AB).prefetch_related(*prefetches).get(pk=pk_ab)
assert ab.fk3 == fk3
assert ab.fk == fk

with self.assertNumQueries(1):
prefetches = ('aa__ba__fk4', 'aa__ba__fk2', 'aa__ba__fk')
ba = A.polymorphs.select_subclasses(BA).prefetch_related(*prefetches).get(pk=pk_ba)
assert ba.fk4 == fk4
assert ba.fk2 == fk2
assert ba.fk is None

with self.assertNumQueries(1):
prefetches = ('ab__bb__fk5', 'ab__bb__fk3', 'ab__bb__fk')
bb = A.polymorphs.select_subclasses(BB).prefetch_related(*prefetches).get(pk=pk_bb)
assert bb.fk5 == fk5
assert bb.fk3 == fk3
assert bb.fk is None

with self.assertNumQueries(1):
prefetches = (
'aa__ba__ca__fk6', 'aa__ba__ca__fk2', 'aa__ba__ca__fk4',
'aa__ba__ca__fk')
ca = A.polymorphs.select_subclasses(CA).prefetch_related(*prefetches).get(pk=pk_ca)
assert ca.fk6 == fk6
assert ca.fk2 == fk2
assert ca.fk4 == fk4
assert ca.fk is None

with self.assertNumQueries(1):
prefetches = (
'aa__ba__cb__fk7', 'aa__ba__cb__fk2', 'aa__ba__cb__fk4',
'aa__ba__cb__fk')
cb = A.polymorphs.select_subclasses(CB).prefetch_related(*prefetches).get(pk=pk_cb)
assert cb.fk7 == fk7
assert cb.fk2 == fk2
assert cb.fk4 == fk4
assert cb.fk is None
#
# with self.assertNumQueries(2):
# a = A.polymorphs.get(pk=pk_a)
# assert a.fk == fk
#
# with self.assertNumQueries(1):
# prefetches = ('aa__fk2', 'aa__fk')
# aa = A.polymorphs.select_subclasses(AA).prefetch_related(*prefetches).get(pk=pk_aa)
# assert aa.fk2 == fk2
# assert aa.fk is None
#
# with self.assertNumQueries(1):
# prefetches = ('ab__fk3', 'ab__fk')
# ab = A.polymorphs.select_subclasses(AB).prefetch_related(*prefetches).get(pk=pk_ab)
# assert ab.fk3 == fk3
# assert ab.fk == fk
#
# with self.assertNumQueries(1):
# prefetches = ('aa__ba__fk4', 'aa__ba__fk2', 'aa__ba__fk')
# ba = A.polymorphs.select_subclasses(BA).prefetch_related(*prefetches).get(pk=pk_ba)
# assert ba.fk4 == fk4
# assert ba.fk2 == fk2
# assert ba.fk is None
#
# with self.assertNumQueries(1):
# prefetches = ('ab__bb__fk5', 'ab__bb__fk3', 'ab__bb__fk')
# bb = A.polymorphs.select_subclasses(BB).prefetch_related(*prefetches).get(pk=pk_bb)
# assert bb.fk5 == fk5
# assert bb.fk3 == fk3
# assert bb.fk is None
#
# with self.assertNumQueries(1):
# prefetches = (
# 'aa__ba__ca__fk6', 'aa__ba__ca__fk2', 'aa__ba__ca__fk4',
# 'aa__ba__ca__fk')
# ca = A.polymorphs.select_subclasses(CA).prefetch_related(*prefetches).get(pk=pk_ca)
# assert ca.fk6 == fk6
# assert ca.fk2 == fk2
# assert ca.fk4 == fk4
# assert ca.fk is None
#
# with self.assertNumQueries(1):
# prefetches = (
# 'aa__ba__cb__fk7', 'aa__ba__cb__fk2', 'aa__ba__cb__fk4',
# 'aa__ba__cb__fk')
# cb = A.polymorphs.select_subclasses(CB).prefetch_related(*prefetches).get(pk=pk_cb)
# assert cb.fk7 == fk7
# assert cb.fk2 == fk2
# assert cb.fk4 == fk4
# assert cb.fk is None

with self.assertNumQueries(1):
prefetches = (
Expand Down

0 comments on commit 455a65c

Please sign in to comment.