# HG changeset patch # User Marcin Kuzminski # Date 1354838657 -3600 # Node ID 86e087bd75ce086c273d8da3bf54bb796fa04e31 # Parent 7b0c19b006292c73bf1e5e373d5c5e2423670a71 fixed tests, made the journal filter consistent accross different databases diff -r 7b0c19b00629 -r 86e087bd75ce rhodecode/controllers/admin/admin.py --- a/rhodecode/controllers/admin/admin.py Fri Dec 07 00:31:04 2012 +0100 +++ b/rhodecode/controllers/admin/admin.py Fri Dec 07 01:04:17 2012 +0100 @@ -30,7 +30,7 @@ from webhelpers.paginate import Page from whoosh.qparser.default import QueryParser from whoosh import query -from sqlalchemy.sql.expression import or_, and_ +from sqlalchemy.sql.expression import or_, and_, func from rhodecode.lib.auth import LoginRequired, HasPermissionAllDecorator from rhodecode.lib.base import BaseController, render @@ -63,12 +63,12 @@ if wc_term.startswith('*') and not wc_term.endswith('*'): #postfix == endswith wc_term = remove_prefix(wc_term, prefix='*') - return getattr(col, 'endswith')(wc_term) + return func.lower(col).endswith(wc_term) elif wc_term.startswith('*') and wc_term.endswith('*'): #wildcard == ilike wc_term = remove_prefix(wc_term, prefix='*') wc_term = remove_suffix(wc_term, suffix='*') - return getattr(col, 'contains')(wc_term) + return func.lower(col).contains(wc_term) def get_filterion(field, val, term): @@ -88,10 +88,10 @@ if isinstance(term, query.Wildcard): return wildcard_handler(field, val) elif isinstance(term, query.Prefix): - return field.startswith(val) + return func.lower(field).startswith(func.lower(val)) elif isinstance(term, query.DateRange): return and_(field >= val[0], field <= val[1]) - return field == val + return func.lower(field) == func.lower(val) if isinstance(qry, (query.And, query.Term, query.Prefix, query.Wildcard, query.DateRange)): diff -r 7b0c19b00629 -r 86e087bd75ce rhodecode/tests/functional/test_admin.py --- a/rhodecode/tests/functional/test_admin.py Fri Dec 07 00:31:04 2012 +0100 +++ b/rhodecode/tests/functional/test_admin.py Fri Dec 07 01:04:17 2012 +0100 @@ -24,6 +24,9 @@ v = safe_unicode(v) if k == 'action_date': v = datetime.datetime.strptime(v, '%Y-%m-%d %H:%M:%S.%f') + if k in ['user_id', 'repository_id']: + #nullable due to FK problems + v = None setattr(ul, k, v) Session().add(ul) Session().commit() @@ -49,6 +52,12 @@ filter='repository:rhodecode')) response.mustcontain('3 entries') + def test_filter_journal_filter_exact_match_on_repository_CamelCase(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:RhodeCode')) + response.mustcontain('3 entries') + def test_filter_journal_filter_wildcard_on_repository(self): self.log_user() response = self.app.get(url(controller='admin/admin', action='index', @@ -61,6 +70,12 @@ filter='repository:test*')) response.mustcontain('257 entries') + def test_filter_journal_filter_prefix_on_repository_CamelCase(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='repository:Test*')) + response.mustcontain('257 entries') + def test_filter_journal_filter_prefix_on_repository_and_user(self): self.log_user() response = self.app.get(url(controller='admin/admin', action='index', @@ -79,6 +94,12 @@ filter='username:demo')) response.mustcontain('1087 entries') + def test_filter_journal_filter_exact_match_on_username_camelCase(self): + self.log_user() + response = self.app.get(url(controller='admin/admin', action='index', + filter='username:DemO')) + response.mustcontain('1087 entries') + def test_filter_journal_filter_wildcard_on_username(self): self.log_user() response = self.app.get(url(controller='admin/admin', action='index',