Example #1
0
 def runTest(self):
     team_name = 'team_for_capacity_saving'
     member_name = 'Team member_name'
     sprint_name = 'capacity_saving_sprint'
     
     self._tester.login_as(Usernames.admin)
     self._tester.create_new_team(team_name)
     self._tester.add_member_to_team(team_name, member_name)
     sprint_start = now()
     self._tester.create_sprint_via_admin(sprint_name, start=sprint_start, team=team_name)
     
     # having tasks with remaining time which were not assigned to a specific
     # user triggered another bug on the team page.
     attributes = dict(sprint=sprint_name, remaining_time='12')
     self._tester.create_new_agilo_task('Not assigned Task', **attributes)
     
     self._tester.login_as(Usernames.scrum_master)
     self._tester.go_to_team_page(team_name, sprint_name)
     team_page_url = tc.get_browser().get_url()
     
     day_ordinal = (sprint_start + timedelta(days=3)).toordinal()
     input_name = 'ts_%s_%d' % (member_name, day_ordinal)
     tc.formvalue('team_capacity_form', input_name, '2')
     tc.submit('save')
     tc.code(200)
     tc.url(team_page_url)
Example #2
0
 def runTest(self):
     """Test for regression of http://trac.edgewall.org/ticket/11186 alias
     TracError should be raised when repository alias with name already
     exists
     """
     self._tester.go_to_admin()
     tc.follow("\\bRepositories\\b")
     tc.url(self._tester.url + '/admin/versioncontrol/repository')
     word = random_word()
     target = '%s_repos' % word
     name = '%s_alias' % word
     tc.formvalue('trac-addrepos', 'name', target)
     tc.formvalue('trac-addrepos', 'dir', '/var/svn/%s' % target)
     tc.submit()
     # Jinja2 tc.find('The repository "%s" has been added.' % target)
     tc.find('The repository "%s" has been added.' % target)
     tc.formvalue('trac-addalias', 'name', name)
     tc.formvalue('trac-addalias', 'alias', target)
     tc.submit()
     # Jinja2 tc.find('The alias "%s" has been added.' % name)
     tc.find('The alias "%s" has been added.' % name)
     tc.formvalue('trac-addalias', 'name', name)
     tc.formvalue('trac-addalias', 'alias', target)
     tc.submit()
     tc.find('The alias "%s" already exists.' % name)
     tc.notfind(internal_error)
Example #3
0
 def runTest(self):
     self._tester.login_as(Usernames.admin)
     # get page for editing requirement ticket type
     page_url = self._tester.url + '/admin/agilo/types/requirement'
     tc.go(page_url)
     tc.url(page_url)
     tc.code(200)
     tc.find('requirement')
     tc.find('Alias:')
     
     # test default field
     tc.find('name="fields" value="businessvalue" checked="checked"')
     
     # change alias and fields and save
     tc.formvalue('modcomp', 'fields', '+priority')
     tc.formvalue('modcomp', 'fields', '-businessvalue')
     tc.formvalue('modcomp', 'fields', '-milestone')
     tc.formvalue('modcomp', 'fields', '-keywords')
     tc.submit('save')
     
     # redirects to list page, now only the priority should be selected
     tc.find('<td class="fields">[\n ]*Priority<br />[\n ]*</td>')
     
     tc.go(page_url)
     # We must ensure that these fields are available for later tests.
     tc.formvalue('modcomp', 'fields', '+businessvalue')
     tc.formvalue('modcomp', 'fields', '+milestone')
     tc.submit('save')
Example #4
0
    def runTest(self):
        """Admin rename milestone"""
        name1 = self._tester.create_milestone()
        name2 = random_unique_camel()
        tid = self._tester.create_ticket(info={'milestone': name1})
        milestone_url = self._tester.url + '/admin/ticket/milestones'

        self._tester.go_to_url(milestone_url)
        tc.follow(name1)
        tc.url(milestone_url + '/' + name1)
        tc.formvalue('edit', 'name', name2)
        tc.submit('save')

        tc.find(r"Your changes have been saved\.")
        tc.find(r"\b%s\b" % name2)
        tc.notfind(r"\b%s\b" % name1)
        self._tester.go_to_ticket(tid)
        tc.find('<a class="milestone" href="/milestone/%(name)s" '
                'title="No date set">%(name)s</a>' % {'name': name2})
        tc.find('<th class="trac-field-milestone">Milestone:</th>[ \t\n]+'
                '<td>[ \t\n]+<span class="trac-field-old">%s</span>'
                '[ \t\n]+→[ \t\n]+'
                '<span class="trac-field-new">%s</span>[ \t\n]+</td>' %
                (name1, name2))
        tc.find("Milestone renamed")
Example #5
0
 def _test_adding_a_backlog(self, page_url, backlog_name):
     tc.go(page_url)
     tc.url(page_url)
     tc.fv('addbacklog', 'name', backlog_name)
     tc.submit('add')
     # we're at the edit page
     backlog_url = page_url + '/' + backlog_name
     tc.url(backlog_url)
Example #6
0
 def runTest(self):
     self._tester.login_as(Usernames.team_member)
     page_url = self._tester.url + TEAM_URL
     tc.go(page_url)
     tc.url(page_url)
     tc.code(200)
     tc.follow('Team#1')
     tc.code(200)
     tc.find('Member#1')
