Ejemplo n.º 1
0
    def testGetBacklogCommand(self):
        """Tests the GetBacklogCommand"""
        # test with a non existing backlog
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='NotExisting')
        self.assert_raises(BacklogTypeError, self.controller.process_command,
                           get_backlog)

        # now create a backlog and test it
        backlog = self.teh.create_backlog('RealOne', num_of_items=10)
        self.assert_true(backlog.exists)
        self.assert_length(10, backlog)

        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='RealOne')
        real_one = self.controller.process_command(get_backlog)
        self.assert_not_none(real_one)
        self.assert_true(real_one.exists)
        self.assert_length(10, real_one)
        # now try with a Sprint Backlog
        sprint = self.teh.create_sprint('MySprint')
        backlog = self.teh.create_backlog('MySprintBacklog',
                                          num_of_items=10,
                                          b_type=1,
                                          scope=sprint.name)
        self.assert_true(backlog.exists)
        items_count = len(backlog)
        get_backlog = BacklogController.GetBacklogCommand(
            self.env, name='MySprintBacklog', scope='MySprint')
        sprint_backlog = self.controller.process_command(get_backlog)
        self.assert_not_none(sprint_backlog)
        self.assert_true(sprint_backlog.exists)
        self.assert_length(items_count, sprint_backlog)
Ejemplo n.º 2
0
 def _get_backlog(self, req, name, scope=None, reload=True, filter_by=None):
     """Retrieve the Backlog with the given name and scope, and sets it as
     default in the session of the user"""
     cmd_get_backlog = \
         BacklogController.GetBacklogCommand(self.env, name=name,
                             scope=scope, reload=reload, filter_by=filter_by)
     backlog = BacklogController(self.env).process_command(cmd_get_backlog)
     SessionScope(req).set_scope(scope, backlog.config.type)
     return backlog
Ejemplo n.º 3
0
 def setUp(self):
     self.super()
     
     self.backlog_name = "JumpingTickets"
     self.backlog = self.teh.create_backlog_without_tickets(name=self.backlog_name, type=BacklogType.GLOBAL, 
         ticket_types=[Type.REQUIREMENT, Type.USER_STORY])
     self.requirement = self.teh.create_ticket(Type.REQUIREMENT, {Key.SUMMARY: 'req1', Key.MILESTONE: 'milestone1'})
     self.story = self.teh.create_ticket(Type.USER_STORY, {Key.SUMMARY: 'story'})
     self.requirement.link_to(self.story) # always pulls requiremnt into the global backlog
     BacklogController.set_ticket_positions(self.env, name=self.backlog_name, scope=BacklogType.GLOBAL, 
         positions=[self.requirement.id, self.story.id])
Ejemplo n.º 4
0
 def do_post(self, req, data):
     name = req.args.get(Key.NAME)
     scope = req.args.get(Key.SCOPE)
     # These should be in the JSON posted data.
     ticket = int(data.get(Key.TICKET))
     to_pos = int(data.get(Key.TO_POS))
     cmd_move = BacklogController.MoveBacklogItemCommand(self.env,
                                                         name=name,
                                                         scope=scope,
                                                         ticket=ticket,
                                                         to_pos=to_pos)
     return BacklogController(self.env).process_command(cmd_move)
