##// END OF EJS Templates
fixed tests, made the journal filter consistent accross different databases
marcink -
r3072:86e087bd beta
parent child Browse files
Show More
@@ -30,7 +30,7 b' from sqlalchemy.orm import joinedload'
30 from webhelpers.paginate import Page
30 from webhelpers.paginate import Page
31 from whoosh.qparser.default import QueryParser
31 from whoosh.qparser.default import QueryParser
32 from whoosh import query
32 from whoosh import query
33 from sqlalchemy.sql.expression import or_, and_
33 from sqlalchemy.sql.expression import or_, and_, func
34
34
35 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
35 from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator
36 from rhodecode.lib.base import BaseController, render
36 from rhodecode.lib.base import BaseController, render
@@ -63,12 +63,12 b' def _journal_filter(user_log, search_ter'
63 if wc_term.startswith('*') and not wc_term.endswith('*'):
63 if wc_term.startswith('*') and not wc_term.endswith('*'):
64 #postfix == endswith
64 #postfix == endswith
65 wc_term = remove_prefix(wc_term, prefix='*')
65 wc_term = remove_prefix(wc_term, prefix='*')
66 return getattr(col, 'endswith')(wc_term)
66 return func.lower(col).endswith(wc_term)
67 elif wc_term.startswith('*') and wc_term.endswith('*'):
67 elif wc_term.startswith('*') and wc_term.endswith('*'):
68 #wildcard == ilike
68 #wildcard == ilike
69 wc_term = remove_prefix(wc_term, prefix='*')
69 wc_term = remove_prefix(wc_term, prefix='*')
70 wc_term = remove_suffix(wc_term, suffix='*')
70 wc_term = remove_suffix(wc_term, suffix='*')
71 return getattr(col, 'contains')(wc_term)
71 return func.lower(col).contains(wc_term)
72
72
73 def get_filterion(field, val, term):
73 def get_filterion(field, val, term):
74
74
@@ -88,10 +88,10 b' def _journal_filter(user_log, search_ter'
88 if isinstance(term, query.Wildcard):
88 if isinstance(term, query.Wildcard):
89 return wildcard_handler(field, val)
89 return wildcard_handler(field, val)
90 elif isinstance(term, query.Prefix):
90 elif isinstance(term, query.Prefix):
91 return field.startswith(val)
91 return func.lower(field).startswith(func.lower(val))
92 elif isinstance(term, query.DateRange):
92 elif isinstance(term, query.DateRange):
93 return and_(field >= val[0], field <= val[1])
93 return and_(field >= val[0], field <= val[1])
94 return field == val
94 return func.lower(field) == func.lower(val)
95
95
96 if isinstance(qry, (query.And, query.Term, query.Prefix, query.Wildcard,
96 if isinstance(qry, (query.And, query.Term, query.Prefix, query.Wildcard,
97 query.DateRange)):
97 query.DateRange)):
@@ -24,6 +24,9 b' class TestAdminController(TestController'
24 v = safe_unicode(v)
24 v = safe_unicode(v)
25 if k == 'action_date':
25 if k == 'action_date':
26 v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S.%f')
26 v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S.%f')
27 if k in ['user_id', 'repository_id']:
28 #nullable due to FK problems
29 v = None
27 setattr(ul, k, v)
30 setattr(ul, k, v)
28 Session().add(ul)
31 Session().add(ul)
29 Session().commit()
32 Session().commit()
@@ -49,6 +52,12 b' class TestAdminController(TestController'
49 filter='repository:rhodecode'))
52 filter='repository:rhodecode'))
50 response.mustcontain('3 entries')
53 response.mustcontain('3 entries')
51
54
55 def test_filter_journal_filter_exact_match_on_repository_CamelCase(self):
56 self.log_user()
57 response = self.app.get(url(controller='admin/admin', action='index',
58 filter='repository:RhodeCode'))
59 response.mustcontain('3 entries')
60
52 def test_filter_journal_filter_wildcard_on_repository(self):
61 def test_filter_journal_filter_wildcard_on_repository(self):
53 self.log_user()
62 self.log_user()
54 response = self.app.get(url(controller='admin/admin', action='index',
63 response = self.app.get(url(controller='admin/admin', action='index',
@@ -61,6 +70,12 b' class TestAdminController(TestController'
61 filter='repository:test*'))
70 filter='repository:test*'))
62 response.mustcontain('257 entries')
71 response.mustcontain('257 entries')
63
72
73 def test_filter_journal_filter_prefix_on_repository_CamelCase(self):
74 self.log_user()
75 response = self.app.get(url(controller='admin/admin', action='index',
76 filter='repository:Test*'))
77 response.mustcontain('257 entries')
78
64 def test_filter_journal_filter_prefix_on_repository_and_user(self):
79 def test_filter_journal_filter_prefix_on_repository_and_user(self):
65 self.log_user()
80 self.log_user()
66 response = self.app.get(url(controller='admin/admin', action='index',
81 response = self.app.get(url(controller='admin/admin', action='index',
@@ -79,6 +94,12 b' class TestAdminController(TestController'
79 filter='username:demo'))
94 filter='username:demo'))
80 response.mustcontain('1087 entries')
95 response.mustcontain('1087 entries')
81
96
97 def test_filter_journal_filter_exact_match_on_username_camelCase(self):
98 self.log_user()
99 response = self.app.get(url(controller='admin/admin', action='index',
100 filter='username:DemO'))
101 response.mustcontain('1087 entries')
102
82 def test_filter_journal_filter_wildcard_on_username(self):
103 def test_filter_journal_filter_wildcard_on_username(self):
83 self.log_user()
104 self.log_user()
84 response = self.app.get(url(controller='admin/admin', action='index',
105 response = self.app.get(url(controller='admin/admin', action='index',
General Comments 0
You need to be logged in to leave comments. Login now