Example #7
0
 def runTest(self):
     """Admin remove version"""
     name = "VersionRemove"
     self._tester.create_version(name)
     version_url = self._tester.url + "/admin/ticket/versions"
     tc.go(version_url)
     tc.formvalue('version_table', 'sel', name)
     tc.submit('remove')
     tc.url(version_url + '$')
     tc.notfind(name)
Example #8
0
 def runTest(self):
     """Admin remove version"""
     name = "VersionRemove"
     self._tester.create_version(name)
     version_url = self._tester.url + "/admin/ticket/versions"
     tc.go(version_url)
     tc.formvalue('version_table', 'sel', name)
     tc.submit('remove')
     tc.url(version_url + '$')
     tc.notfind(name)
Example #9
0
    def runTest(self):
        """Admin remove version"""
        name = self._testenv.add_version()
        self._tester.go_to_url('/admin/ticket/versions')

        tc.find(name)
        tc.formvalue('version_table', 'sel', name)
        tc.submit('remove')
        tc.url(self._tester.url + "/admin/ticket/versions", regexp=False)
        tc.notfind(name)
Example #10
0
 def runTest(self):
     """Admin remove priority"""
     name = self._testenv.add_priority()
     self._tester.go_to_url('/admin/ticket/priority')
     tc.find(name)
     tc.formvalue('enumtable', 'sel', name)
     tc.submit('remove')
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.url(priority_url, regexp=False)
     tc.notfind(name)
Example #11
0
 def runTest(self):
     """Admin milestone completed"""
     name = self._testenv.add_milestone()
     milestone_url = self._tester.url + "/admin/ticket/milestones"
     self._tester.go_to_url(milestone_url)
     tc.follow(name)
     tc.url(milestone_url + '/' + name, regexp=False)
     tc.formvalue('edit', 'completed', True)
     tc.submit('save')
     tc.url(milestone_url, regexp=False)
Example #12
0
 def runTest(self):
     """Admin badly renumber priorities"""
     # Make the first priority the 2nd priority, and leave the 2nd priority
     # as the 2nd priority.
     priority_url = self._tester.url + '/admin/ticket/priority'
     self._tester.go_to_url(priority_url)
     tc.formvalue('enumtable', 'value_1', '2')
     tc.submit('apply')
     tc.url(priority_url + '#', regexp=False)
     tc.find('Order numbers must be unique')
Example #13
0
    def runTest(self):
        """Admin milestone listing."""
        name1 = self._tester.create_milestone()
        self._tester.create_ticket(info={'milestone': name1})
        name2 = self._tester.create_milestone()

        milestone_url = self._tester.url + '/admin/ticket/milestones'
        tc.go(milestone_url)
        tc.url(milestone_url)
        tc.find(r'<a href="/admin/ticket/milestones/%(name)s">%(name)s</a>' %
                {'name': name1})
        m1_query_link = r'<a href="/query\?group=status&amp;' \
                        r'milestone=%(name)s">1</a>' % {'name': name1}
        tc.find(m1_query_link)
        tc.find(r'<a href="/admin/ticket/milestones/%(name)s">%(name)s</a>' %
                {'name': name2})
        tc.notfind(r'<a href="/query\?group=status&amp;milestone=%(name)s">'
                   r'0</a>' % {'name': name2})

        apply_submit = '<input type="submit" name="apply" ' \
                       'value="Apply changes" />'
        clear_submit = '<input type="submit"[ \t\n]+title="Clear default ' \
                       'ticket milestone and default retargeting milestone"' \
                       '[ \t\n]+name="clear" value="Clear defaults" />'
        tc.find(apply_submit)
        tc.find(clear_submit)
        tc.find(
            '<input type="radio" name="ticket_default" value="%(name)s"/>' %
            {'name': name1})
        tc.find(
            '<input type="radio" name="retarget_default" value="%(name)s"/>' %
            {'name': name1})

        # TICKET_ADMIN is required to change the ticket default and retarget
        # default configuration options. TICKET_VIEW is required for the
        # milestone tickets query link to be present.
        try:
            self._testenv.grant_perm('user', 'MILESTONE_ADMIN')
            self._testenv.revoke_perm('anonymous', 'TICKET_VIEW')
            self._tester.go_to_front()
            self._tester.logout()
            self._tester.login('user')
            tc.go(milestone_url)
            tc.notfind(apply_submit)
            tc.notfind(clear_submit)
            tc.find('<input type="radio" name="ticket_default" '
                    'disabled="disabled" value="%(name)s"/>' % {'name': name1})
            tc.find('<input type="radio" name="retarget_default" '
                    'disabled="disabled" value="%(name)s"/>' % {'name': name1})
            tc.notfind(m1_query_link)
        finally:
            self._testenv.revoke_perm('user', 'MILESTONE_ADMIN')
            self._testenv.grant_perm('anonymous', 'TICKET_VIEW')
            self._tester.logout()
            self._tester.login('admin')
Example #14
0
 def runTest(self):
     """Admin create duplicate version"""
     name = "DuplicateVersion"
     self._tester.create_version(name)
     version_admin = self._tester.url + "/admin/ticket/versions"
     tc.go(version_admin)
     tc.url(version_admin)
     tc.formvalue('addversion', 'name', name)
     tc.submit()
     tc.notfind(internal_error)
     tc.find(escape('Version "%s" already exists.' % name))
