Ejemplo n.º 1
0
class BacklogSwitcherTest(AgiloTestCase):
    def setUp(self):
        self.super()
        self.teh = TestEnvHelper(enable_agilo=False, env_key=self.env_key)
        self.env = self.teh.get_env()
        self.view = BacklogToggleConfigurationJSONView(self.env)
        self.assert_equals([], self.view.discover_backlogs())

    def tearDown(self):
        self.view.reset_known_backlogs()
        self.super()

    def call(self):
        return self.view.do_get(self.teh.mock_request(), None)

    def test_can_register_arbitrary_backlogs(self):
        self.view.register_backlog_with_identifier('fnord')
        self.assert_equals([
            'fnord',
        ], self.call())

    def test_has_special_method_for_all_known_backlogs(self):
        self.view.register_new_backlog()
        self.assert_equals(['new_backlog'], self.call())

        self.view.register_whiteboard()
        self.assert_equals(['new_backlog', 'whiteboard'], self.call())
Ejemplo n.º 2
0
class BacklogSwitcherTest(AgiloTestCase):
    def setUp(self):
        self.super()
        self.teh = TestEnvHelper(enable_agilo=False, env_key=self.env_key)
        self.env = self.teh.get_env()
        self.view = BacklogToggleConfigurationJSONView(self.env)
        self.assert_equals([], self.view.discover_backlogs())

    def tearDown(self):
        self.view.reset_known_backlogs()
        self.super()

    def call(self):
        return self.view.do_get(self.teh.mock_request(), None)

    def test_can_register_arbitrary_backlogs(self):
        self.view.register_backlog_with_identifier("fnord")
        self.assert_equals(["fnord"], self.call())

    def test_has_special_method_for_all_known_backlogs(self):
        self.view.register_new_backlog()
        self.assert_equals(["new_backlog"], self.call())

        self.view.register_whiteboard()
        self.assert_equals(["new_backlog", "whiteboard"], self.call())
Ejemplo n.º 3
0
    def runTest(self):
        # Create a sprint to generate twill panic on Mac
        env = self.testenv.get_trac_environment()
        teh = TestEnvHelper(env=env, env_key=self.env_key)
        teh.create_sprint("Panic Sprint1")
        teh.create_sprint("Panic Sprint2")
        # Now at least one sprint is there
        self.tester.login_as(Usernames.product_owner)
        st_id = self.tester.create_new_agilo_ticket(Type.USER_STORY,
                                                    "My Story")
        # Now login as team member and create an associated task to the story
        self.tester.login_as(Usernames.team_member)
        task_id = self.tester.create_referenced_ticket(st_id, Type.TASK,
                                                       "My Task")
        # Make sure no sprint has been set for this task

        task_page = self.tester.navigate_to_ticket_page(task_id)
        self.assertEqual('n.a.', task_page.sprint())

        # Now login as admin and edit the ticket
        self.tester.login_as(Usernames.admin)
        self.tester.go_to_view_ticket_page(task_id)
        tc.fv('propertyform', 'field-remaining_time', '12')
        tc.submit('submit')
        task_page = self.tester.navigate_to_ticket_page(task_id)
        self.assertEqual('12.0h', task_page.remaining_time())
        self.assertEqual('n.a.', task_page.sprint())

        # Now login as team member and become the owner of the ticket
        self.tester.login_as(Usernames.team_member)
        self.tester.go_to_view_ticket_page(task_id)
        tc.fv('propertyform', 'field-remaining_time', '8')
        tc.fv('propertyform', 'action', 'accept')
        tc.submit('submit')

        task_page = self.tester.navigate_to_ticket_page(task_id)
        self.assertEqual('8.0h', task_page.remaining_time())
        self.assertEqual('n.a.', task_page.sprint())
        self.assertEqual(Usernames.team_member, task_page.owner())

        # Now the admin should be able to edit the task again
        self.tester.login_as(Usernames.admin)
        self.tester.go_to_view_ticket_page(task_id)
        tc.fv('propertyform', 'field-remaining_time', '9')
        tc.submit('submit')
        task_page = self.tester.navigate_to_ticket_page(task_id)
        self.assertEqual('9.0h', task_page.remaining_time())
        self.assertEqual('n.a.', task_page.sprint())

        # The Scrum Master should also be able
        self.tester.login_as(Usernames.scrum_master)
        self.tester.go_to_view_ticket_page(task_id)
        tc.fv('propertyform', 'field-remaining_time', '10')
        tc.submit('submit')

        task_page = self.tester.navigate_to_ticket_page(task_id)
        self.assertEqual('10.0h', task_page.remaining_time())
        self.assertEqual('n.a.', task_page.sprint())
        self.assertEqual(Usernames.team_member, task_page.owner())