Ejemplo n.º 5
0
    def send_backlog_list_data(self, req, data):
        """add to the data array the backlog data necessary to show
        the backlog list"""
        def milestone_options(milestones, selected):
            """
            Return three lists of tuple (milestone_name, selected) for
            the milestones which are:
                - Open with a due date
                - Open without a due date
                - Closed
            """
            open_with_due_date = list()
            open_without_due_date = list()
            closed = list()
            for m in milestones:
                m_list = None
                if m.is_completed:
                    m_list = closed
                elif m.due:
                    m_list = open_with_due_date
                else:
                    m_list = open_without_due_date
                # append the milestone to the list
                m_list.append((m.name, m.name == selected))

            return open_with_due_date, open_without_due_date, closed

        # Maximum items in the pulldown, ordered by status and by time
        # The number is the maximum per status, so 5 closed, 5 running
        # and 5 to start
        MAX_ITEMS = 5

        milestone_list = None
        if data is not None and Action.BACKLOG_VIEW in req.perm:
            data['sprint_list'] = self.running_to_start_closed_sprints(req)
            cmd_list = BacklogController.ListBacklogsCommand(self.env)
            data['backlog_list'] = \
                BacklogController(self.env).process_command(cmd_list)
            s_milestone = SessionScope(req).milestone_name()
            open_due, open, closed = \
                milestone_options(AgiloMilestone.select(self.env), s_milestone)
            milestone_list = [{
                Key.LABEL: _('Open (by Due Date)'),
                Key.OPTIONS: open_due
            }, {
                Key.LABEL: _('Open (no Due Date)'),
                Key.OPTIONS: open
            }, {
                Key.LABEL: _('Closed'),
                Key.OPTIONS: closed[-MAX_ITEMS:]
            }]
            data['milestone_list'] = milestone_list
Ejemplo n.º 6
0
 def testGetBacklogListCommand(self):
     """Tests that the BacklogModule returns the list of Backlogs configured"""
     cmd_list = BacklogController.ListBacklogsCommand(self.env)
     blist = self.controller.process_command(cmd_list)
     self.assert_length(2, blist)  # Only Product Backlog and Sprint Backlog
     # the list is returned ordered by type and than by name
     self.assert_equals(Key.PRODUCT_BACKLOG, blist[0][Key.NAME])
     self.assert_equals(Key.SPRINT_BACKLOG, blist[1][Key.NAME])
Ejemplo n.º 7
0
 def __init__(self, env, **kwargs):
     template_filename = kwargs.get('template_filename') or 'scrum/backlog/templates/agilo_burndown_chart.html'
     self._define_chart_resources(env, template_filename, kwargs)
     kwargs['scripts'] = ('agilo/js/burndown.js',)
     self.super(env, template_filename, **kwargs)
     self.t_controller = TeamController(self.env)
     self.sp_controller = SprintController(self.env)
     self.b_controller = BacklogController(self.env)
     self.burndown_data = dict()
Ejemplo n.º 8
0
 def testMoveBacklogItemCommand(self):
     """Test the moving of a backlog item in the backlog"""
     backlog = self.teh.create_backlog('MovingBacklog', num_of_items=20)
     first_item = backlog[0]
     # create a moving command and move the first item to the 5th
     # poistion in the backlog
     fifth_item = backlog[4]
     move_cmd = BacklogController.MoveBacklogItemCommand(
         self.env, name='MovingBacklog', ticket=first_item, to_pos=4)
     self.controller.process_command(move_cmd)
     # we need to reload the backlog from the DB
     get_reload_cmd = BacklogController.GetBacklogCommand(
         self.env, name='MovingBacklog')
     backlog = self.controller.process_command(get_reload_cmd)
     self.assert_equals(backlog[4].ticket, first_item.ticket)
     self.assert_equals(backlog[3].ticket, fifth_item.ticket)
     self.assert_equals(4, backlog[4].pos)
     self.assert_equals(3, backlog[3].pos)
Ejemplo n.º 9
0
    def testCreateBacklogCommand(self):
        """Test the creation of a Backlog with various parameters"""
        create_cmd = BacklogController.CreateBacklogCommand(self.env,
                                                            name='TestBacklog')
        backlog = self.controller.process_command(create_cmd)
        self.assert_not_none(backlog)
        self.assert_true(backlog.exists)

        # Try to create a backlog that already exist
        backlog = self.controller.process_command(create_cmd)
        self.assert_none(backlog)
