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

📄 model.py

📁 一款基于web的项目管理、bug跟踪系统。提供了与svn集成的操作界面、问题跟踪
💻 PY
📖 第 1 页 / 共 2 页
字号:
from trac import corefrom trac.core import TracError, implementsfrom trac.resource import ResourceNotFoundfrom trac.ticket.model import Ticket, Component, Milestone, Priority, Type, Versionfrom trac.ticket.api import ITicketChangeListenerfrom trac.test import EnvironmentStubfrom trac.util.datefmt import utc, to_timestampfrom datetime import datetimeimport unittestclass TestTicketChangeListener(core.Component):    implements(ITicketChangeListener)    def ticket_created(self, ticket):        self.action = 'created'        self.ticket = ticket    def ticket_changed(self, ticket, comment, author, old_values):        self.action = 'changed'        self.ticket = ticket        self.comment = comment        self.author = author        self.old_values = old_values            def ticket_deleted(self, ticket):        self.action = 'deleted'        self.ticket = ticketclass TicketTestCase(unittest.TestCase):    def setUp(self):        self.env = EnvironmentStub(default_data=True)        self.env.config.set('ticket-custom', 'foo', 'text')        self.env.config.set('ticket-custom', 'cbon', 'checkbox')        self.env.config.set('ticket-custom', 'cboff', 'checkbox')    def _insert_ticket(self, summary, **kw):        """Helper for inserting a ticket into the database"""        ticket = Ticket(self.env)        for k,v in kw.items():            ticket[k] = v        return ticket.insert()    def _create_a_ticket(self):        # 1. Creating ticket        ticket = Ticket(self.env)        ticket['reporter'] = 'santa'        ticket['summary'] = 'Foo'        ticket['foo'] = 'This is a custom field'        return ticket    def test_invalid_ticket_id(self):        self.assertEqual(Ticket.id_is_valid(-1), False)        self.assertEqual(Ticket.id_is_valid(0), False)        self.assertEqual(Ticket.id_is_valid(1), True)        self.assertEqual(Ticket.id_is_valid(1L << 31), True)        self.assertEqual(Ticket.id_is_valid(1L << 32), False)        self.assertRaises(ResourceNotFound, Ticket, self.env, -1)        self.assertRaises(ResourceNotFound, Ticket, self.env, 1L << 32)    def test_create_ticket_1(self):        ticket = self._create_a_ticket()        self.assertEqual('santa', ticket['reporter'])        self.assertEqual('Foo', ticket['summary'])        self.assertEqual('This is a custom field', ticket['foo'])        ticket.insert()    def test_create_ticket_2(self):        ticket = self._create_a_ticket()        ticket.insert()        # Retrieving ticket        ticket2 = Ticket(self.env, 1)        self.assertEqual(1, ticket2.id)        self.assertEqual('santa', ticket2['reporter'])        self.assertEqual('Foo', ticket2['summary'])        self.assertEqual('This is a custom field', ticket2['foo'])    def _modify_a_ticket(self):        ticket2 = self._create_a_ticket()        ticket2.insert()        ticket2['summary'] = 'Bar'        ticket2['foo'] = 'New value'        ticket2.save_changes('santa', 'this is my comment')        return ticket2    def test_create_ticket_3(self):        self._modify_a_ticket()        # Retrieving ticket        ticket3 = Ticket(self.env, 1)        self.assertEqual(1, ticket3.id)        self.assertEqual(ticket3['reporter'], 'santa')        self.assertEqual(ticket3['summary'], 'Bar')        self.assertEqual(ticket3['foo'], 'New value')    def test_create_ticket_4(self):        ticket3 = self._modify_a_ticket()        # Testing get_changelog()        log = ticket3.get_changelog()        self.assertEqual(len(log), 3)        ok_vals = ['foo', 'summary', 'comment']        self.failUnless(log[0][2] in ok_vals)        self.failUnless(log[1][2] in ok_vals)        self.failUnless(log[2][2] in ok_vals)    def test_create_ticket_5(self):        ticket3 = self._modify_a_ticket()        # Testing delete()        ticket3.delete()        log = ticket3.get_changelog()        self.assertEqual(len(log), 0)        self.assertRaises(TracError, Ticket, self.env, 1)    def test_ticket_default_values(self):        """        Verify that a ticket uses default values specified in the configuration        when created.        """        # Set defaults for some standard fields        self.env.config.set('ticket', 'default_type', 'defect')        self.env.config.set('ticket', 'default_component', 'component1')        # Add a custom field of type 'text' with a default value        self.env.config.set('ticket-custom', 'foo', 'text')        self.env.config.set('ticket-custom', 'foo.value', 'Something')        # Add a custom field of type 'select' with a default value specified as        # the value itself        self.env.config.set('ticket-custom', 'bar', 'select')        self.env.config.set('ticket-custom', 'bar.options', 'one|two|three')        self.env.config.set('ticket-custom', 'bar.value', 'two')        # Add a custom field of type 'select' with a default value specified as        # index into the options list        self.env.config.set('ticket-custom', 'baz', 'select')        self.env.config.set('ticket-custom', 'baz.options', 'one|two|three')        self.env.config.set('ticket-custom', 'baz.value', '2')        ticket = Ticket(self.env)        self.assertEqual('defect', ticket['type'])        self.assertEqual('component1', ticket['component'])        self.assertEqual('Something', ticket['foo'])        self.assertEqual('two', ticket['bar'])        self.assertEqual('three', ticket['baz'])    def test_set_field_stripped(self):        """        Verify that whitespace around ticket fields is stripped, except for        textarea fields.        """        ticket = Ticket(self.env)        ticket['component'] = '  foo  '        ticket['description'] = '  bar  '        self.assertEqual('foo', ticket['component'])        self.assertEqual('  bar  ', ticket['description'])    def test_set_field_multi(self):        """        Ticket fields can't yet be multi-valued        """        ticket = Ticket(self.env)        def set_multi_valued():            ticket['component'] = ['  foo  ',  '  bar  ']        self.assertRaises(TracError, set_multi_valued)    def test_owner_from_component(self):        """        Verify that the owner of a new ticket is set to the owner of the        component.        """        component = Component(self.env)        component.name = 'test'        component.owner = 'joe'        component.insert()        ticket = Ticket(self.env)        ticket['reporter'] = 'santa'        ticket['summary'] = 'Foo'        ticket['component'] = 'test'        ticket.insert()        self.assertEqual('joe', ticket['owner'])    def test_owner_from_changed_component(self):        """        Verify that the owner of a new ticket is updated when the component is        changed.        """        component1 = Component(self.env)        component1.name = 'test1'        component1.owner = 'joe'        component1.insert()        component2 = Component(self.env)        component2.name = 'test2'        component2.owner = 'kate'        component2.insert()        ticket = Ticket(self.env)        ticket['reporter'] = 'santa'        ticket['summary'] = 'Foo'        ticket['component'] = 'test1'        ticket['status'] = 'new'        tktid = ticket.insert()        ticket = Ticket(self.env, tktid)        ticket['component'] = 'test2'        ticket.save_changes('jane', 'Testing')        self.assertEqual('kate', ticket['owner'])    def test_populate_ticket(self):        data = {'summary': 'Hello world', 'reporter': 'john', 'foo': 'bar',                'foo': 'bar', 'checkbox_cbon': '', 'cbon': 'on',                'checkbox_cboff': ''}        ticket = Ticket(self.env)        ticket.populate(data)        # Standard fields        self.assertEqual('Hello world', ticket['summary'])        self.assertEqual('john', ticket['reporter'])        # An unknown field        assert ticket['bar'] is None        # Custom field        self.assertEqual('bar', ticket['foo'])        # Custom field of type 'checkbox'        self.assertEqual('on', ticket['cbon'])        self.assertEqual('0', ticket['cboff'])    def test_changelog(self):        tkt_id = self._insert_ticket('Test', reporter='joe', component='foo',                                     milestone='bar')        ticket = Ticket(self.env, tkt_id)        ticket['component'] = 'bar'        ticket['milestone'] = 'foo'        now = datetime(2001, 1, 1, 1, 1, 1, 0, utc)        ticket.save_changes('jane', 'Testing', now)        for t, author, field, old, new, permanent in ticket.get_changelog():            self.assertEqual((now, 'jane', True), (t, author, permanent))            if field == 'component':                self.assertEqual(('foo', 'bar'), (old, new))            elif field == 'milestone':                self.assertEqual(('bar', 'foo'), (old, new))            elif field == 'comment':                self.assertEqual(('', 'Testing'), (old, new))            else:                self.fail('Unexpected change (%s)'                          % ((t, author, field, old, new),))    def test_changelog_with_reverted_change(self):        tkt_id = self._insert_ticket('Test', reporter='joe', component='foo')        ticket = Ticket(self.env, tkt_id)        ticket['component'] = 'bar'        ticket['component'] = 'foo'        now = datetime(2001, 1, 1,  1, 1, 1, 0, utc)        ticket.save_changes('jane', 'Testing', now)        for t, author, field, old, new, permanent in ticket.get_changelog():            self.assertEqual((now, 'jane', True), (t, author, permanent))            if field == 'comment':                self.assertEqual(('', 'Testing'), (old, new))            else:                self.fail('Unexpected change (%s)'                          % ((t, author, field, old, new),))    def test_change_listener_created(self):        listener = TestTicketChangeListener(self.env)

⌨️ 快捷键说明

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