Esempio n. 1
0
class TestTicketModelManager(AgiloTestCase):
    """Tests AgiloTicket ModelManager, in particular the select method"""
    def setUp(self):
        self.super()
        self.manager = AgiloTicketModelManager(self.env)

    def test_create_ticket(self):
        """Tests the creation of a ticket using the ModelManager"""
        t = self.manager.create(summary="This is a ticket")
        self.assert_true(t.exists, "Ticket not existing...")
        self.assert_equals("This is a ticket", t[Key.SUMMARY])
        # Create without saving
        t2 = self.manager.create(summary="Not saved", save=False)
        self.assert_false(t2.exists, "The ticket has been saved!")
        self.assert_equals("Not saved", t2[Key.SUMMARY])
        # Now add something and change the summary
        t2[Key.DESCRIPTION] = "changed"
        t2[Key.SUMMARY] = "Now saved"
        self.manager.save(t2)
        self.assert_true(t2.exists)
        self.assert_equals("changed", t2[Key.DESCRIPTION])
        self.assert_equals("Now saved", t2[Key.SUMMARY])

    def test_ticket_caching(self):
        """Tests the ticket caching"""
        t1 = self.manager.create(summary="Ticket #1", t_type=Type.USER_STORY)
        t1_dupe = self.manager.get(tkt_id=t1.id)
        self.assert_equals(t1, t1_dupe)

    def test_select_tickets(self):
        """Tests the select method to get tickets"""
        milestone = self.teh.create_milestone('Test')
        sprint = self.teh.create_sprint('Test', milestone=milestone)
        t1 = self.manager.create(summary="Ticket #1",
                                 t_type=Type.USER_STORY,
                                 sprint=sprint.name)
        t2 = self.manager.create(summary="Ticket #2", t_type=Type.TASK)
        # Now the plan select should return both tickets
        tickets = self.manager.select()
        self.assert_true(t1 in tickets, "T1 is not in tickets!?")
        self.assert_true(t2 in tickets, "T2 is not in tickets!?")
        # Now selects all tickets planned for sprint Test
        self.assert_equals(sprint.name, t1[Key.SPRINT])
        tickets = self.manager.select(criteria={Key.SPRINT: 'Test'})
        self.assert_true(t1 in tickets, "T1 is not in ticket!?")
        self.assert_false(t2 in tickets, "T2 is in tickets and should not?!")
        # Now selects all tickets planned for milestone Test
        self.assert_equals('Test', t1[Key.MILESTONE])
        tickets = self.manager.select(criteria={Key.MILESTONE: 'Test'})
        self.assert_true(t1 in tickets, "T1 is not in tickets!?")
        self.assert_false(t2 in tickets, "T2 is in tickets and should not?!")
        # Now tests the select with a limit to 1
        tickets = self.manager.select(limit=1)
        self.assert_equals(1, len(tickets))
        tickets = self.manager.select(limit=2)
        self.assert_equals(2, len(tickets))
        # Now select all the tickets that have been created before now
        tickets = self.manager.select(criteria={'changetime': '<=%s' % \
                                                t1.time_created})
        self.assert_equals(2, len(tickets))
        # Now try out the order by
        tickets = self.manager.select(order_by=['-sprint'])
        self.assert_equals(tickets[0], t1)
        self.assert_equals(tickets[1], t2)

    def test_criteria_not_split_if_no_type(self):
        """Tests the splitting of the criteria in the selct query when
        containing the paramater ticket type"""
        criteria = {
            'summary': 'test',
            Key.REMAINING_TIME: '2',
            'id': 'not in (1, 2, 3)'
        }
        self.assert_none(self.manager._split_ticket_type(criteria))

    def test_criteria_split_if_type(self):
        """Tests the splitting of the criteria in the selct query when
        containing the paramater ticket type"""
        criteria = {
            'summary': 'test',
            Key.REMAINING_TIME: '2',
            'type': "in ('story', 'task')"
        }
        res = self.manager._split_ticket_type(criteria)
        self.assert_not_none(res)
        self.assert_equals('story', res[0].value)
        self.assert_equals('=', res[0].operator)
        self.assert_equals(('task', 'story'), res[1].value)
        self.assert_equals('in', res[1].operator)
Esempio n. 2
0
class TestTicketModelManager(AgiloTestCase):
    """Tests AgiloTicket ModelManager, in particular the select method"""
    def setUp(self):
        self.super()
        self.manager = AgiloTicketModelManager(self.env)
        
    def test_create_ticket(self):
        """Tests the creation of a ticket using the ModelManager"""
        t = self.manager.create(summary="This is a ticket")
        self.assert_true(t.exists, "Ticket not existing...")
        self.assert_equals("This is a ticket", t[Key.SUMMARY])
        # Create without saving
        t2 = self.manager.create(summary="Not saved", save=False)
        self.assert_false(t2.exists, "The ticket has been saved!")
        self.assert_equals("Not saved", t2[Key.SUMMARY])
        # Now add something and change the summary
        t2[Key.DESCRIPTION] = "changed"
        t2[Key.SUMMARY] = "Now saved"
        self.manager.save(t2)
        self.assert_true(t2.exists)
        self.assert_equals("changed", t2[Key.DESCRIPTION])
        self.assert_equals("Now saved", t2[Key.SUMMARY])
    
    def test_ticket_caching(self):
        """Tests the ticket caching"""
        t1 = self.manager.create(summary="Ticket #1", 
                                 t_type=Type.USER_STORY)
        t1_dupe = self.manager.get(tkt_id=t1.id)
        self.assert_equals(t1, t1_dupe)
        
    def test_select_tickets(self):
        """Tests the select method to get tickets"""
        milestone = self.teh.create_milestone('Test')
        sprint = self.teh.create_sprint('Test', milestone=milestone)
        t1 = self.manager.create(summary="Ticket #1", 
                                 t_type=Type.USER_STORY,
                                 sprint=sprint.name)
        t2 = self.manager.create(summary="Ticket #2",
                                 t_type=Type.TASK)
        # Now the plan select should return both tickets
        tickets = self.manager.select()
        self.assert_true(t1 in tickets, "T1 is not in tickets!?")
        self.assert_true(t2 in tickets, "T2 is not in tickets!?")
        # Now selects all tickets planned for sprint Test
        self.assert_equals(sprint.name, t1[Key.SPRINT])
        tickets = self.manager.select(criteria={Key.SPRINT: 'Test'})
        self.assert_true(t1 in tickets, "T1 is not in ticket!?")
        self.assert_false(t2 in tickets, "T2 is in tickets and should not?!")
        # Now selects all tickets planned for milestone Test
        self.assert_equals('Test', t1[Key.MILESTONE])
        tickets = self.manager.select(criteria={Key.MILESTONE: 'Test'})
        self.assert_true(t1 in tickets, "T1 is not in tickets!?")
        self.assert_false(t2 in tickets, "T2 is in tickets and should not?!")
        # Now tests the select with a limit to 1
        tickets = self.manager.select(limit=1)
        self.assert_equals(1, len(tickets))
        tickets = self.manager.select(limit=2)
        self.assert_equals(2, len(tickets))
        # Now select all the tickets that have been created before now
        tickets = self.manager.select(criteria={'changetime': '<=%s' % \
                                                t1.time_created})
        self.assert_equals(2, len(tickets))
        # Now try out the order by
        tickets = self.manager.select(order_by=['-sprint'])
        self.assert_equals(tickets[0], t1)
        self.assert_equals(tickets[1], t2)

    def test_criteria_not_split_if_no_type(self):
        """Tests the splitting of the criteria in the selct query when
        containing the paramater ticket type"""
        criteria = {'summary': 'test', Key.REMAINING_TIME: '2',
                    'id': 'not in (1, 2, 3)'}
        self.assert_none(self.manager._split_ticket_type(criteria))

    def test_criteria_split_if_type(self):
        """Tests the splitting of the criteria in the selct query when
        containing the paramater ticket type"""
        criteria = {'summary': 'test', Key.REMAINING_TIME: '2',
                    'type': "in ('story', 'task')"}
        res = self.manager._split_ticket_type(criteria)
        self.assert_not_none(res)
        self.assert_equals('story', res[0].value)
        self.assert_equals('=', res[0].operator)
        self.assert_equals(('task', 'story'), res[1].value)
        self.assert_equals('in', res[1].operator)