Ejemplo n.º 10
0
    def setUp(self):
        self.super()

        self.backlog_name = "JumpingTickets"
        self.backlog = self.teh.create_backlog_without_tickets(
            name=self.backlog_name,
            type=BacklogType.GLOBAL,
            ticket_types=[Type.REQUIREMENT, Type.USER_STORY])
        self.requirement = self.teh.create_ticket(Type.REQUIREMENT, {
            Key.SUMMARY: 'req1',
            Key.MILESTONE: 'milestone1'
        })
        self.story = self.teh.create_ticket(Type.USER_STORY,
                                            {Key.SUMMARY: 'story'})
        self.requirement.link_to(
            self.story)  # always pulls requiremnt into the global backlog
        BacklogController.set_ticket_positions(
            self.env,
            name=self.backlog_name,
            scope=BacklogType.GLOBAL,
            positions=[self.requirement.id, self.story.id])
Ejemplo n.º 11
0
class BacklogRendererHonorsTicketPriority(AgiloFunctionalTestCase):
    testtype = 'twill'
    
    def setUp(self):
        self.super()
        self.tester.login_as(Usernames.admin)
        self.controller = BacklogController(self.env)
        self.backlog = self.teh.create_backlog('Product Backlog', num_of_items=20)

    def runTest(self):
        first_item = self.backlog[0]
        second_item = self.backlog[1]
        self.tester.go_to_product_backlog()
        tc.find("id=\"ticketID-%s\".*id=\"ticketID-%s\"" % (first_item.ticket.id, second_item.ticket.id))
        
        move_cmd = BacklogController.MoveBacklogItemCommand(self.env,
                                                            name='Product Backlog',
                                                            ticket=first_item,
                                                            to_pos=4)
        self.controller.process_command(move_cmd)
        self.tester.go_to_product_backlog()
        tc.find("id=\"ticketID-%s\".*id=\"ticketID-%s\"" % (second_item.ticket.id, first_item.ticket.id))
Ejemplo n.º 12
0
    def runTest(self):
        first_item = self.backlog[0]
        second_item = self.backlog[1]
        self.tester.go_to_product_backlog()
        tc.find("id=\"ticketID-%s\".*id=\"ticketID-%s\"" %
                (first_item.ticket.id, second_item.ticket.id))

        move_cmd = BacklogController.MoveBacklogItemCommand(
            self.env, name='Product Backlog', ticket=first_item, to_pos=4)
        self.controller.process_command(move_cmd)
        self.tester.go_to_product_backlog()
        tc.find("id=\"ticketID-%s\".*id=\"ticketID-%s\"" %
                (second_item.ticket.id, first_item.ticket.id))
Ejemplo n.º 13
0
 def testSaveBacklogCommand(self):
     """Tests the saving backlog command"""
     sprint = self.teh.create_sprint('MyChaningSprint')
     backlog = self.teh.create_backlog(
         'ChangingBacklog',
         ticket_types=[Type.USER_STORY, Type.TASK],
         b_type=BacklogType.SPRINT,
         scope=sprint.name,
         num_of_items=20)
     self.assert_length(20, backlog)
     # now remove some of the items and save
     backlog.remove(backlog[0])
     backlog.remove(backlog[1])
     self.assert_length(18, backlog)
     # now save it and reload it
     cmd_save_backlog = BacklogController.SaveBacklogCommand(
         self.env, name='ChangingBacklog', scope=sprint.name)
     self.controller.process_command(cmd_save_backlog)
     # now reload the backlog and check the two items have been removed
     cmd_get_backlog = BacklogController.GetBacklogCommand(
         self.env, name='ChangingBacklog', scope=sprint.name)
     backlog = self.controller.process_command(cmd_get_backlog)
     self.assert_length(18, backlog)
Ejemplo n.º 14
0
class BacklogRendererHonorsTicketPriority(AgiloFunctionalTestCase):
    testtype = 'twill'

    def setUp(self):
        self.super()
        self.tester.login_as(Usernames.admin)
        self.controller = BacklogController(self.env)
        self.backlog = self.teh.create_backlog('Product Backlog',
                                               num_of_items=20)

    def runTest(self):
        first_item = self.backlog[0]
        second_item = self.backlog[1]
        self.tester.go_to_product_backlog()
        tc.find("id=\"ticketID-%s\".*id=\"ticketID-%s\"" %
                (first_item.ticket.id, second_item.ticket.id))

        move_cmd = BacklogController.MoveBacklogItemCommand(
            self.env, name='Product Backlog', ticket=first_item, to_pos=4)
        self.controller.process_command(move_cmd)
        self.tester.go_to_product_backlog()
        tc.find("id=\"ticketID-%s\".*id=\"ticketID-%s\"" %
                (second_item.ticket.id, first_item.ticket.id))
Ejemplo n.º 15
0
    def testCanMoveItemsInGlobalBacklogByHandingInTickets(self):
        backlog = self.get(name='Product Backlog', scope=None)
        requirement = self.teh.create_ticket(Type.REQUIREMENT)
        backlog.add(requirement)
        backlog.add(self.teh.create_ticket(Type.REQUIREMENT))
        backlog.add(self.teh.create_ticket(Type.REQUIREMENT))
        backlog.save()

        first_item = backlog[0]
        # cleaning out the cache, because if this where a new request, the cache would be empty and this would throw
        move = BacklogController.MoveBacklogItemCommand(self.env,
                                                        name='Product Backlog',
                                                        ticket=first_item,
                                                        to_pos=2)
        self.controller.process_command(move)
        index = backlog.index(first_item)
        self.assert_equals(2, index)
        self.assert_equals(2, backlog[index].pos)
        self.assert_equals(first_item, backlog[index].ticket)
