⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roadmap.py

📁 一款基于web的项目管理、bug跟踪系统。提供了与svn集成的操作界面、问题跟踪
💻 PY
字号:
from trac.config import Configurationfrom trac.test import EnvironmentStubfrom trac.ticket.roadmap import *from trac.core import ComponentManagerimport unittestclass TicketGroupStatsTestCase(unittest.TestCase):    def setUp(self):        self.stats = TicketGroupStats('title', 'unit')    def test_init(self):        self.assertEquals('title', self.stats.title, 'title incorrect')        self.assertEquals('unit', self.stats.unit, 'unit incorrect')        self.assertEquals(0, self.stats.count, 'count not zero')        self.assertEquals(0, len(self.stats.intervals), 'intervals not empty')    def test_add_iterval(self):        self.stats.add_interval('intTitle', 3, {'k1': 'v1'}, 'css', 0)        self.stats.refresh_calcs()        self.assertEquals(3, self.stats.count, 'count not incremented')        int = self.stats.intervals[0]        self.assertEquals('intTitle', int['title'], 'title incorrect')        self.assertEquals(3, int['count'], 'count incorrect')        self.assertEquals({'k1': 'v1'}, int['qry_args'], 'query args incorrect')        self.assertEquals('css', int['css_class'], 'css class incorrect')        self.assertEquals(100, int['percent'], 'percent incorrect')        self.stats.add_interval('intTitle', 3, {'k1': 'v1'}, 'css', 0)        self.stats.refresh_calcs()        self.assertEquals(50, int['percent'], 'percent not being updated')    def test_add_interval_no_prog(self):        self.stats.add_interval('intTitle', 3, {'k1': 'v1'}, 'css', 0)        self.stats.add_interval('intTitle', 5, {'k1': 'v1'}, 'css', 0)        self.stats.refresh_calcs()        int = self.stats.intervals[1]        self.assertEquals(0, self.stats.done_count, 'count added for no prog')        self.assertEquals(0, self.stats.done_percent, 'percent incremented')    def test_add_interval_prog(self):        self.stats.add_interval('intTitle', 3, {'k1': 'v1'}, 'css', 0)        self.stats.add_interval('intTitle', 1, {'k1': 'v1'}, 'css', 1)        self.stats.refresh_calcs()        self.assertEquals(4, self.stats.count, 'count not incremented')        self.assertEquals(1, self.stats.done_count, 'count not added to prog')        self.assertEquals(25, self.stats.done_percent, 'done percent not incr')    def test_add_interval_fudging(self):        self.stats.add_interval('intTitle', 3, {'k1': 'v1'}, 'css', 0)        self.stats.add_interval('intTitle', 5, {'k1': 'v1'}, 'css', 1)        self.stats.refresh_calcs()        self.assertEquals(8, self.stats.count, 'count not incremented')        self.assertEquals(5, self.stats.done_count, 'count not added to prog')        self.assertEquals(62, self.stats.done_percent,                          'done percnt not fudged downward')        self.assertEquals(62, self.stats.intervals[1]['percent'],                          'interval percent not fudged downward')        self.assertEquals(38, self.stats.intervals[0]['percent'],                          'interval percent not fudged upward')class DefaultTicketGroupStatsProviderTestCase(unittest.TestCase):    def setUp(self):        self.env = EnvironmentStub(default_data=True)        self.milestone1 = Milestone(self.env)        self.milestone1.name = 'Test'        self.milestone1.insert()        self.milestone2 = Milestone(self.env)        self.milestone2.name = 'Test2'        self.milestone2.insert()        tkt1 = Ticket(self.env)        tkt1.populate({'summary': 'Foo', 'milestone': 'Test', 'owner': 'foman',                        'status': 'new'})        tkt1.insert()        tkt2 = Ticket(self.env)        tkt2.populate({'summary': 'Bar', 'milestone': 'Test',                        'status': 'closed', 'owner': 'barman'})        tkt2.insert()        tkt3 = Ticket(self.env)        tkt3.populate({'summary': 'Sum', 'milestone': 'Test', 'owner': 'suman',                        'status': 'reopened'})        tkt3.insert()        self.tkt1 = tkt1        self.tkt2 = tkt2        self.tkt3 = tkt3                prov = DefaultTicketGroupStatsProvider(ComponentManager())        prov.env = self.env        prov.config = self.env.config        self.stats = prov.get_ticket_group_stats([tkt1.id, tkt2.id, tkt3.id])    def test_stats(self):        self.assertEquals(self.stats.title, 'ticket status', 'title incorrect')        self.assertEquals(self.stats.unit, 'ticket', 'unit incorrect')        self.assertEquals(2, len(self.stats.intervals), 'more than 2 intervals')    def test_closed_interval(self):        closed = self.stats.intervals[0]        self.assertEquals('closed', closed['title'], 'closed title incorrect')        self.assertEquals('closed', closed['css_class'], 'closed class incorrect')        self.assertEquals(True, closed['overall_completion'],                          'closed should contribute to overall completion')        self.assertEquals({'status': ['closed'], 'group': 'resolution'},                          closed['qry_args'], 'qry_args incorrect')        self.assertEquals(1, closed['count'], 'closed count incorrect')        self.assertEquals(33, closed['percent'], 'closed percent incorrect')    def test_open_interval(self):        open = self.stats.intervals[1]        self.assertEquals('active', open['title'], 'open title incorrect')        self.assertEquals('open', open['css_class'], 'open class incorrect')        self.assertEquals(False, open['overall_completion'],                          "open shouldn't contribute to overall completion")        self.assertEquals({'status':                           [u'assigned', u'new', u'accepted', u'reopened']},                          open['qry_args'], 'qry_args incorrect')        self.assertEquals(2, open['count'], 'open count incorrect')        self.assertEquals(67, open['percent'], 'open percent incorrect')def in_tlist(ticket, list):    return len([t for t in list if t['id'] == ticket.id]) > 0def suite():    suite = unittest.TestSuite()    suite.addTest(unittest.makeSuite(TicketGroupStatsTestCase, 'test'))    suite.addTest(unittest.makeSuite(DefaultTicketGroupStatsProviderTestCase,                                      'test'))    return suiteif __name__ == '__main__':    unittest.main(defaultTest='suite')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -