]> gitweb.fperrin.net Git - djsite.git/blob - quotes/test_cloud.py
First iteration towards doing a tag cloud
[djsite.git] / quotes / test_cloud.py
1 import pytest
2 import re
3
4 from quotes.models import QuoteTag, Quote, Work, Author
5
6 class Test_Cloud(object):
7     @pytest.fixture
8     def size_range_small(self):
9         return [1, 5, 10, 7, 3]
10
11     def fill_db(self, size_range):
12         maxsize = max(size_range)
13
14         a = Author.objects.create(name="blah")
15         w = Work.objects.create(name="foo", author=a)
16
17         for i in range(maxsize):
18             Quote.objects.create(text="some text for quote %d" % i,
19                                  work = w)
20
21         for size in size_range:
22             tag = QuoteTag.objects.create(tag="tag-%d-" % size)
23             quotelist = Quote.objects.all()[:size]
24
25             for i in range(size):
26                 quotelist[i].tags.add(tag)
27
28     def check_cloud(self, c, size_range):
29         top20 = sorted(size_range, reverse=True)[0:20]
30
31         cloud = c.getPage("cloud/")
32         for size in top20:
33             assert re.search("tag-%d-, %d quotes" % (size, size), cloud)
34
35     def test_cloud(self, size_range_small, db, c):
36         self.fill_db(size_range_small)
37         self.check_cloud(c, size_range_small)
38
39     @pytest.fixture
40     def size_range_large(self):
41         return range(1, 50)
42
43     def test_cloud_large(self, size_range_large, db, c):
44         self.fill_db(size_range_large)
45         self.check_cloud(c, size_range_large)