Ejemplo n.º 16
0
class BacklogControllerTest(AgiloTestCase):
    """Tests the Backlog Controller"""
    def setUp(self):
        """Loads a Backlog Controller"""
        self.super()
        self.controller = BacklogController(self.env)

    def get(self, name, scope):
        """Send a get Command to get a Backlog with the given name and scope"""
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name=name,
                                                          scope=scope)
        return self.controller.process_command(get_backlog)

    def testGetBacklogCommand(self):
        """Tests the GetBacklogCommand"""
        # test with a non existing backlog
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='NotExisting')
        self.assert_raises(BacklogTypeError, self.controller.process_command,
                           get_backlog)

        # now create a backlog and test it
        backlog = self.teh.create_backlog('RealOne', num_of_items=10)
        self.assert_true(backlog.exists)
        self.assert_length(10, backlog)

        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='RealOne')
        real_one = self.controller.process_command(get_backlog)
        self.assert_not_none(real_one)
        self.assert_true(real_one.exists)
        self.assert_length(10, real_one)
        # now try with a Sprint Backlog
        sprint = self.teh.create_sprint('MySprint')
        backlog = self.teh.create_backlog('MySprintBacklog',
                                          num_of_items=10,
                                          b_type=1,
                                          scope=sprint.name)
        self.assert_true(backlog.exists)
        items_count = len(backlog)
        get_backlog = BacklogController.GetBacklogCommand(
            self.env, name='MySprintBacklog', scope='MySprint')
        sprint_backlog = self.controller.process_command(get_backlog)
        self.assert_not_none(sprint_backlog)
        self.assert_true(sprint_backlog.exists)
        self.assert_length(items_count, sprint_backlog)

    def testCreateBacklogCommand(self):
        """Test the creation of a Backlog with various parameters"""
        create_cmd = BacklogController.CreateBacklogCommand(self.env,
                                                            name='TestBacklog')
        backlog = self.controller.process_command(create_cmd)
        self.assert_not_none(backlog)
        self.assert_true(backlog.exists)

        # Try to create a backlog that already exist
        backlog = self.controller.process_command(create_cmd)
        self.assert_none(backlog)

    def testMoveBacklogItemCommand(self):
        """Test the moving of a backlog item in the backlog"""
        backlog = self.teh.create_backlog('MovingBacklog', num_of_items=20)
        first_item = backlog[0]
        # create a moving command and move the first item to the 5th
        # poistion in the backlog
        fifth_item = backlog[4]
        move_cmd = BacklogController.MoveBacklogItemCommand(
            self.env, name='MovingBacklog', ticket=first_item, to_pos=4)
        self.controller.process_command(move_cmd)
        # we need to reload the backlog from the DB
        get_reload_cmd = BacklogController.GetBacklogCommand(
            self.env, name='MovingBacklog')
        backlog = self.controller.process_command(get_reload_cmd)
        self.assert_equals(backlog[4].ticket, first_item.ticket)
        self.assert_equals(backlog[3].ticket, fifth_item.ticket)
        self.assert_equals(4, backlog[4].pos)
        self.assert_equals(3, backlog[3].pos)

    def testCanMoveItemsInGlobalBacklogByHandingInTickets(self):
        backlog = self.get(name='Product Backlog', scope=None)
        requirement = self.teh.create_ticket(Type.REQUIREMENT)
        backlog.add(requirement)
        backlog.add(self.teh.create_ticket(Type.REQUIREMENT))
        backlog.add(self.teh.create_ticket(Type.REQUIREMENT))
        backlog.save()

        first_item = backlog[0]
        # cleaning out the cache, because if this where a new request, the cache would be empty and this would throw
        move = BacklogController.MoveBacklogItemCommand(self.env,
                                                        name='Product Backlog',
                                                        ticket=first_item,
                                                        to_pos=2)
        self.controller.process_command(move)
        index = backlog.index(first_item)
        self.assert_equals(2, index)
        self.assert_equals(2, backlog[index].pos)
        self.assert_equals(first_item, backlog[index].ticket)

    # FIXME (AT): the save command is not really needed, it should be more focused on the
    # BacklogConfiguration, from the moment it does only safe those parameters, as the
    # scope is not persisted. This is in contradiction with the BacklogModelManager itself
    def testSaveBacklogCommand(self):
        """Tests the saving backlog command"""
        sprint = self.teh.create_sprint('MyChaningSprint')
        backlog = self.teh.create_backlog(
            'ChangingBacklog',
            ticket_types=[Type.USER_STORY, Type.TASK],
            b_type=BacklogType.SPRINT,
            scope=sprint.name,
            num_of_items=20)
        self.assert_length(20, backlog)
        # now remove some of the items and save
        backlog.remove(backlog[0])
        backlog.remove(backlog[1])
        self.assert_length(18, backlog)
        # now save it and reload it
        cmd_save_backlog = BacklogController.SaveBacklogCommand(
            self.env, name='ChangingBacklog', scope=sprint.name)
        self.controller.process_command(cmd_save_backlog)
        # now reload the backlog and check the two items have been removed
        cmd_get_backlog = BacklogController.GetBacklogCommand(
            self.env, name='ChangingBacklog', scope=sprint.name)
        backlog = self.controller.process_command(cmd_get_backlog)
        self.assert_length(18, backlog)

    def testGetBacklogListCommand(self):
        """Tests that the BacklogModule returns the list of Backlogs configured"""
        cmd_list = BacklogController.ListBacklogsCommand(self.env)
        blist = self.controller.process_command(cmd_list)
        self.assert_length(2, blist)  # Only Product Backlog and Sprint Backlog
        # the list is returned ordered by type and than by name
        self.assert_equals(Key.PRODUCT_BACKLOG, blist[0][Key.NAME])
        self.assert_equals(Key.SPRINT_BACKLOG, blist[1][Key.NAME])
Ejemplo n.º 17
0
 def _set_ticket_positions(self, name, scope, positions):
     BacklogController.set_ticket_positions(self.env, name=name, scope=scope, positions=positions)
Ejemplo n.º 18
0
 def _get_backlogs(self):
     select_cmd = BacklogController.ListBacklogsCommand(self.env)
     return BacklogController(self.env).process_command(select_cmd)