Ejemplo n.º 4
0
 def runTest(self):
     # Create a sprint to generate twill panic on Mac
     env = self.testenv.get_trac_environment()
     teh = TestEnvHelper(env=env, env_key=self.env_key)
     teh.create_sprint("Panic Sprint1")
     teh.create_sprint("Panic Sprint2")
     # Now at least one sprint is there
     self.tester.login_as(Usernames.product_owner)
     st_id = self.tester.create_new_agilo_ticket(Type.USER_STORY, "My Story")
     # Now login as team member and create an associated task to the story
     self.tester.login_as(Usernames.team_member)
     task_id = self.tester.create_referenced_ticket(st_id, Type.TASK, "My Task")
     # Make sure no sprint has been set for this task
     
     task_page = self.tester.navigate_to_ticket_page(task_id)
     self.assertEqual('n.a.', task_page.sprint())
     
     # Now login as admin and edit the ticket
     self.tester.login_as(Usernames.admin)
     self.tester.go_to_view_ticket_page(task_id)
     tc.fv('propertyform', 'field-remaining_time', '12')
     tc.submit('submit')
     task_page = self.tester.navigate_to_ticket_page(task_id)
     self.assertEqual('12.0h', task_page.remaining_time())
     self.assertEqual('n.a.', task_page.sprint())
     
     # Now login as team member and become the owner of the ticket
     self.tester.login_as(Usernames.team_member)
     self.tester.go_to_view_ticket_page(task_id)
     tc.fv('propertyform', 'field-remaining_time', '8')
     tc.fv('propertyform', 'action', 'accept')
     tc.submit('submit')
     
     task_page = self.tester.navigate_to_ticket_page(task_id)
     self.assertEqual('8.0h', task_page.remaining_time())
     self.assertEqual('n.a.', task_page.sprint())
     self.assertEqual(Usernames.team_member, task_page.owner())
     
     # Now the admin should be able to edit the task again
     self.tester.login_as(Usernames.admin)
     self.tester.go_to_view_ticket_page(task_id)
     tc.fv('propertyform', 'field-remaining_time', '9')
     tc.submit('submit')
     task_page = self.tester.navigate_to_ticket_page(task_id)
     self.assertEqual('9.0h', task_page.remaining_time())
     self.assertEqual('n.a.', task_page.sprint())
     
     # The Scrum Master should also be able
     self.tester.login_as(Usernames.scrum_master)
     self.tester.go_to_view_ticket_page(task_id)
     tc.fv('propertyform', 'field-remaining_time', '10')
     tc.submit('submit')
     
     task_page = self.tester.navigate_to_ticket_page(task_id)
     self.assertEqual('10.0h', task_page.remaining_time())
     self.assertEqual('n.a.', task_page.sprint())
     self.assertEqual(Usernames.team_member, task_page.owner())
Ejemplo n.º 5
0
 def runTest(self):
     """Runs performance tests qith 10, 100, 200 items in a Backlog"""
     # We need to build a real environment at least we will test
     # the IO
     self.teh = TestEnvHelper(env=self._testenv.get_trac_environment(),
                              env_key=self.env_key)
     self._test_global_backlog()
     self._test_sprint_backlog()
Ejemplo n.º 6
0
def _create_sprint_with_backlog(env, sprint_name, number_of_tickets):
    """Creates a set of requirements and Stories for the Demo project.
    If the delete option is set to True, it will also delete every
    existing ticket before starting to add the demo ones. If in the
    target environment there is no Team set, it will create some users
    and a demo team."""
    teh = TestEnvHelper(env)
    sprint = _create_sprint_with_team(teh, sprint_name)
    _create_sprint_backlog(teh, sprint, number_of_tickets)
Ejemplo n.º 7
0
 def test_do_not_raise_exception_on_edit_in_multienv_with_plain_trac(self):
     plain_trac_env = TestEnvHelper(enable_agilo=False, env_key=self.env_key).env
     # This situation happens due to monkey-patching: The plain trac 
     # environment needs to work with Agilo classes.
     milestone = AgiloMilestone(plain_trac_env)
     milestone.name = 'fnord'
     milestone.insert()
     
     # Must not raise an exception
     milestone.update()
Ejemplo n.º 8
0
    def test_agilo_with_parallel_environments(self):
        """
        Tests agilo in parallel with two different environment, one with and
        one without agilo
        """
        ac_agilo = AgiloConfig(self.env)
        ac_agilo.enable_agilo()
        env_no_agilo = TestEnvHelper(env_key=self.env_key)
        ac_no_agilo = AgiloConfig(env_no_agilo.get_env())
        ac_no_agilo.disable_agilo()
        # Now we have two environment in the same python VM
        agilo_ticket = self.teh.create_ticket(Type.TASK,
                                              props={Key.REMAINING_TIME: '2'})
        self.assert_true(isinstance(agilo_ticket, AgiloTicket),
                         "Got the wrong type: %s" % type(agilo_ticket))
        non_agilo_ticket = env_no_agilo.create_ticket(
            Type.TASK, props={Key.REMAINING_TIME: '2'})

        self.assert_true(hasattr(agilo_ticket, '_calculated'))
        self.assert_false(hasattr(non_agilo_ticket, '_calculated'))
