changeset 3072:86e087bd75ce beta

fixed tests, made the journal filter consistent accross different databases
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 07 Dec 2012 01:04:17 +0100
parents 7b0c19b00629
children e54ec8211944
files rhodecode/controllers/admin/admin.py rhodecode/tests/functional/test_admin.py
diffstat 2 files changed, 26 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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)):
--- 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',