You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bloodhound.apache.org by rj...@apache.org on 2014/01/09 09:15:20 UTC

svn commit: r1556758 - in /bloodhound/trunk/bloodhound_multiproduct: multiproduct/product_admin.py multiproduct/web_ui.py tests/functional/__init__.py tests/functional/admin.py tests/functional/product.py

Author: rjollos
Date: Thu Jan  9 08:15:19 2014
New Revision: 1556758

URL: http://svn.apache.org/r1556758
Log:
0.8dev: Use the authenticated user as the author of the change when renaming a product. Refs #671.

Initial patch and functional test case from Olemis.

Modified:
    bloodhound/trunk/bloodhound_multiproduct/multiproduct/product_admin.py
    bloodhound/trunk/bloodhound_multiproduct/multiproduct/web_ui.py
    bloodhound/trunk/bloodhound_multiproduct/tests/functional/__init__.py
    bloodhound/trunk/bloodhound_multiproduct/tests/functional/admin.py
    bloodhound/trunk/bloodhound_multiproduct/tests/functional/product.py

Modified: bloodhound/trunk/bloodhound_multiproduct/multiproduct/product_admin.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/multiproduct/product_admin.py?rev=1556758&r1=1556757&r2=1556758&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/multiproduct/product_admin.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/multiproduct/product_admin.py Thu Jan  9 08:15:19 2014
@@ -27,7 +27,7 @@ from trac.config import *
 from trac.perm import PermissionSystem
 from trac.resource import ResourceNotFound
 from trac.ticket.admin import TicketAdminPanel, _save_config
-from trac.util import lazy
+from trac.util import getuser, lazy
 from trac.util.text import print_table, to_unicode, printerr, printout
 from trac.util.translation import _, N_, gettext, ngettext
 from trac.web.api import HTTPNotFound, IRequestFilter, IRequestHandler