Ejemplo n.º 19
0
 def setUp(self):
     self.super()
     self.tester.login_as(Usernames.admin)
     self.controller = BacklogController(self.env)
     self.backlog = self.teh.create_backlog('Product Backlog',
                                            num_of_items=20)
Ejemplo n.º 20
0
 def _set_ticket_positions(self, name, scope, positions):
     BacklogController.set_ticket_positions(self.env,
                                            name=name,
                                            scope=scope,
                                            positions=positions)
Ejemplo n.º 21
0
 def _get_backlog(self, name, scope):
     cmd_get = BacklogController.GetBacklogCommand(self.env,
                                                   name=name,
                                                   scope=scope)
     backlog = BacklogController(self.env).process_command(cmd_get)
     return backlog
Ejemplo n.º 22
0
 def setUp(self):
     self.super()
     self.tester.login_as(Usernames.admin)
     self.controller = BacklogController(self.env)
     self.backlog = self.teh.create_backlog('Product Backlog', num_of_items=20)
Ejemplo n.º 23
0
class BacklogControllerTest(AgiloTestCase):
    """Tests the Backlog Controller"""
    
    def setUp(self):
        """Loads a Backlog Controller"""
        self.super()
        self.controller = BacklogController(self.env)

    def get(self, name, scope):
        """Send a get Command to get a Backlog with the given name and scope"""
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name=name,
                                                          scope=scope)
        return self.controller.process_command(get_backlog)

    def testGetBacklogCommand(self):
        """Tests the GetBacklogCommand"""
        # test with a non existing backlog
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='NotExisting')
        self.assert_raises(BacklogTypeError, self.controller.process_command, get_backlog)

        # now create a backlog and test it
        backlog = self.teh.create_backlog('RealOne', num_of_items=10)
        self.assert_true(backlog.exists)
        self.assert_length(10, backlog)
        
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='RealOne')
        real_one = self.controller.process_command(get_backlog)
        self.assert_not_none(real_one)
        self.assert_true(real_one.exists)
        self.assert_length(10, real_one)
        # now try with a Sprint Backlog
        sprint = self.teh.create_sprint('MySprint')
        backlog = self.teh.create_backlog('MySprintBacklog', 
                                          num_of_items=10, 
                                          b_type=1, 
                                          scope=sprint.name)
        self.assert_true(backlog.exists)
        items_count = len(backlog)
        get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                          name='MySprintBacklog',
                                                          scope='MySprint')
        sprint_backlog = self.controller.process_command(get_backlog)
        self.assert_not_none(sprint_backlog)
        self.assert_true(sprint_backlog.exists)
        self.assert_length(items_count, sprint_backlog)
        
    def testCreateBacklogCommand(self):
        """Test the creation of a Backlog with various parameters"""
        create_cmd = BacklogController.CreateBacklogCommand(self.env,
                                                            name='TestBacklog')
        backlog = self.controller.process_command(create_cmd)
        self.assert_not_none(backlog)
        self.assert_true(backlog.exists)
        
        # Try to create a backlog that already exist
        backlog = self.controller.process_command(create_cmd)
        self.assert_none(backlog)
        
    def testMoveBacklogItemCommand(self):
        """Test the moving of a backlog item in the backlog"""
        backlog = self.teh.create_backlog('MovingBacklog', num_of_items=20)
        first_item = backlog[0]
        # create a moving command and move the first item to the 5th
        # poistion in the backlog
        fifth_item = backlog[4]
        move_cmd = BacklogController.MoveBacklogItemCommand(self.env,
                                                            name='MovingBacklog',
                                                            ticket=first_item,
                                                            to_pos=4)
        self.controller.process_command(move_cmd)
        # we need to reload the backlog from the DB
        get_reload_cmd = BacklogController.GetBacklogCommand(self.env,
                                                             name='MovingBacklog')
        backlog = self.controller.process_command(get_reload_cmd)
        self.assert_equals(backlog[4].ticket, first_item.ticket)
        self.assert_equals(backlog[3].ticket, fifth_item.ticket)
        self.assert_equals(4, backlog[4].pos)
        self.assert_equals(3, backlog[3].pos)
    
    def testCanMoveItemsInGlobalBacklogByHandingInTickets(self):
        backlog = self.get(name='Product Backlog', scope=None)
        requirement = self.teh.create_ticket(Type.REQUIREMENT)
        backlog.add(requirement)
        backlog.add(self.teh.create_ticket(Type.REQUIREMENT))
        backlog.add(self.teh.create_ticket(Type.REQUIREMENT))
        backlog.save()
                
        first_item = backlog[0]
        # cleaning out the cache, because if this where a new request, the cache would be empty and this would throw
        move = BacklogController.MoveBacklogItemCommand(self.env,
                                                        name='Product Backlog',
                                                        ticket=first_item,
                                                        to_pos=2)
        self.controller.process_command(move)
        index = backlog.index(first_item)
        self.assert_equals(2, index)
        self.assert_equals(2, backlog[index].pos)
        self.assert_equals(first_item, backlog[index].ticket)

    # FIXME (AT): the save command is not really needed, it should be more focused on the
    # BacklogConfiguration, from the moment it does only safe those parameters, as the
    # scope is not persisted. This is in contradiction with the BacklogModelManager itself
    def testSaveBacklogCommand(self):
        """Tests the saving backlog command"""
        sprint = self.teh.create_sprint('MyChaningSprint')
        backlog = self.teh.create_backlog('ChangingBacklog',
                                          ticket_types=[Type.USER_STORY, Type.TASK],
                                          b_type=BacklogType.SPRINT,
                                          scope=sprint.name,
                                          num_of_items=20)
        self.assert_length(20, backlog)
        # now remove some of the items and save
        backlog.remove(backlog[0])
        backlog.remove(backlog[1])
        self.assert_length(18, backlog)
        # now save it and reload it
        cmd_save_backlog = BacklogController.SaveBacklogCommand(self.env,
                                                                name='ChangingBacklog',
                                                                scope=sprint.name)
        self.controller.process_command(cmd_save_backlog)
        # now reload the backlog and check the two items have been removed
        cmd_get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                              name='ChangingBacklog',
                                                              scope=sprint.name)
        backlog = self.controller.process_command(cmd_get_backlog)
        self.assert_length(18, backlog)

    def testGetBacklogListCommand(self):
        """Tests that the BacklogModule returns the list of Backlogs configured"""
        cmd_list = BacklogController.ListBacklogsCommand(self.env)
        blist = self.controller.process_command(cmd_list)
        self.assert_length(2, blist) # Only Product Backlog and Sprint Backlog
        # the list is returned ordered by type and than by name
        self.assert_equals(Key.PRODUCT_BACKLOG, blist[0][Key.NAME])
        self.assert_equals(Key.SPRINT_BACKLOG, blist[1][Key.NAME])
Ejemplo n.º 24
0
 def _get_sprint_backlog(self, sprint_name):
     cmd_get = BacklogController.GetBacklogCommand(self.env,
                                                   name=Key.SPRINT_BACKLOG,
                                                   scope=sprint_name)
     cmd_get.native = True
     return BacklogController(self.env).process_command(cmd_get)
Ejemplo n.º 25
0
 def setUp(self):
     """Loads a Backlog Controller"""
     self.super()
     self.controller = BacklogController(self.env)
Ejemplo n.º 26
0
 def setUp(self):
     """Loads a Backlog Controller"""
     self.super()
     self.controller = BacklogController(self.env)
Ejemplo n.º 27
0
 def get(self, name, scope):
     """Send a get Command to get a Backlog with the given name and scope"""
     get_backlog = BacklogController.GetBacklogCommand(self.env,
                                                       name=name,
                                                       scope=scope)
     return self.controller.process_command(get_backlog)