1
1
from django .test import TestCase
2
2
from django .db import connection
3
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
+
4
41
5
42
class ManyToManyUnmanagedTests (TestCase ):
6
-
43
+
7
44
def test_many_to_many_between_unmanaged (self ):
8
45
"""
9
46
The intermediary table between two unmanaged models should not be created.
10
47
"""
11
48
table = Unmanaged2 ._meta .get_field ('mm' ).m2m_db_table ()
12
49
tables = connection .introspection .table_names ()
13
50
self .assert_ (table not in tables , "Table '%s' should not exist, but it does." % table )
14
-
51
+
15
52
def test_many_to_many_between_unmanaged_and_managed (self ):
16
53
"""
17
54
An intermediary table between a managed and an unmanaged model should be created.
18
55
"""
19
56
table = Managed1 ._meta .get_field ('mm' ).m2m_db_table ()
20
57
tables = connection .introspection .table_names ()
21
58
self .assert_ (table in tables , "Table '%s' does not exist." % table )
22
-
0 commit comments