|
1 from datetime import datetime |
|
2 |
|
3 from django.test import TestCase |
|
4 |
|
5 from models import Article, Category |
|
6 |
|
7 |
|
8 class M2MMultipleTests(TestCase): |
|
9 def test_multiple(self): |
|
10 c1, c2, c3, c4 = [ |
|
11 Category.objects.create(name=name) |
|
12 for name in ["Sports", "News", "Crime", "Life"] |
|
13 ] |
|
14 |
|
15 a1 = Article.objects.create( |
|
16 headline="Area man steals", pub_date=datetime(2005, 11, 27) |
|
17 ) |
|
18 a1.primary_categories.add(c2, c3) |
|
19 a1.secondary_categories.add(c4) |
|
20 |
|
21 a2 = Article.objects.create( |
|
22 headline="Area man runs", pub_date=datetime(2005, 11, 28) |
|
23 ) |
|
24 a2.primary_categories.add(c1, c2) |
|
25 a2.secondary_categories.add(c4) |
|
26 |
|
27 self.assertQuerysetEqual( |
|
28 a1.primary_categories.all(), [ |
|
29 "Crime", |
|
30 "News", |
|
31 ], |
|
32 lambda c: c.name |
|
33 ) |
|
34 self.assertQuerysetEqual( |
|
35 a2.primary_categories.all(), [ |
|
36 "News", |
|
37 "Sports", |
|
38 ], |
|
39 lambda c: c.name |
|
40 ) |
|
41 self.assertQuerysetEqual( |
|
42 a1.secondary_categories.all(), [ |
|
43 "Life", |
|
44 ], |
|
45 lambda c: c.name |
|
46 ) |
|
47 self.assertQuerysetEqual( |
|
48 c1.primary_article_set.all(), [ |
|
49 "Area man runs", |
|
50 ], |
|
51 lambda a: a.headline |
|
52 ) |
|
53 self.assertQuerysetEqual( |
|
54 c1.secondary_article_set.all(), [] |
|
55 ) |
|
56 self.assertQuerysetEqual( |
|
57 c2.primary_article_set.all(), [ |
|
58 "Area man steals", |
|
59 "Area man runs", |
|
60 ], |
|
61 lambda a: a.headline |
|
62 ) |
|
63 self.assertQuerysetEqual( |
|
64 c2.secondary_article_set.all(), [] |
|
65 ) |
|
66 self.assertQuerysetEqual( |
|
67 c3.primary_article_set.all(), [ |
|
68 "Area man steals", |
|
69 ], |
|
70 lambda a: a.headline |
|
71 ) |
|
72 self.assertQuerysetEqual( |
|
73 c3.secondary_article_set.all(), [] |
|
74 ) |
|
75 self.assertQuerysetEqual( |
|
76 c4.primary_article_set.all(), [] |
|
77 ) |
|
78 self.assertQuerysetEqual( |
|
79 c4.secondary_article_set.all(), [ |
|
80 "Area man steals", |
|
81 "Area man runs", |
|
82 ], |
|
83 lambda a: a.headline |
|
84 ) |