@@ -94,7 +94,7 @@ class ProductAdminPanel(TicketAdminPanel
                 if req.args.get('save'):
                     req.perm.require('PRODUCT_MODIFY')
                     prod.update_field_dict(field_data)
-                    prod.update()
+                    prod.update(req.authname)
                     add_notice(req, _('Your changes have been saved.'))
                     req.redirect(req.href.admin(cat, page))
                 elif req.args.get('cancel'):
@@ -188,7 +188,7 @@ class ProductAdminPanel(TicketAdminPanel
     def _do_product_chown(self, prefix, owner):
         product = self.load_product(prefix)
         product._data['owner'] = owner
-        product.update()
+        product.update(getuser())
 
     def _do_product_list(self):
         if not isinstance(self.env, ProductEnvironment):
@@ -202,7 +202,7 @@ class ProductAdminPanel(TicketAdminPanel
     def _do_product_rename(self, prefix, newname):
         product = self.load_product(prefix)
         product._data['name'] = newname
-        product.update()
+        product.update(getuser())
 
 
 #--------------------------

Modified: bloodhound/trunk/bloodhound_multiproduct/multiproduct/web_ui.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/multiproduct/web_ui.py?rev=1556758&r1=1556757&r2=1556758&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/multiproduct/web_ui.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/multiproduct/web_ui.py Thu Jan  9 08:15:19 2014
@@ -161,7 +161,7 @@ class ProductModule(Component):
         def warn(msg):
             add_warning(req, msg)
             warnings.append(msg)
-        
+
         if product._exists:
             if name != product.name and Product.select(self.env, 
                                                        where={'name': name}):
@@ -172,7 +172,7 @@ class ProductModule(Component):
             else:
                 req.perm.require('PRODUCT_MODIFY')
                 product.update_field_dict(field_data)
-                product.update()
+                product.update(req.authname)
                 add_notice(req, _('Your changes have been saved.'))
         else:
             req.perm.require('PRODUCT_CREATE')

Modified: bloodhound/trunk/bloodhound_multiproduct/tests/functional/__init__.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/tests/functional/__init__.py?rev=1556758&r1=1556757&r2=1556758&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/tests/functional/__init__.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/tests/functional/__init__.py Thu Jan  9 08:15:19 2014
@@ -750,7 +750,7 @@ class BloodhoundFunctionalTester(Functio
             tc.formvalue('edit', 'description', desc)
         tc.submit()
         tc.find('The product "%s" has been added' % (prefix,))
-        return prefix
+        return prefix, name
 
     def go_to_dashboard(self):
         """Surf to the dashboard page."""

Modified: bloodhound/trunk/bloodhound_multiproduct/tests/functional/admin.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/tests/functional/admin.py?rev=1556758&r1=1556757&r2=1556758&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/tests/functional/admin.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/tests/functional/admin.py Thu Jan  9 08:15:19 2014
@@ -35,16 +35,16 @@ class TestAdminProductDefault(Multiprodu
                               FunctionalTwillTestCaseSetup):
     def runTest(self):
         """Admin set default product"""
-        name = self._tester.create_product()
+        prefix, name = self._tester.create_product()
         products_url = self._tester.url + '/admin/ticket/products'
         tc.go(products_url)
-        tc.formvalue('product_table', 'default', name)
+        tc.formvalue('product_table', 'default', prefix)
         tc.submit('apply')
         tc.find('type="radio" name="default" value="%s" checked="checked"'
-                % name)
+                % prefix)
         tc.go(self._tester.url + '/newticket')
         tc.find('<option selected="selected" value="%s">%s</option>'
-                % (name, name))
+                % (prefix, prefix))
         # Test the "Clear default" button
         tc.go(products_url)
         tc.submit('clear', 'product_table')

Modified: bloodhound/trunk/bloodhound_multiproduct/tests/functional/product.py
URL: http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_multiproduct/tests/functional/product.py?rev=1556758&r1=1556757&r2=1556758&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_multiproduct/tests/functional/product.py (original)
+++ bloodhound/trunk/bloodhound_multiproduct/tests/functional/product.py Thu Jan  9 08:15:19 2014
@@ -17,9 +17,13 @@
 #  specific language governing permissions and limitations
 #  under the License.
 
+from uuid import uuid4
+
 from trac.tests.functional import FunctionalTwillTestCaseSetup
 from trac.tests.functional.tester import tc
 
+from tests.functional import MultiproductFunctionalTestCase
+
 #----------------
 # Functional test cases for products
 #----------------
@@ -27,7 +31,7 @@ from trac.tests.functional.tester import
 class TestNewProduct(FunctionalTwillTestCaseSetup):
     def runTest(self):
         """Setup new product"""
-        prefix = self._tester.create_product()
+        prefix, name = self._tester.create_product()
         base_url = self._testenv.get_env_href(prefix=prefix)
         tc.url(base_url())
 
@@ -43,12 +47,41 @@ class TestNewProduct(FunctionalTwillTest
         tc.find('<a[^>]*>Index by Title')
 
 
+class TestProductRenameAuthor(MultiproductFunctionalTestCase, 
+                              FunctionalTwillTestCaseSetup):
+    def runTest(self):
+        """Check for correct author in ticket comments on product rename
+        https://issues.apache.org/bloodhound/ticket/671
+        """
+        prefix, name = self._tester.create_product()
+        with self.in_product(prefix) as (testenv, tester):
+            t1 = tester.create_ticket()
+            t2 = tester.create_ticket()
+        new_name = '%s%s' % (name, str(uuid4()).split('-')[0])
+
+        tc.go(self._tester.url + '/products')
+        tc.follow('.*/products/' + prefix + r'\?action=edit$')
+        tc.find('Edit Product')
+        tc.find(prefix)
+        tc.formvalue('edit', 'name', new_name)
+        tc.submit()
+        tc.find('Your changes have been saved')
+
+        with self.in_product(prefix) as (testenv, tester):
+            tester.go_to_ticket(t1)
+            comment = 'Product %s renamed to %s' % (name, new_name)
+            tc.find(comment)
+            tester.go_to_ticket(t2)
+            tc.find(comment)
+
+
 def functionalSuite(suite=None):
     if not suite:
         import tests.functional
         suite = tests.functional.functionalSuite()
 
     suite.addTest(TestNewProduct())
+    # suite.addTest(TestProductRenameAuthor())
     return suite
 
 if __name__ == '__main__':