1
2
3
4
5
6
7
8
9
10
11
12
13
14 import os
15 import pkg_resources
16 import unittest
17
18 from trac.search.web_ui import SearchModule
19 from trac.test import EnvironmentStub, MockRequest
20 from trac.ticket.model import Ticket
21 from trac.ticket.test import insert_ticket
22 from trac.ticket.web_ui import TicketModule
23 from trac.wiki.admin import WikiAdmin
24 from trac.wiki.web_ui import WikiModule
25 from trac.web.api import RequestDone
26 from trac.web.chrome import Chrome
27
28
30
40
43
45 """Helper for inserting a ticket into the database"""
46 return insert_ticket(self.env, **kw)
47
51
57
59 for _ in xrange(21):
60 self._insert_ticket(summary="Trac")
61 req = MockRequest(self.env, path_info='/search',
62 args={'page': '3', 'q': 'Trac', 'ticket': 'on'})
63
64 data = self._process_request(req)[1]
65
66 self.assertEqual([], req.chrome['warnings'])
67 self.assertEqual(2, data['results'].page)
68
70 """Out of range value for page defaults to page 1."""
71 for _ in xrange(20):
72 self._insert_ticket(summary="Trac")
73 req = MockRequest(self.env, path_info='/search',
74 args={'page': '3', 'q': 'Trac', 'ticket': 'on'})
75
76 data = self._process_request(req)[1]
77
78 self.assertIn("Page 3 is out of range.", req.chrome['warnings'])
79 self.assertEqual(0, data['results'].page)
80
82 """CamelCase word does quick-jump."""
83 req = MockRequest(self.env, path_info='/search',
84 args={'q': 'WikiStart'})
85
86 self.assertRaises(RequestDone,
87 self._process_request, req)
88
89 self.assertEqual('http://example.org/trac.cgi/wiki/WikiStart',
90 req.headers_sent['Location'])
91 self.assertIn("You arrived here through", req.chrome['notices'][0])
92 self.assertIn('<a href="/trac.cgi/search?'
93 'q=WikiStart&noquickjump=1">here</a>',
94 req.chrome['notices'][0])
95
97 """Non-CamelCase word does not quick-jump."""
98 req = MockRequest(self.env, path_info='/search',
99 args={'q': 'TracModWSGI'})
100
101 data = self._process_request(req)[1]
102
103 results = list(data['results'])
104 self.assertIsNone(data['quickjump'])
105 self.assertEqual('TracModWSGI', data['query'])
106 self.assertEqual(1, len(results))
107 self.assertEqual('/trac.cgi/wiki/TracModWSGI', results[0]['href'])
108 self.assertEqual([], req.chrome['notices'])
109
111 """Test for regression of https://trac.edgewall.org/ticket/13212
112 """
113 def do_render(query):
114 req = MockRequest(self.env, path_info='/search',
115 args={'q': query, 'noquickjump': '1'})
116 template, data = self._process_request(req)
117 return self._render_template(req, template, data)
118
119 self.assertIn(u'<a href="/trac.cgi/query?id=1-2">Quickjump to <em>'
120 u'ticket:1,\u200b2</em></a>', do_render('ticket:1,2'))
121 self.assertIn(u'<a href="mailto:[email protected]">Quickjump to <em>'
122 u'<span class="icon">\u200b</span>[email protected]'
123 u'</em></a>', do_render('[email protected]'))
124
125
127 suite = unittest.TestSuite()
128 suite.addTest(unittest.makeSuite(SearchModuleTestCase))
129 return suite
130
131
132 if __name__ == '__main__':
133 unittest.main(defaultTest='test_suite')
134