Author: thimal
Date: Mon Aug 11 16:10:30 2014
New Revision: 1617316

URL: http://svn.apache.org/r1617316
Log:
added the test cases to plugins added (keywords suggest, duplicate ticket search

Added:
    
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/tests/
      - copied from r1617129, bloodhound/trunk/bloodhound_theme/bhtheme/tests/
Modified:
    bloodhound/branches/bep_0013_dynamic_clientside_features/   (props changed)
    
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/tests/theme.py
    
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/setup.py

Propchange: bloodhound/branches/bep_0013_dynamic_clientside_features/
------------------------------------------------------------------------------
  Merged /bloodhound/trunk:r1617129

Modified: 
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/tests/theme.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/tests/theme.py?rev=1617316&r1=1617129&r2=1617316&view=diff
==============================================================================
--- 
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/tests/theme.py
 (original)
+++ 
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/bhtheme/tests/theme.py
 Mon Aug 11 16:10:30 2014
@@ -1,7 +1,7 @@
 # -*- coding: UTF-8 -*-
 
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
 #  distributed with this work for additional information
 #  regarding copyright ownership.  The ASF licenses this file
 #  to you under the Apache License, Version 2.0 (the
@@ -17,21 +17,43 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
-from trac.test import EnvironmentStub
+import unittest
+
+from trac.test import EnvironmentStub, Mock, MockPerm
+from trac.util.datefmt import utc
 from trac.web.chrome import Chrome
 
 from bhdashboard.web_ui import DashboardModule
-from bhtheme.theme import BloodhoundTheme
+from bhtheme.theme import BloodhoundTheme, KeywordSuggestModule, 
DuplicateTicketSearch, AutocompleteUsers
 from bhtheme.tests import unittest
 
+from trac.ticket import Ticket
 
-class ThemeTestCase(unittest.TestCase):
 
+try:
+    from babel import Locale
+
+    locale_en = Locale.parse('en_US')
+except ImportError:
+    locale_en = None
+
+
+class ThemeTestCase(unittest.TestCase):
     def setUp(self):
         self.env = EnvironmentStub(enable=('trac.*', 'bhtheme.*'),
                                    default_data=True)
         self.bhtheme = BloodhoundTheme(self.env)
 
+        self.keywords_component = KeywordSuggestModule(self.env)
+        self.duplicateTicket_component = DuplicateTicketSearch(self.env)
+        self.autocompleteuser_component = AutocompleteUsers(self.env)
+
+        self.req = Mock(href=self.env.href, authname='anonymous', tz=utc,
+                        args=dict(action='dummy'),
+                        locale=locale_en, lc_time=locale_en,
+                        chrome={'warnings': []})
+        self.req.perm = MockPerm()
+
     def tearDown(self):
         self.env.reset_db()
 
@@ -41,6 +63,78 @@ class ThemeTestCase(unittest.TestCase):
         for dir in self.bhtheme.get_templates_dirs():
             self.assertIn(dir, chrome.get_all_templates_dirs())
 
+    def test_get_users(self):
+
+        self.req.args['term'] = 'adm'
+        test_users = ['key1', 'key2', 'key3']
+
+        users = self.autocompleteuser_component._get_users(self.req)
+        self.assertEqual(test_users, users)
+
+    def test_get_keywords_string(self):
+        test_keywords = ['key1', 'key2', 'key3']
+
+        self._insert_ticket(self.env, 't1', 'key1,key2,key3')
+        self._insert_ticket(self.env, 't2', 'key1,key2')
+        self._insert_ticket(self.env, 't3', 'key1')
+        keywords = self.keywords_component._get_keywords_string(self.req)
+        self.assertEqual(test_keywords, keywords)
+
+    def test_terms_to_search_terms_4(self):
+
+        self.req.args['q'] = 'one two three four'
+        test_terms = ['one two three four', 'two three four', 'one two three']
+
+        terms = self.duplicateTicket_component._terms_to_search(self.req)
+        self.assertEqual(test_terms, terms)
+
+    def test_terms_to_search_terms_3(self):
+
+        self.req.args['q'] = 'one two three'
+        test_terms = ['one two three']
+
+        terms = self.duplicateTicket_component._terms_to_search(self.req)
+        self.assertEqual(test_terms, terms)
+
+    def test_sql_to_search_single_values(self):
+
+        db = self.env.get_db_cnx()
+        columns = ['summary']
+        terms = ['one two']
+        test_sql = "(summary LIKE %s ESCAPE '/')"
+        test_args = tuple(['%one two%'])
+
+        sql, args = self.duplicateTicket_component._sql_to_search(db, columns, 
terms)
+        self.assertEqual(test_sql, sql)
+        self.assertEqual(test_args, args)
+
+    def test_sql_to_search(self):
+
+        db = self.env.get_db_cnx()
+        columns = ['summary', 'description']
+        terms = ['one two', 'one']
+        test_sql = "(summary LIKE %s ESCAPE '/'" \
+                   " OR description LIKE %s ESCAPE '/')" \
+                   " OR (summary LIKE %s ESCAPE '/' OR description LIKE %s 
ESCAPE '/')"
+        test_args = tuple(['%one two%', '%one two%', '%one%', '%one%'])
+
+        sql, args = self.duplicateTicket_component._sql_to_search(db, columns, 
terms)
+        self.assertEqual(test_sql, sql)
+        self.assertEqual(test_args, args)
+
+    @classmethod
+    def _insert_ticket(cls, env, summary, keywords, **kw):
+        """Helper for inserting a ticket into the database"""
+        ticket = Ticket(env)
+        ticket["summary"] = summary
+        ticket["keywords"] = keywords
+        for k, v in kw.items():
+            ticket[k] = v
+        return ticket.insert()
+
+    def _insert_and_load_ticket(self, summary, **kw):
+        return Ticket(self.env, self._insert_ticket(self.env, summary, **kw))
+
 
 def suite():
     suite = unittest.TestSuite()

Modified: 
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/setup.py
URL: 
http://svn.apache.org/viewvc/bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/setup.py?rev=1617316&r1=1617315&r2=1617316&view=diff
==============================================================================
--- 
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/setup.py
 (original)
+++ 
bloodhound/branches/bep_0013_dynamic_clientside_features/bloodhound_theme/setup.py
 Mon Aug 11 16:10:30 2014
@@ -56,6 +56,7 @@ setup(
       'Framework :: Trac',
     ],
   install_requires = ['BloodhoundDashboardPlugin', 'TracThemeEngine'],
+  test_suite = 'bhtheme.tests.suite',
   tests_require = ['unittest2'] if sys.version_info < (2, 7) else [],
   entry_points = {
       'trac.plugins': [


Reply via email to