summaryrefslogtreecommitdiff
path: root/parts/django/tests/modeltests/m2m_recursive
diff options
context:
space:
mode:
Diffstat (limited to 'parts/django/tests/modeltests/m2m_recursive')
-rw-r--r--parts/django/tests/modeltests/m2m_recursive/__init__.py0
-rw-r--r--parts/django/tests/modeltests/m2m_recursive/models.py28
-rw-r--r--parts/django/tests/modeltests/m2m_recursive/tests.py253
3 files changed, 0 insertions, 281 deletions
diff --git a/parts/django/tests/modeltests/m2m_recursive/__init__.py b/parts/django/tests/modeltests/m2m_recursive/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/parts/django/tests/modeltests/m2m_recursive/__init__.py
+++ /dev/null
diff --git a/parts/django/tests/modeltests/m2m_recursive/models.py b/parts/django/tests/modeltests/m2m_recursive/models.py
deleted file mode 100644
index 83c943a..0000000
--- a/parts/django/tests/modeltests/m2m_recursive/models.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-28. Many-to-many relationships between the same two tables
-
-In this example, a ``Person`` can have many friends, who are also ``Person``
-objects. Friendship is a symmetrical relationship - if I am your friend, you
-are my friend. Here, ``friends`` is an example of a symmetrical
-``ManyToManyField``.
-
-A ``Person`` can also have many idols - but while I may idolize you, you may
-not think the same of me. Here, ``idols`` is an example of a non-symmetrical
-``ManyToManyField``. Only recursive ``ManyToManyField`` fields may be
-non-symmetrical, and they are symmetrical by default.
-
-This test validates that the many-to-many table is created using a mangled name
-if there is a name clash, and tests that symmetry is preserved where
-appropriate.
-"""
-
-from django.db import models
-
-
-class Person(models.Model):
- name = models.CharField(max_length=20)
- friends = models.ManyToManyField('self')
- idols = models.ManyToManyField('self', symmetrical=False, related_name='stalkers')
-
- def __unicode__(self):
- return self.name
diff --git a/parts/django/tests/modeltests/m2m_recursive/tests.py b/parts/django/tests/modeltests/m2m_recursive/tests.py
deleted file mode 100644
index 4251028..0000000
--- a/parts/django/tests/modeltests/m2m_recursive/tests.py
+++ /dev/null
@@ -1,253 +0,0 @@
-from operator import attrgetter
-
-from django.test import TestCase
-
-from models import Person
-
-
-class RecursiveM2MTests(TestCase):
- def test_recursive_m2m(self):
- a, b, c, d = [
- Person.objects.create(name=name)
- for name in ["Anne", "Bill", "Chuck", "David"]
- ]
-
- # Add some friends in the direction of field definition
- # Anne is friends with Bill and Chuck
- a.friends.add(b, c)
-
- # David is friends with Anne and Chuck - add in reverse direction
- d.friends.add(a,c)
-
- # Who is friends with Anne?
- self.assertQuerysetEqual(
- a.friends.all(), [
- "Bill",
- "Chuck",
- "David"
- ],
- attrgetter("name")
- )
- # Who is friends with Bill?
- self.assertQuerysetEqual(
- b.friends.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Who is friends with Chuck?
- self.assertQuerysetEqual(
- c.friends.all(), [
- "Anne",
- "David"
- ],
- attrgetter("name")
- )
- # Who is friends with David?
- self.assertQuerysetEqual(
- d.friends.all(), [
- "Anne",
- "Chuck",
- ],
- attrgetter("name")
- )
- # Bill is already friends with Anne - add Anne again, but in the
- # reverse direction
- b.friends.add(a)
-
- # Who is friends with Anne?
- self.assertQuerysetEqual(
- a.friends.all(), [
- "Bill",
- "Chuck",
- "David",
- ],
- attrgetter("name")
- )
- # Who is friends with Bill?
- self.assertQuerysetEqual(
- b.friends.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Remove Anne from Bill's friends
- b.friends.remove(a)
- # Who is friends with Anne?
- self.assertQuerysetEqual(
- a.friends.all(), [
- "Chuck",
- "David",
- ],
- attrgetter("name")
- )
- # Who is friends with Bill?
- self.assertQuerysetEqual(
- b.friends.all(), []
- )
-
- # Clear Anne's group of friends
- a.friends.clear()
- # Who is friends with Anne?
- self.assertQuerysetEqual(
- a.friends.all(), []
- )
- # Reverse relationships should also be gone
- # Who is friends with Chuck?
- self.assertQuerysetEqual(
- c.friends.all(), [
- "David",
- ],
- attrgetter("name")
- )
- # Who is friends with David?
- self.assertQuerysetEqual(
- d.friends.all(), [
- "Chuck",
- ],
- attrgetter("name")
- )
-
- # Add some idols in the direction of field definition
- # Anne idolizes Bill and Chuck
- a.idols.add(b, c)
- # Bill idolizes Anne right back
- b.idols.add(a)
- # David is idolized by Anne and Chuck - add in reverse direction
- d.stalkers.add(a, c)
-
- # Who are Anne's idols?
- self.assertQuerysetEqual(
- a.idols.all(), [
- "Bill",
- "Chuck",
- "David",
- ],
- attrgetter("name")
- )
- # Who is stalking Anne?
- self.assertQuerysetEqual(
- a.stalkers.all(), [
- "Bill",
- ],
- attrgetter("name")
- )
- # Who are Bill's idols?
- self.assertQuerysetEqual(
- b.idols.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Who is stalking Bill?
- self.assertQuerysetEqual(
- b.stalkers.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Who are Chuck's idols?
- self.assertQuerysetEqual(
- c.idols.all(), [
- "David",
- ],
- attrgetter("name"),
- )
- # Who is stalking Chuck?
- self.assertQuerysetEqual(
- c.stalkers.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Who are David's idols?
- self.assertQuerysetEqual(
- d.idols.all(), []
- )
- # Who is stalking David
- self.assertQuerysetEqual(
- d.stalkers.all(), [
- "Anne",
- "Chuck",
- ],
- attrgetter("name")
- )
- # Bill is already being stalked by Anne - add Anne again, but in the
- # reverse direction
- b.stalkers.add(a)
- # Who are Anne's idols?
- self.assertQuerysetEqual(
- a.idols.all(), [
- "Bill",
- "Chuck",
- "David",
- ],
- attrgetter("name")
- )
- # Who is stalking Anne?
- self.assertQuerysetEqual(
- a.stalkers.all(), [
- "Bill",
- ],
- attrgetter("name")
- )
- # Who are Bill's idols
- self.assertQuerysetEqual(
- b.idols.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Who is stalking Bill?
- self.assertQuerysetEqual(
- b.stalkers.all(), [
- "Anne",
- ],
- attrgetter("name"),
- )
- # Remove Anne from Bill's list of stalkers
- b.stalkers.remove(a)
- # Who are Anne's idols?
- self.assertQuerysetEqual(
- a.idols.all(), [
- "Chuck",
- "David",
- ],
- attrgetter("name")
- )
- # Who is stalking Anne?
- self.assertQuerysetEqual(
- a.stalkers.all(), [
- "Bill",
- ],
- attrgetter("name")
- )
- # Who are Bill's idols?
- self.assertQuerysetEqual(
- b.idols.all(), [
- "Anne",
- ],
- attrgetter("name")
- )
- # Who is stalking Bill?
- self.assertQuerysetEqual(
- b.stalkers.all(), []
- )
- # Clear Anne's group of idols
- a.idols.clear()
- # Who are Anne's idols
- self.assertQuerysetEqual(
- a.idols.all(), []
- )
- # Reverse relationships should also be gone
- # Who is stalking Chuck?
- self.assertQuerysetEqual(
- c.stalkers.all(), []
- )
- # Who is friends with David?
- self.assertQuerysetEqual(
- d.stalkers.all(), [
- "Chuck",
- ],
- attrgetter("name")
- )