Example #15
0
 def runTest(self):
     """Admin badly renumber priorities"""
     # Make the first priority the 2nd priority, and leave the 2nd priority
     # as the 2nd priority.
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.go(priority_url)
     tc.url(priority_url + '$')
     tc.formvalue('enumtable', 'value_1', '2')
     tc.submit('apply')
     tc.url(priority_url + '$')
     tc.find('Order numbers must be unique')
Example #16
0
    def runTest(self):
        """Admin create milestone"""
        name = self._tester.create_milestone()

        # Make sure it's on the roadmap.
        tc.follow(r"\bRoadmap\b")
        tc.url(self._tester.url + '/roadmap', regexp=False)
        tc.find("Milestone:.*%s" % name)
        tc.follow(r"\b%s\b" % name)
        tc.url(self._tester.url + '/milestone/' + name, regexp=False)
        tc.find('No date set')
Example #17
0
 def runTest(self):
     """Admin modify priority"""
     name = self._testenv.add_priority()
     self._tester.go_to_url('/admin/ticket/priority')
     tc.find(name)
     tc.follow(name)
     tc.formvalue('edit', 'name', name * 2)
     tc.submit('save')
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.url(priority_url, regexp=False)
     tc.find(name * 2)
Example #18
0
 def runTest(self):
     """Admin component detail"""
     name = self._testenv.add_component()
     self._tester.go_to_url('/admin/ticket/components')
     tc.follow(name)
     desc = 'Some component description'
     tc.formvalue('edit', 'description', desc)
     tc.submit('cancel')
     tc.url(self._tester.url + '/admin/ticket/components', regexp=False)
     tc.follow(name)
     tc.notfind(desc)
Example #19
0
 def runTest(self):
     """Admin create duplicate version"""
     name = "DuplicateVersion"
     self._tester.create_version(name)
     version_admin = self._tester.url + "/admin/ticket/versions"
     tc.go(version_admin)
     tc.url(version_admin)
     tc.formvalue('addversion', 'name', name)
     tc.submit()
     tc.notfind(internal_error)
     tc.find('Version "%s" already exists.' % name)
Example #20
0
 def runTest(self):
     """Admin remove priority"""
     name = "RemovePriority"
     self._tester.create_priority(name)
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.go(priority_url)
     tc.url(priority_url + '$')
     tc.find(name)
     tc.formvalue('enumtable', 'sel', name)
     tc.submit('remove')
     tc.url(priority_url + '$')
     tc.notfind(name)
Example #21
0
 def runTest(self):
     """Admin remove priority"""
     name = "RemovePriority"
     self._tester.create_priority(name)
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.go(priority_url)
     tc.url(priority_url + '$')
     tc.find(name)
     tc.formvalue('enumtable', 'sel', name)
     tc.submit('remove')
     tc.url(priority_url + '$')
     tc.notfind(name)
Example #22
0
 def runTest(self):
     """Check empty repository"""
     browser_url = self._tester.url + '/browser'
     tc.go(browser_url)
     tc.url(browser_url)
     # This tests the current behavior; I'm not sure it's the best
     # behavior.
     tc.follow('Last Change')
     tc.find('Error: No such changeset')
     tc.back()
     tc.follow('Revision Log')
     tc.notfind('Error: Nonexistent path')
Example #23
0
 def runTest(self):
     """Check empty repository"""
     browser_url = self._tester.url + "/browser"
     tc.go(browser_url)
     tc.url(browser_url)
     # This tests the current behavior; I'm not sure it's the best
     # behavior.
     tc.follow("Last Change")
     tc.find("Error: No such changeset")
     tc.back()
     tc.follow("Revision Log")
     tc.notfind("Error: Nonexistent path")
Example #24
0
    def runTest(self):
        """Admin version details"""
        name = self._testenv.add_version()
        self._tester.go_to_url('/admin/ticket/versions')
        tc.follow(name)

        desc = 'Some other version description.'
        tc.formvalue('edit', 'description', desc)
        tc.submit('cancel')
        tc.url(self._tester.url + "/admin/ticket/versions", regexp=False)
        tc.follow(name)
        tc.notfind(desc)
Example #25
0
 def runTest(self):
     """Admin component detail"""
     name = "DetailComponent"
     self._tester.create_component(name)
     component_url = self._tester.url + "/admin/ticket/components"
     tc.go(component_url)
     tc.follow(name)
     desc = 'Some component description'
     tc.formvalue('edit', 'description', desc)
     tc.submit('cancel')
     tc.url(component_url + '$')
     tc.follow(name)
     tc.notfind(desc)
Example #26
0
 def runTest(self):
     """Test for regression of http://trac.edgewall.org/ticket/11438
     fix for log: link with revision ranges included "head" keyword
     """
     rev = self._testenv.svn_mkdir(['ticket11438'], '')
     rev = self._testenv.svn_add('ticket11438/file1.txt', '')
     rev = self._testenv.svn_add('ticket11438/file2.txt', '')
     tc.go(self._tester.url + '/intertrac/log:@%d:head' % (rev - 1))
     tc.url(self._tester.url + r'/log/\?revs=' + str(rev - 1) + '-head')
     tc.notfind('@%d' % (rev + 1))
     tc.find('@%d' % rev)
     tc.find('@%d' % (rev - 1))
     tc.notfind('@%d' % (rev - 2))
