|
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) |