Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Add some more broken tests.
  • Loading branch information
mjtamlyn committed Jan 2, 2013
1 parent 4f1300a commit db8e99a
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
11 changes: 11 additions & 0 deletions tests/modeltests/known_related_objects/fixtures/tournament.json
Expand Up @@ -13,11 +13,19 @@
"name": "Tourney 2"
}
},
{
"pk": 1,
"model": "known_related_objects.organiser",
"fields": {
"name": "Organiser 1"
}
},
{
"pk": 1,
"model": "known_related_objects.pool",
"fields": {
"tournament": 1,
"organiser": 1,
"name": "T1 Pool 1"
}
},
Expand All @@ -26,6 +34,7 @@
"model": "known_related_objects.pool",
"fields": {
"tournament": 1,
"organiser": 1,
"name": "T1 Pool 2"
}
},
Expand All @@ -34,6 +43,7 @@
"model": "known_related_objects.pool",
"fields": {
"tournament": 2,
"organiser": 1,
"name": "T2 Pool 1"
}
},
Expand All @@ -42,6 +52,7 @@
"model": "known_related_objects.pool",
"fields": {
"tournament": 2,
"organiser": 1,
"name": "T2 Pool 2"
}
},
Expand Down
4 changes: 4 additions & 0 deletions tests/modeltests/known_related_objects/models.py
Expand Up @@ -9,9 +9,13 @@
class Tournament(models.Model):
name = models.CharField(max_length=30)

class Organiser(models.Model):
name = models.CharField(max_length=30)

class Pool(models.Model):
name = models.CharField(max_length=30)
tournament = models.ForeignKey(Tournament)
organiser = models.ForeignKey(Organiser)

class PoolStyle(models.Model):
name = models.CharField(max_length=30)
Expand Down
20 changes: 19 additions & 1 deletion tests/modeltests/known_related_objects/tests.py
Expand Up @@ -2,7 +2,7 @@

from django.test import TestCase

from .models import Tournament, Pool, PoolStyle
from .models import Tournament, Organiser, Pool, PoolStyle

class ExistingRelatedInstancesTests(TestCase):
fixtures = ['tournament.json']
Expand Down Expand Up @@ -35,6 +35,24 @@ def test_queryset_or(self):
related_objects = set(pool.tournament for pool in pools)
self.assertEqual(related_objects, set((tournament_1, tournament_2)))

def test_queryset_or_different_cached_items(self):
tournament = Tournament.objects.get(pk=1)
organiser = Organiser.objects.get(pk=1)
with self.assertNumQueries(1):
pools = tournament.pool_set.all() | organiser.pool_set.all()
first = pools.filter(pk=1)[0]
self.assertIs(first.tournament, tournament)
self.assertIs(first.organiser, organiser)

def test_queryset_and(self):
tournament = Tournament.objects.get(pk=1)
organiser = Organiser.objects.get(pk=1)
with self.assertNumQueries(1):
pools = tournament.pool_set.all() & organiser.pool_set.all()
first = pools.filter(pk=1)[0]
self.assertIs(first.tournament, tournament)
self.assertIs(first.organiser, organiser)

def test_one_to_one(self):
with self.assertNumQueries(2):
style = PoolStyle.objects.get(pk=1)
Expand Down

0 comments on commit db8e99a

Please sign in to comment.