Ejemplo n.º 9
0
 def test_agilo_with_parallel_environments(self):
     """
     Tests agilo in parallel with two different environment, one with and
     one without agilo
     """
     ac_agilo = AgiloConfig(self.env)
     ac_agilo.enable_agilo()
     env_no_agilo = TestEnvHelper(env_key=self.env_key)
     ac_no_agilo = AgiloConfig(env_no_agilo.get_env())
     ac_no_agilo.disable_agilo()
     # Now we have two environment in the same python VM
     agilo_ticket = self.teh.create_ticket(Type.TASK,
                                           props={Key.REMAINING_TIME: '2'})
     self.assert_true(isinstance(agilo_ticket, AgiloTicket), 
                     "Got the wrong type: %s" % type(agilo_ticket))
     non_agilo_ticket = env_no_agilo.create_ticket(Type.TASK,
                                                   props={Key.REMAINING_TIME: '2'})
     
     self.assert_true(hasattr(agilo_ticket, '_calculated'))
     self.assert_false(hasattr(non_agilo_ticket, '_calculated'))
Ejemplo n.º 10
0
    def runTest(self):
        self._tester.login_as(Usernames.team_member)
        trac_env = self.testenv.get_trac_environment()
        teh = TestEnvHelper(trac_env, env_key=self.env_key)
        project_dir = self.testenv.dirname

        task_id = self.create_task(teh)
        rev = self.work_on_task(task_id, teh)
        AgiloSVNPostCommit(project=project_dir, rev=rev,
                           env=trac_env).execute()

        ticket_page = self.tester.navigate_to_ticket_page(task_id)
        self.assertEqual('1.5h', ticket_page.remaining_time())
Ejemplo n.º 11
0
def _create_demo_data(env, delete):
    """Creates a set of requirements and Stories for the Demo project.
    If the delete option is set to True, it will also delete every
    existing ticket before starting to add the demo ones. If in the
    target environment there is no Team set, it will create some users
    and a demo team."""
    teh = TestEnvHelper(env)

    if delete:
        teh.delete_all_milestones()
        teh.delete_all_sprints()
        teh.delete_all_tickets()
        delete_burndown_data_change(env)

    # Now check if there is at least one team
    team = _check_or_create_team(teh)

    # create milestone and sprints, and assign it to the team
    # Remember that this sprint started 3 days ago
    sprint = _create_sprint(teh, team)

    # create a Product Backlog
    stories = _create_product_backlog(teh, sprint)
    _create_sprint_backlog(teh, stories, sprint)
Ejemplo n.º 12
0
 def close_sprint(self):
     self._tester.login_as(Usernames.scrum_master)
     env = self._testenv.get_trac_environment()
     teh = TestEnvHelper(env=env, env_key=self.env_key)
     team = teh.create_team('A-Team')
     tm = teh.create_member(name="TeamMember", team=team)
     self._create_sprint('TestSprintClose', team=team.name)
     self._create_sprint('TestSprintClose2', team=team.name)
     # create a ticket
     ticket = teh.create_ticket(Type.TASK, props={Key.SPRINT: 'TestSprintClose',
                                                  Key.OWNER: tm.name})
     self.assertEqual(ticket[Key.SPRINT], 'TestSprintClose')
     
     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')
     
     # Closes Testsprint with retarget to Testsprint2
     _close_sprint('TestSprintClose', 'TestSprintClose2')
     # and the ticket now has a new sprint
     ticket = teh.load_ticket(ticket=ticket)
     self.assertEqual(ticket[Key.SPRINT], 'TestSprintClose2')
     # Check that retargeted ticket show who did the retargeting
     self._tester.go_to_view_ticket_page(ticket.id)
     tc.notfind('ago.* by anonymous')
     tc.find('ago.* by %s' % Usernames.scrum_master)
     
     # Delete Testsprint with retarget to Testsprint2
     _close_sprint('TestSprintClose2')
Ejemplo n.º 13
0
def _create_demo_data(env, delete):
    """Creates a set of requirements and Stories for the Demo project.
    If the delete option is set to True, it will also delete every
    existing ticket before starting to add the demo ones. If in the
    target environment there is no Team set, it will create some users
    and a demo team."""
    teh = TestEnvHelper(env)
    
    if delete:
        teh.delete_all_milestones()
        teh.delete_all_sprints()
        teh.delete_all_tickets()
        delete_burndown_data_change(env)
    
    # Now check if there is at least one team
    team = _check_or_create_team(teh)
    
    # create milestone and sprints, and assign it to the team
    # Remember that this sprint started 3 days ago
    sprint = _create_sprint(teh, team)
    
    # create a Product Backlog
    stories = _create_product_backlog(teh, sprint)
    _create_sprint_backlog(teh, stories, sprint)
Ejemplo n.º 14
0
 def setUp(self):
     self.super()
     self.teh = TestEnvHelper(enable_agilo=False, env_key=self.env_key)
     self.env = self.teh.get_env()
     self.view = BacklogToggleConfigurationJSONView(self.env)
     self.assert_equals([], self.view.discover_backlogs())
Ejemplo n.º 15
0
 def setUp(self):
     self.super()
     self.teh = TestEnvHelper(enable_agilo=False, env_key=self.env_key)
     self.env = self.teh.get_env()
     self.view = BacklogToggleConfigurationJSONView(self.env)
     self.assert_equals([], self.view.discover_backlogs())