Commit 3a1c03ba90b2ec3549f8fc0c581e26e45aa8eb85
Exists in
master
and in
4 other branches
Merge pull request #121 from colab/test_search
Testing base_indexes class
Showing
2 changed files
with
107 additions
and
7 deletions
Show diff stats
colab/search/base_indexes.py
... | ... | @@ -76,13 +76,7 @@ class BaseIndex(indexes.SearchIndex): |
76 | 76 | ) |
77 | 77 | |
78 | 78 | def prepare_modified_by(self, obj): |
79 | - if hasattr(obj, 'modified_by'): | |
80 | - modified_by = obj.get_modified_by() | |
81 | - if modified_by: | |
82 | - return modified_by.get_full_name() | |
83 | - if self.author_obj: | |
84 | - return self.author_obj.get_full_name() | |
85 | - return obj.author | |
79 | + return self.prepare_fullname(obj) | |
86 | 80 | |
87 | 81 | def prepare_modified_by_url(self, obj): |
88 | 82 | if hasattr(obj, 'modified_by'): | ... | ... |
... | ... | @@ -0,0 +1,106 @@ |
1 | +# -*- coding:utf-8 -*- | |
2 | + | |
3 | +import math | |
4 | +from mock import Mock | |
5 | + | |
6 | +from django.test import TestCase, Client | |
7 | +from colab.search.base_indexes import BaseIndex | |
8 | + | |
9 | + | |
10 | +class SearchViewTest(TestCase): | |
11 | + | |
12 | + def setUp(self): | |
13 | + self.client = Client() | |
14 | + | |
15 | + def tearDown(self): | |
16 | + pass | |
17 | + | |
18 | + def test_get_updated_field(self): | |
19 | + base_index = BaseIndex() | |
20 | + | |
21 | + self.assertEquals('modified', base_index.get_updated_field()) | |
22 | + | |
23 | + def test_get_boost(self): | |
24 | + obj = Mock(hits=10) | |
25 | + base_index = BaseIndex() | |
26 | + | |
27 | + self.assertEquals(1, base_index.get_boost(obj)) | |
28 | + | |
29 | + obj = Mock(hits=11) | |
30 | + self.assertEquals(math.log(11), base_index.get_boost(obj)) | |
31 | + | |
32 | + def test_prepare_author(self): | |
33 | + obj = Mock(author="author") | |
34 | + base_index = BaseIndex() | |
35 | + setattr(base_index, 'author_obj', None) | |
36 | + | |
37 | + self.assertEquals("author", base_index.prepare_author(obj)) | |
38 | + | |
39 | + base_index.author_obj = Mock(username="carlin") | |
40 | + self.assertEquals("carlin", base_index.prepare_author(obj)) | |
41 | + | |
42 | + def test_prepare_author_url(self): | |
43 | + base_index = BaseIndex() | |
44 | + setattr(base_index, 'author_obj', None) | |
45 | + | |
46 | + self.assertEquals(None, base_index.prepare_author_url(None)) | |
47 | + | |
48 | + base_index.author_obj = Mock(get_absolute_url=lambda: "url_test") | |
49 | + self.assertEquals("url_test", base_index.prepare_author_url(None)) | |
50 | + | |
51 | + class AuthorMockObject: | |
52 | + author = "author" | |
53 | + | |
54 | + def test_prepare_modified_by(self): | |
55 | + base_index = BaseIndex() | |
56 | + setattr(base_index, 'author_obj', None) | |
57 | + obj = self.AuthorMockObject() | |
58 | + | |
59 | + self.assertEquals("author", base_index.prepare_modified_by(obj)) | |
60 | + | |
61 | + base_index.author_obj = Mock(get_full_name=lambda: "full_name") | |
62 | + self.assertEquals("full_name", base_index.prepare_modified_by(obj)) | |
63 | + | |
64 | + mock_modified_by = Mock(get_full_name=lambda: "full_name") | |
65 | + obj = Mock(modified_by="somebody", | |
66 | + get_modified_by=lambda: mock_modified_by) | |
67 | + | |
68 | + self.assertEquals("full_name", base_index.prepare_modified_by(obj)) | |
69 | + | |
70 | + def test_prepare_fullname_and_username(self): | |
71 | + base_index = BaseIndex() | |
72 | + setattr(base_index, 'author_obj', Mock(username="user", | |
73 | + get_full_name=lambda: "name")) | |
74 | + | |
75 | + expected = "{}\n{}".format("name", "user") | |
76 | + self.assertEquals(expected, | |
77 | + base_index.prepare_fullname_and_username(None)) | |
78 | + | |
79 | + base_index.author_obj = None | |
80 | + obj = self.AuthorMockObject() | |
81 | + self.assertEquals("author", | |
82 | + base_index.prepare_fullname_and_username(obj)) | |
83 | + | |
84 | + mock_modified_by = Mock(get_full_name=lambda: "full_name", | |
85 | + username="user") | |
86 | + obj = Mock(modified_by="somebody", | |
87 | + get_modified_by=lambda: mock_modified_by) | |
88 | + | |
89 | + expected = "{}\n{}".format("full_name", "user") | |
90 | + self.assertEquals(expected, | |
91 | + base_index.prepare_fullname_and_username(obj)) | |
92 | + | |
93 | + def test_prepare_modified_by_url(self): | |
94 | + base_index = BaseIndex() | |
95 | + setattr(base_index, 'author_obj', None) | |
96 | + | |
97 | + self.assertEquals(None, base_index.prepare_modified_by_url(None)) | |
98 | + | |
99 | + base_index.author_obj = Mock(get_absolute_url=lambda: "urlurl") | |
100 | + self.assertEquals("urlurl", base_index.prepare_modified_by_url(None)) | |
101 | + | |
102 | + mock_modified_by = Mock(get_absolute_url=lambda: "urlurl") | |
103 | + obj = Mock(modified_by="somebody", | |
104 | + get_modified_by=lambda: mock_modified_by) | |
105 | + | |
106 | + self.assertEquals("urlurl", base_index.prepare_modified_by_url(obj)) | ... | ... |