# -*- coding: iso-8859-1 -* ## ## ## import re import sys, os if __name__ == '__main__': execfile(os.path.join(sys.path[0], 'framework.py')) from base import TestBase #------------------------------------------------------------------------------ # # Some constants # #------------------------------------------------------------------------------ class SearchTestCase(TestBase): """ Test searching, indexing, spellcorrection, catalog stuff """ def test_unicode_search(self): """you should be able to enter an issue in unicode, then search for any of the words you wrote and find it""" title = u"Les opposants au r\xc3\xa9gime tha\xc3\xaflandais" description = u"\xc3\xa0 l'occupation du si\xc3\xa8g\n\n"\ u"Au Parlement, un air d'union sacr\xc3\xa9e face \xc3\xa0" tracker = self.folder.tracker request = self.app.REQUEST request.set('title', title) request.set('fromname', u'B\xc3\xa9b') request.set('email', u'email@address.com') request.set('description', description) request.set('type', tracker.getDefaultType()) request.set('urgency', tracker.getDefaultUrgency()) tracker.SubmitIssue(request) # it should be possible to display it issue = tracker.getIssueObjects()[0] html = issue.index_html(self.app.REQUEST) self.assertTrue(isinstance(html, unicode)) self.assertTrue(u'r\xc3\xa9gime' in html) # now search for one of those words q = u'R\xc3\xa9GIME' search_results = tracker._searchCatalog(q) self.assertEqual(len(search_results), 1) self.assertEqual(search_results[0], issue) highlit = re.compile('(.*?)') # if you view the issue with a q variable set, # it should highlight the text self.app.REQUEST.set('q', u'air') html = issue.index_html(self.app.REQUEST) self.assertEqual(highlit.findall(html), [u'air']) # and do the same with a search with non-ascii characters self.app.REQUEST.set('q', u'R\xc3\xa9GIME') html = issue.index_html(self.app.REQUEST) self.assertEqual(highlit.findall(html), [u'r\xc3\xa9gime']) def test_suite(): from unittest import TestSuite, makeSuite suite = TestSuite() suite.addTest(makeSuite(SearchTestCase)) return suite if __name__ == '__main__': framework()