Example #27
0
 def runTest(self):
     """Test for regression of http://trac.edgewall.org/ticket/11438
     fix for log: link with revision ranges included "head" keyword
     """
     rev = self._testenv.svn_mkdir(['ticket11438'], '')
     rev = self._testenv.svn_add('ticket11438/file1.txt', '')
     rev = self._testenv.svn_add('ticket11438/file2.txt', '')
     tc.go(self._tester.url + '/intertrac/log:@%d:head' % (rev - 1))
     tc.url(self._tester.url + r'/log/\?revs=' + str(rev - 1) + '-head')
     tc.notfind('@%d' % (rev + 1))
     tc.find('@%d' % rev)
     tc.find('@%d' % (rev - 1))
     tc.notfind('@%d' % (rev - 2))
Example #28
0
 def runTest(self):
     """Test for regression of http://trac.edgewall.org/ticket/11438
     fix for log: link with revision ranges included "head" keyword
     """
     rev = self._testenv.svn_mkdir(["ticket11438"], "")
     rev = self._testenv.svn_add("ticket11438/file1.txt", "")
     rev = self._testenv.svn_add("ticket11438/file2.txt", "")
     tc.go(self._tester.url + "/intertrac/log:@%d:head" % (rev - 1))
     tc.url(self._tester.url + r"/log/\?revs=" + str(rev - 1) + "-head")
     tc.notfind("@%d" % (rev + 1))
     tc.find("@%d" % rev)
     tc.find("@%d" % (rev - 1))
     tc.notfind("@%d" % (rev - 2))
Example #29
0
 def runTest(self):
     """Admin create duplicate milestone"""
     name = "DuplicateMilestone"
     self._tester.create_milestone(name)
     milestone_url = self._tester.url + "/admin/ticket/milestones"
     tc.go(milestone_url)
     tc.url(milestone_url)
     tc.formvalue('addmilestone', 'name', name)
     tc.submit()
     tc.notfind(internal_error)
     tc.find('Milestone "%s" already exists, please choose '
             'another name.' % name)
     tc.notfind('%s')
Example #30
0
 def runTest(self):
     """Admin create duplicate milestone"""
     name = "DuplicateMilestone"
     self._tester.create_milestone(name)
     milestone_url = self._tester.url + "/admin/ticket/milestones"
     tc.go(milestone_url)
     tc.url(milestone_url)
     tc.formvalue('addmilestone', 'name', name)
     tc.submit()
     tc.notfind(internal_error)
     tc.find('Milestone "%s" already exists, please choose '
             'another name.' % name)
     tc.notfind('%s')
Example #31
0
 def runTest(self):
     """Admin modify priority"""
     name = "ModifyPriority"
     self._tester.create_priority(name)
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.go(priority_url)
     tc.url(priority_url + '$')
     tc.find(name)
     tc.follow(name)
     tc.formvalue('edit', 'name', name * 2)
     tc.submit('save')
     tc.url(priority_url + '$')
     tc.find(name * 2)
Example #32
0
 def runTest(self):
     """Admin modify priority"""
     name = "ModifyPriority"
     self._tester.create_priority(name)
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.go(priority_url)
     tc.url(priority_url + '$')
     tc.find(name)
     tc.follow(name)
     tc.formvalue('edit', 'name', name * 2)
     tc.submit('save')
     tc.url(priority_url + '$')
     tc.find(name * 2)
Example #33
0
 def runTest(self):
     """Admin component detail"""
     name = "DetailComponent"
     self._tester.create_component(name)
     component_url = self._tester.url + "/admin/ticket/components"
     tc.go(component_url)
     tc.follow(name)
     desc = 'Some component description'
     tc.formvalue('edit', 'description', desc)
     tc.submit('cancel')
     tc.url(component_url + '$')
     tc.follow(name)
     tc.notfind(desc)
 def runTest(self):
     self._tester.login_as(Usernames.admin)
     
     self._tester.delete_custom_field('remaining_time', 'Remaining Time')
     
     # add the field again
     tc.formvalue('addcf', 'name', 'remaining_time')
     # don't put a value in label field, test empty value
     tc.submit('add')
     tc.code(200)
     tc.url(self._tester.url + '/admin/agilo/fields')
     
     # redirects to list page, now link with default label
     # should be found again
     tc.find('<td><a href="/admin/agilo/fields/remaining_time">remaining_time')
     tc.find('<td>Remaining_time</td>', 'm')
     last = self._get_number_of_custom_fields()
     self._assert_field_has_number('remaining_time', last)
     
     self._tester.modify_custom_field('remaining_time', label='Linking Source')
     # see if the new label is found        
     tc.find('<td>Linking Source</td>')
     
     # add another field
     tc.formvalue('addcf', 'name', 'testfield')
     tc.formvalue('addcf', 'label', 'Test Field')
     tc.submit('add')
     # see if the new label is found        
     tc.find('<td><a href="/admin/agilo/fields/testfield">testfield')
     tc.find('<td>Test Field</td>')
     tc.code(200)
     # set order of fields
     last = self._get_number_of_custom_fields()
     # There are 7 standard fields, so these new ones should be 7 and 8.
     ord1 = str(last - 1)
     ord2 = str(last)
     # check the actual position of the two custom fields
     self._assert_field_has_number('remaining_time', ord1)
     self._assert_field_has_number('testfield', ord2)
     
     # Change the order
     tc.formvalue('customfields', 'order_testfield', ord1)
     tc.formvalue('customfields', 'order_remaining_time', ord2)
     tc.submit('apply')
     
     # has the order been changed? This regex finds the order select field
     # for testfield and the selected option -> should be 8
     tc.find('<select name="order_remaining_time">(</*option>|\s|\d)*' \
             '<option selected="selected">\s*' + ord2, 'm')
     tc.find('<select name="order_testfield">(</*option>|\s|\d)*' \
             '<option selected="selected">\s*' + ord1, 'm')
Example #35
0
    def runTest(self):
        """Admin modify priority details"""
        name = "DetailPriority"
        # Create a priority
        self._tester.create_priority(name + '1')

        # Modify the details of the priority
        priority_url = self._tester.url + "/admin/ticket/priority"
        tc.go(priority_url)
        tc.url(priority_url + '$')
        tc.follow(name + '1')
        tc.url(priority_url + '/' + name + '1')
        tc.formvalue('edit', 'name', name + '2')
        tc.submit('save')
        tc.url(priority_url + '$')

        # Cancel more modifications
        tc.go(priority_url)
        tc.follow(name)
        tc.formvalue('edit', 'name', name + '3')
        tc.submit('cancel')
        tc.url(priority_url + '$')

        # Verify that only the correct modifications show up
        tc.notfind(name + '1')
        tc.find(name + '2')
        tc.notfind(name + '3')
Example #36
0
    def runTest(self):
        """Test for regression of http://trac.edgewall.org/ticket/11355
        Save with no changes should redirect back to the repository listing.
        """
        # Add a repository
        self._tester.go_to_admin("Repositories")
        name = random_unique_camel()
        dir = os.path.join(tempfile.gettempdir(), name.lower())
        tc.formvalue("trac-addrepos", "name", name)
        tc.formvalue("trac-addrepos", "dir", dir)
        tc.submit("add_repos")
        tc.find('The repository "%s" has been added.' % name)

        # Save unmodified form and redirect back to listing page
        tc.follow(r"\b%s\b" % name)
        tc.url(self._tester.url + "/admin/versioncontrol/repository/" + name)
        tc.submit("save", formname="edit")
        tc.url(self._tester.url + "/admin/versioncontrol/repository")
        tc.find("Your changes have been saved.")

        # Warning is added when repository dir is not an absolute path
        tc.follow(r"\b%s\b" % name)
        tc.url(self._tester.url + "/admin/versioncontrol/repository/" + name)
        tc.formvalue("edit", "dir", os.path.basename(dir))
        tc.submit("save")
        tc.url(self._tester.url + "/admin/versioncontrol/repository/" + name)
        tc.find("The repository directory must be an absolute path.")
Example #37
0
    def runTest(self):
        """Test for regression of http://trac.edgewall.org/ticket/11194
        TracError should be raised when repository with name already exists
        """
        self._tester.go_to_admin()
        tc.follow("\\bRepositories\\b")
        tc.url(self._tester.url + "/admin/versioncontrol/repository")

        word = random_word()
        names = ["%s_%d" % (word, n) for n in xrange(3)]
        tc.formvalue("trac-addrepos", "name", names[0])
        tc.formvalue("trac-addrepos", "dir", "/var/svn/%s" % names[0])
        tc.submit()
        tc.notfind(internal_error)

        tc.formvalue("trac-addrepos", "name", names[1])
        tc.formvalue("trac-addrepos", "dir", "/var/svn/%s" % names[1])
        tc.submit()
        tc.notfind(internal_error)

        tc.follow("\\b" + names[1] + "\\b")
        tc.url(self._tester.url + "/admin/versioncontrol/repository/" + names[1])
        tc.formvalue("edit", "name", names[2])
        tc.submit("save")
        tc.notfind(internal_error)
        tc.url(self._tester.url + "/admin/versioncontrol/repository")

        tc.follow("\\b" + names[2] + "\\b")
        tc.url(self._tester.url + "/admin/versioncontrol/repository/" + names[2])
        tc.formvalue("edit", "name", names[0])
        tc.submit("save")
        tc.find('The repository "%s" already exists.' % names[0])
        tc.notfind(internal_error)
Example #38
0
    def runTest(self):
        """Test for regression of http://trac.edgewall.org/ticket/11355
        Save with no changes should redirect back to the repository listing.
        """
        # Add a repository
        self._tester.go_to_admin("Repositories")
        name = random_unique_camel()
        dir = os.path.join(tempfile.gettempdir(), name.lower())
        tc.formvalue('trac-addrepos', 'name', name)
        tc.formvalue('trac-addrepos', 'dir', dir)
        tc.submit('add_repos')
        tc.find('The repository "%s" has been added.' % name)

        # Save unmodified form and redirect back to listing page
        tc.follow(r"\b%s\b" % name)
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' + name)
        tc.submit('save', formname='edit')
        tc.url(self._tester.url + '/admin/versioncontrol/repository')
        tc.find("Your changes have been saved.")

        # Warning is added when repository dir is not an absolute path
        tc.follow(r"\b%s\b" % name)
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' + name)
        tc.formvalue('edit', 'dir', os.path.basename(dir))
        tc.submit('save')
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' + name)
        tc.find('The repository directory must be an absolute path.')
Example #39
0
    def runTest(self):
        """Admin version detail set time"""
        name = "DetailTimeVersion"
        self._tester.create_version(name)
        version_admin = self._tester.url + "/admin/ticket/versions"
        tc.go(version_admin)
        tc.url(version_admin)
        tc.follow(name)

        tc.formvalue('edit', 'time', '')
        tc.submit('save')
        tc.url(version_admin + '$')
        tc.find(name + '(<[^>]*>|\\s)*<[^>]* name="default" value="%s"' % name,
                's')
Example #40
0
    def runTest(self):
        """Admin modify priority details"""
        name = "DetailPriority"
        # Create a priority
        self._tester.create_priority(name + '1')

        # Modify the details of the priority
        priority_url = self._tester.url + "/admin/ticket/priority"
        tc.go(priority_url)
        tc.url(priority_url + '$')
        tc.follow(name + '1')
        tc.url(priority_url + '/' + name + '1')
        tc.formvalue('edit', 'name', name + '2')
        tc.submit('save')
        tc.url(priority_url + '$')

        # Cancel more modifications
        tc.go(priority_url)
        tc.follow(name)
        tc.formvalue('edit', 'name', name + '3')
        tc.submit('cancel')
        tc.url(priority_url + '$')

        # Verify that only the correct modifications show up
        tc.notfind(name + '1')
        tc.find(name + '2')
        tc.notfind(name + '3')
Example #41
0
    def runTest(self):
        """Admin version detail set time"""
        name = "DetailTimeVersion"
        self._tester.create_version(name)
        version_admin = self._tester.url + "/admin/ticket/versions"
        tc.go(version_admin)
        tc.url(version_admin)
        tc.follow(name)

        tc.formvalue('edit', 'time', '')
        tc.submit('save')
        tc.url(version_admin + '$')
        tc.find(name + '(<[^>]*>|\\s)*<[^>]* name="default" value="%s"'
                % name, 's')
Example #42
0
    def runTest(self):
        """Test for regression of http://trac.edgewall.org/ticket/11194
        TracError should be raised when repository with name already exists
        """
        self._tester.go_to_admin()
        tc.follow("\\bRepositories\\b")
        tc.url(self._tester.url + '/admin/versioncontrol/repository')

        word = random_word()
        names = ['%s_%d' % (word, n) for n in xrange(3)]
        tc.formvalue('trac-addrepos', 'name', names[0])
        tc.formvalue('trac-addrepos', 'dir', '/var/svn/%s' % names[0])
        tc.submit()
        tc.notfind(internal_error)

        tc.formvalue('trac-addrepos', 'name', names[1])
        tc.formvalue('trac-addrepos', 'dir', '/var/svn/%s' % names[1])
        tc.submit()
        tc.notfind(internal_error)

        tc.follow('\\b' + names[1] + '\\b')
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' +
               names[1])
        tc.formvalue('edit', 'name', names[2])
        tc.submit('save')
        tc.notfind(internal_error)
        tc.url(self._tester.url + '/admin/versioncontrol/repository')

        tc.follow('\\b' + names[2] + '\\b')
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' +
               names[2])
        tc.formvalue('edit', 'name', names[0])
        tc.submit('save')
        tc.find('The repository "%s" already exists.' % names[0])
        tc.notfind(internal_error)
Example #43
0
    def runTest(self):
        """Test for regression of http://trac.edgewall.org/ticket/11194
        TracError should be raised when repository with name already exists
        """
        self._tester.go_to_admin()
        tc.follow("\\bRepositories\\b")
        tc.url(self._tester.url + '/admin/versioncontrol/repository')

        word = random_word()
        names = ['%s_%d' % (word, n) for n in xrange(3)]
        tc.formvalue('trac-addrepos', 'name', names[0])
        tc.formvalue('trac-addrepos', 'dir', '/var/svn/%s' % names[0])
        tc.submit()
        tc.notfind(internal_error)

        tc.formvalue('trac-addrepos', 'name', names[1])
        tc.formvalue('trac-addrepos', 'dir', '/var/svn/%s' % names[1])
        tc.submit()
        tc.notfind(internal_error)

        tc.follow('\\b' + names[1] + '\\b')
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' + names[1])
        tc.formvalue('trac-modrepos', 'name', names[2])
        tc.submit('save')
        tc.notfind(internal_error)
        tc.url(self._tester.url + '/admin/versioncontrol/repository')

        tc.follow('\\b' + names[2] + '\\b')
        tc.url(self._tester.url + '/admin/versioncontrol/repository/' + names[2])
        tc.formvalue('trac-modrepos', 'name', names[0])
        tc.submit('save')
        tc.find('The repository "%s" already exists.' % names[0])
        tc.notfind(internal_error)
Example #44
0
    def runTest(self):
        name = self._testenv.add_milestone()
        tid1 = self._tester.create_ticket(info={'milestone': name})
        tc.click('#propertyform .collapsed .foldable a')
        tc.formvalue('propertyform', 'action', 'resolve')
        tc.formvalue('propertyform', 'action_resolve_resolve_resolution',
                     'fixed')
        tc.submit('submit')

        # Check that hint is shown when there are no open tickets to retarget
        milestone_url = self._tester.url + "/admin/ticket/milestones/" + name
        self._tester.go_to_url(milestone_url)
        tc.find("There are no open tickets associated with this milestone.")

        retarget_to = self._testenv.add_milestone()

        # Check that open tickets retargeted, closed not retargeted
        tid2 = self._tester.create_ticket(info={'milestone': name})
        self._tester.go_to_url(milestone_url)
        completed = format_datetime(datetime_now(tz=utc) -
                                    datetime.timedelta(hours=1),
                                    tzinfo=localtz,
                                    locale=locale_en)
        tc.formvalue('edit', 'completed', True)
        tc.formvalue('edit', 'completeddate', completed)
        tc.formvalue('edit', 'target', retarget_to)
        tc.submit('save')

        tc.url(self._tester.url + '/admin/ticket/milestones')
        tc.find('The open tickets associated with milestone "%s" '
                'have been retargeted to milestone "%s".' %
                (name, retarget_to))
        tc.find("Completed")

        # Closed ticket will not be retargeted.
        self._tester.go_to_ticket(tid1)
        tc.find('<a class="closed milestone" href="/milestone/%(name)s" '
                'title="Completed .+ ago (.+)">%(name)s</a>' % {'name': name})
        tc.notfind('changed from <em>%s</em> to <em>%s</em>' %
                   (name, retarget_to))
        tc.notfind("Ticket retargeted after milestone closed")
        # Open ticket will be retargeted.
        self._tester.go_to_ticket(tid2)
        tc.find('<a class="milestone" href="/milestone/%(name)s" '
                'title="No date set">%(name)s</a>' % {'name': retarget_to})
        tc.find('<span class="trac-field-old">%s</span>'
                '[ \n]+→[ \n]+'
                '<span class="trac-field-new">%s</span>' % (name, retarget_to))
        tc.find("Ticket retargeted after milestone closed")
Example #45
0
    def runTest(self):
        """Admin version details"""
        name = "DetailVersion"
        self._tester.create_version(name)
        version_admin = self._tester.url + "/admin/ticket/versions"
        tc.go(version_admin)
        tc.url(version_admin)
        tc.follow(name)

        desc = 'Some other version description.'
        tc.formvalue('edit', 'description', desc)
        tc.submit('cancel')
        tc.url(version_admin)
        tc.follow(name)
        tc.notfind(desc)
Example #46
0
    def runTest(self):
        """Admin version details"""
        name = "DetailVersion"
        self._tester.create_version(name)
        version_admin = self._tester.url + "/admin/ticket/versions"
        tc.go(version_admin)
        tc.url(version_admin)
        tc.follow(name)

        desc = 'Some other version description.'
        tc.formvalue('edit', 'description', desc)
        tc.submit('cancel')
        tc.url(version_admin)
        tc.follow(name)
        tc.notfind(desc)
Example #47
0
 def runTest(self):
     """Admin remove multiple versions"""
     name = []
     count = 3
     for i in range(count):
         name.append(self._testenv.add_version())
     self._tester.go_to_url('/admin/ticket/versions')
     for i in range(count):
         tc.find(name[i])
     for i in range(count):
         tc.formvalue('version_table', 'sel', name[i])
     tc.submit('remove')
     tc.url(self._tester.url + '/admin/ticket/versions', regexp=False)
     for i in range(count):
         tc.notfind(name[i])
Example #48
0
 def runTest(self):
     self._tester.login_as(Usernames.admin)
     # Create the milestone first
     self._tester.create_milestone('milestone2')
     
     # get sprint listing, should be empty
     page_url = self._tester.url + '/admin/agilo/sprints'
     tc.go(page_url)
     tc.url(page_url)
     tc.code(200)
     
     # add new sprint
     sprint_start = normalize_date(now())
     sprint_name = 'Test sprint'
     tc.formvalue('addsprint', 'name', sprint_name)
     tc.formvalue('addsprint', 'start', format_datetime(sprint_start, format='iso8601'))
     tc.formvalue('addsprint', 'duration', '1')
     tc.formvalue('addsprint', 'milestone', 'milestone2')
     tc.submit('add')
     # add redirects to list view, new sprint should be in there
     tc.find(sprint_name)
     # go to detail page
     tc.go("%s/%s" % (page_url, quote(sprint_name)))
     # see if milestone is set correctly
     tc.find('<option selected="selected">\s*milestone2')
     
     # test setting end date, not duration
     tc.formvalue('modcomp', 'description', '[http://www.example.com]')
     tomorrow = sprint_start + timedelta(days=1)
     tc.formvalue('modcomp', 'end', format_datetime(tomorrow, format='iso8601'))
     tc.formvalue('modcomp', 'duration', '')
     tc.submit('save')
     tc.url(page_url)
     
     # duration of the new sprint should be 2
     tc.find('"duration">2</td>')
     
     # --- test invalid values when adding sprint ---
     # no values, should redirect to list view
     tc.formvalue('addsprint', 'name', '')
     tc.submit('add')
     tc.url(page_url)
     
     # invalid date, should throw an error
     tc.formvalue('addsprint', 'name', 'Testsprint 2')
     tc.formvalue('addsprint', 'start', '2008 May 13')
     tc.formvalue('addsprint', 'duration', '1')
     tc.submit('add')
     tc.find('Error: Invalid Date')
     
     # no end date or duration
     tc.go(page_url)
     tc.formvalue('addsprint', 'name', 'Testsprint 2')
     yesterday = now() - timedelta(days=3)
     tc.formvalue('addsprint', 'start', 
                  format_datetime(yesterday, format='iso8601'))
     tc.submit('add')
     tc.url(page_url)
Example #49
0
 def runTest(self):
     # First login as team member, there should be no Requirement but the task
     self._tester.login_as(Usernames.team_member)
     tc.go('/newticket?type=task')
     tc.url(r'(.+)(/newticket\?type=task)')
     error_msg = 'Requirement should not be allowed for team members!'
     self.assertNotFindItem('field-type', 'Requirement', error_msg)
     tc.fv('propertyform', 'field-type', 'Task')
     
     # Now login as PO and the Requirement should be there, but the task not
     self._tester.login_as(Usernames.product_owner)
     tc.go('/newticket?type=requirement')
     tc.url(r'(.+)(/newticket\?type=requirement)')
     error_msg = 'Task should not be allowed for product owner!'
     self.assertNotFindItem('field-type', 'Task', error_msg)
     tc.fv('propertyform', 'field-type', 'Requirement')
Example #50
0
 def runTest(self):
     """Admin remove multiple priorities"""
     name = "MultiRemovePriority"
     count = 3
     for i in range(count):
         self._tester.create_priority("%s%s" % (name, i))
     priority_url = self._tester.url + '/admin/ticket/priority'
     tc.go(priority_url)
     tc.url(priority_url + '$')
     for i in range(count):
         tc.find("%s%s" % (name, i))
     for i in range(count):
         tc.formvalue('enumtable', 'sel', "%s%s" % (name, i))
     tc.submit('remove')
     tc.url(priority_url + '$')
     for i in range(count):
         tc.notfind("%s%s" % (name, i))
Example #51
0
    def runTest(self):
        """Render reStructured text using a wikiprocessor"""
        pagename = self._tester.create_wiki_page(content="""
{{{
#!rst
Hello
=====

.. trac:: wiki:WikiStart Some Link
}}}
                                     """)
        self._tester.go_to_wiki(pagename)
        tc.find("Some Link")
        tc.find(r'<h1[^>]*>Hello')
        tc.notfind("wiki:WikiStart")
        tc.follow("Some Link")
        tc.url(self._tester.url + "/wiki/WikiStart")
Example #52
0
 def runTest(self):
     """Admin remove multiple milestones"""
     name = "MultiRemoveMilestone"
     count = 3
     for i in range(count):
         self._tester.create_milestone("%s%s" % (name, i))
     milestone_url = self._tester.url + '/admin/ticket/milestones'
     tc.go(milestone_url)
     tc.url(milestone_url + '$')
     for i in range(count):
         tc.find("%s%s" % (name, i))
     for i in range(count):
         tc.formvalue('milestone_table', 'sel', "%s%s" % (name, i))
     tc.submit('remove')
     tc.url(milestone_url + '$')
     for i in range(count):
         tc.notfind("%s%s" % (name, i))
Example #53
0
 def runTest(self):
     """Admin remove multiple versions"""
     name = "MultiRemoveVersion"
     count = 3
     for i in range(count):
         self._tester.create_version("%s%s" % (name, i))
     version_url = self._tester.url + '/admin/ticket/versions'
     tc.go(version_url)
     tc.url(version_url + '$')
     for i in range(count):
         tc.find("%s%s" % (name, i))
     for i in range(count):
         tc.formvalue('version_table', 'sel', "%s%s" % (name, i))
     tc.submit('remove')
     tc.url(version_url + '$')
     for i in range(count):
         tc.notfind("%s%s" % (name, i))
Example #54
0
 def _close_sprint(name, retarget=None):
     page_url = '%s/%s' % (SPRINT_URL, name)
     confirm_url = '%s/%s/confirm' % (SPRINT_URL, name)
     tc.go(page_url)
     tc.fv('confirmform', 'close', 'click')
     tc.submit()
     # show confirmation form
     tc.url(confirm_url)
     if retarget is not None:
         # should show that one ticket can be retargeted
         tc.find('Retarget the \d+ remaining tickets to sprint')
         tc.fv('confirmform', 'retarget', retarget)
     tc.fv('confirmform', 'sure', 'click')
     tc.submit('sure')
     
     # we're back at the roadmap
     tc.url('/roadmap')
Example #55
0
 def runTest(self):
     """Test for regression of http://trac.edgewall.org/ticket/11186
     TracError should be raised when repository with name already exists
     """
     self._tester.go_to_admin()
     tc.follow("\\bRepositories\\b")
     tc.url(self._tester.url + "/admin/versioncontrol/repository")
     name = random_word()
     tc.formvalue("trac-addrepos", "name", name)
     tc.formvalue("trac-addrepos", "dir", "/var/svn/%s" % name)
     tc.submit()
     tc.find('The repository "%s" has been added.' % name)
     tc.formvalue("trac-addrepos", "name", name)
     tc.formvalue("trac-addrepos", "dir", "/var/svn/%s" % name)
     tc.submit()
     tc.find('The repository "%s" already exists.' % name)
     tc.notfind(internal_error)
Example #56
0
 def _delete_sprint(name, retarget=None, tickets=0):
     page_url = '%s/%s' % (SPRINT_URL, name)
     confirm_url = '%s/%s/confirm' % (SPRINT_URL, name)
     tc.go(page_url)
     tc.fv('confirmform', 'delete', 'click')
     tc.submit()
     # show confirmation form
     tc.url(confirm_url)
     if retarget is not None:
         # should show that some tickets can be re-targeted
         tc.find('Retarget the %s remaining tickets to sprint' % tickets)
         tc.fv('confirmform', 'retarget', retarget)
     tc.fv('confirmform', 'sure', 'click')
     tc.submit('sure')
     # we're back at the roadmap
     tc.code(200)
     tc.url('/roadmap')