parts/django/tests/modeltests/unmanaged_models/tests.py
changeset 307 c6bca38c1cbf
equal deleted inserted replaced
306:5ff1fc726848 307:c6bca38c1cbf
       
     1 from django.test import TestCase
       
     2 from django.db import connection
       
     3 from models import Unmanaged1, Unmanaged2, Managed1
       
     4 from models import A01, A02, B01, B02, C01, C02
       
     5 
       
     6 class 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 
       
    42 class 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.assert_(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.assert_(table in tables, "Table '%s' does not exist." % table)