diff bitten/tests/web_ui.py @ 629:f3bb52da9e3c

0.6dev: Adding support for attachments to configurations and build - full web implementation that mirrors what is available in Ticket and Wiki. Also added a new generic `<attach/>` command that enables attaching files to be part of a recipe and uploaded by slaves as part of build. Tests and updated documentation included. Closes #132.
author osimons
date Tue, 11 Aug 2009 22:47:55 +0000
parents 99831ab37fd3
children 29a5793c452a
line wrap: on
line diff
--- a/bitten/tests/web_ui.py
+++ b/bitten/tests/web_ui.py
@@ -97,6 +97,13 @@
         self.assertEqual('view_config', data['page_mode'])
         assert not 'next' in req.chrome['links']
 
+        from trac.resource import Resource
+        self.assertEquals(Resource('build', 'test'), data['context'].resource)
+
+        self.assertEquals([], data['config']['attachments']['attachments'])
+        self.assertEquals('/trac/attachment/build/test/',
+                                data['config']['attachments']['attach_href'])
+
     def test_view_config_paging(self):
         config = BuildConfig(self.env, name='test', path='trunk')
         config.insert()
@@ -144,6 +151,43 @@
 
 class BuildControllerTestCase(AbstractWebUITestCase):
 
+    def test_view_build(self):
+        config = BuildConfig(self.env, name='test', path='trunk')
+        config.insert()
+        platform = TargetPlatform(self.env, config='test', name='any')
+        platform.insert()
+        build = Build(self.env, config='test', platform=1, rev=123, rev_time=42,
+                      status=Build.SUCCESS, slave='hal')
+        build.insert()
+
+        PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW')
+        req = Mock(method='GET', base_path='', cgi_location='',
+                   path_info='/build/test/1', href=Href('/trac'), args={},
+                   chrome={}, authname='joe',
+                   perm=PermissionCache(self.env, 'joe'))
+
+        root = Mock(get_entries=lambda: ['foo'],
+                    get_history=lambda: [('trunk', rev, 'edit') for rev in
+                                          range(123, 111, -1)])
+        self.repos = Mock(get_node=lambda path, rev=None: root,
+                          sync=lambda: None,
+                          normalize_path=lambda path: path,
+                          get_changeset=lambda rev: Mock(author='joe'))
+        self.repos.authz = Mock(has_permission=lambda path: True, assert_permission=lambda path: None)
+
+        module = BuildController(self.env)
+        assert module.match_request(req)
+        _, data, _ = module.process_request(req)
+
+        self.assertEqual('view_build', data['page_mode'])
+
+        from trac.resource import Resource
+        self.assertEquals(Resource('build', 'test/1'), data['context'].resource)
+
+        self.assertEquals([], data['build']['attachments']['attachments'])
+        self.assertEquals('/trac/attachment/build/test/1/',
+                                data['build']['attachments']['attach_href'])
+
     def test_raise_404(self):
         PermissionSystem(self.env).grant_permission('joe', 'BUILD_VIEW')
         module = BuildController(self.env)
@@ -163,6 +207,7 @@
             return
         self.fail("This should have raised HTTPNotFound")
 
+
 class SourceFileLinkFormatterTestCase(AbstractWebUITestCase):
 
     def test_format_simple_link_in_repos(self):
Copyright (C) 2012-2017 Edgewall Software