PageRenderTime 162ms CodeModel.GetById 80ms app.highlight 6ms RepoModel.GetById 75ms app.codeStats 0ms

/tests/modeltests/unmanaged_models/tests.py

https://code.google.com/p/mango-py/
Python | 58 lines | 51 code | 2 blank | 5 comment | 2 complexity | ee954532da550d7562b74b646c06d6d4 MD5 | raw file
 1from django.test import TestCase
 2from django.db import connection
 3from models import Unmanaged1, Unmanaged2, Managed1
 4from models import A01, A02, B01, B02, C01, C02
 5
 6class SimpleTests(TestCase):
 7
 8    def test_simple(self):
 9        """
10        The main test here is that the all the models can be created without
11        any database errors. We can also do some more simple insertion and
12        lookup tests whilst we're here to show that the second of models do
13        refer to the tables from the first set.
14        """
15        # Insert some data into one set of models.
16        a = A01.objects.create(f_a="foo", f_b=42)
17        B01.objects.create(fk_a=a, f_a="fred", f_b=1729)
18        c = C01.objects.create(f_a="barney", f_b=1)
19        c.mm_a = [a]
20
21        # ... and pull it out via the other set.
22        a2 = A02.objects.all()[0]
23        self.assertTrue(isinstance(a2, A02))
24        self.assertEqual(a2.f_a, "foo")
25
26        b2 = B02.objects.all()[0]
27        self.assertTrue(isinstance(b2, B02))
28        self.assertEqual(b2.f_a, "fred")
29
30        self.assertTrue(isinstance(b2.fk_a, A02))
31        self.assertEqual(b2.fk_a.f_a, "foo")
32
33        self.assertEqual(list(C02.objects.filter(f_a=None)), [])
34
35        resp = list(C02.objects.filter(mm_a=a.id))
36        self.assertEqual(len(resp), 1)
37
38        self.assertTrue(isinstance(resp[0], C02))
39        self.assertEqual(resp[0].f_a, 'barney')
40
41
42class ManyToManyUnmanagedTests(TestCase):
43
44    def test_many_to_many_between_unmanaged(self):
45        """
46        The intermediary table between two unmanaged models should not be created.
47        """
48        table = Unmanaged2._meta.get_field('mm').m2m_db_table()
49        tables = connection.introspection.table_names()
50        self.assertTrue(table not in tables, "Table '%s' should not exist, but it does." % table)
51
52    def test_many_to_many_between_unmanaged_and_managed(self):
53        """
54        An intermediary table between a managed and an unmanaged model should be created.
55        """
56        table = Managed1._meta.get_field('mm').m2m_db_table()
57        tables = connection.introspection.table_names()
58        self.assertTrue(table in tables, "Table '%s' does not exist." % table)