comparison examples/trac/trac/ticket/tests/api.py @ 39:93b4dcbafd7b trunk

Copy Trac to main branch.
author cmlenz
date Mon, 03 Jul 2006 18:53:27 +0000
parents
children
comparison
equal deleted inserted replaced
38:ee669cb9cccc 39:93b4dcbafd7b
1 from trac.config import Configuration
2 from trac.ticket.api import TicketSystem
3 from trac.test import EnvironmentStub, Mock
4
5 import unittest
6
7
8 class TicketSystemTestCase(unittest.TestCase):
9
10 def setUp(self):
11 self.env = EnvironmentStub()
12 self.ticket_system = TicketSystem(self.env)
13
14 def test_custom_field_text(self):
15 self.env.config.set('ticket-custom', 'test', 'text')
16 self.env.config.set('ticket-custom', 'test.label', 'Test')
17 self.env.config.set('ticket-custom', 'test.value', 'Foo bar')
18 fields = TicketSystem(self.env).get_custom_fields()
19 self.assertEqual({'name': 'test', 'type': 'text', 'label': 'Test',
20 'value': 'Foo bar', 'order': 0},
21 fields[0])
22
23 def test_custom_field_select(self):
24 self.env.config.set('ticket-custom', 'test', 'select')
25 self.env.config.set('ticket-custom', 'test.label', 'Test')
26 self.env.config.set('ticket-custom', 'test.value', '1')
27 self.env.config.set('ticket-custom', 'test.options', 'option1|option2')
28 fields = TicketSystem(self.env).get_custom_fields()
29 self.assertEqual({'name': 'test', 'type': 'select', 'label': 'Test',
30 'value': '1', 'options': ['option1', 'option2'],
31 'order': 0},
32 fields[0])
33
34 def test_custom_field_textarea(self):
35 self.env.config.set('ticket-custom', 'test', 'textarea')
36 self.env.config.set('ticket-custom', 'test.label', 'Test')
37 self.env.config.set('ticket-custom', 'test.value', 'Foo bar')
38 self.env.config.set('ticket-custom', 'test.cols', '60')
39 self.env.config.set('ticket-custom', 'test.rows', '4')
40 fields = TicketSystem(self.env).get_custom_fields()
41 self.assertEqual({'name': 'test', 'type': 'textarea', 'label': 'Test',
42 'value': 'Foo bar', 'width': 60, 'height': 4,
43 'order': 0},
44 fields[0])
45
46 def test_custom_field_order(self):
47 self.env.config.set('ticket-custom', 'test1', 'text')
48 self.env.config.set('ticket-custom', 'test1.order', '2')
49 self.env.config.set('ticket-custom', 'test2', 'text')
50 self.env.config.set('ticket-custom', 'test2.order', '1')
51 fields = TicketSystem(self.env).get_custom_fields()
52 self.assertEqual('test2', fields[0]['name'])
53 self.assertEqual('test1', fields[1]['name'])
54
55 def test_available_actions_full_perms(self):
56 ts = TicketSystem(self.env)
57 perm = Mock(has_permission=lambda x: 1)
58 self.assertEqual(['leave', 'resolve', 'reassign', 'accept'],
59 ts.get_available_actions({'status': 'new'}, perm))
60 self.assertEqual(['leave', 'resolve', 'reassign'],
61 ts.get_available_actions({'status': 'assigned'}, perm))
62 self.assertEqual(['leave', 'resolve', 'reassign'],
63 ts.get_available_actions({'status': 'reopened'}, perm))
64 self.assertEqual(['leave', 'reopen'],
65 ts.get_available_actions({'status': 'closed'}, perm))
66
67 def test_available_actions_no_perms(self):
68 ts = TicketSystem(self.env)
69 perm = Mock(has_permission=lambda x: 0)
70 self.assertEqual(['leave'],
71 ts.get_available_actions({'status': 'new'}, perm))
72 self.assertEqual(['leave'],
73 ts.get_available_actions({'status': 'assigned'}, perm))
74 self.assertEqual(['leave'],
75 ts.get_available_actions({'status': 'reopened'}, perm))
76 self.assertEqual(['leave'],
77 ts.get_available_actions({'status': 'closed'}, perm))
78
79 def test_available_actions_create_only(self):
80 ts = TicketSystem(self.env)
81 perm = Mock(has_permission=lambda x: x == 'TICKET_CREATE')
82 self.assertEqual(['leave'],
83 ts.get_available_actions({'status': 'new'}, perm))
84 self.assertEqual(['leave'],
85 ts.get_available_actions({'status': 'assigned'}, perm))
86 self.assertEqual(['leave'],
87 ts.get_available_actions({'status': 'reopened'}, perm))
88 self.assertEqual(['leave', 'reopen'],
89 ts.get_available_actions({'status': 'closed'}, perm))
90
91 def test_available_actions_chgprop_only(self):
92 # CHGPROP is not enough for changing a ticket's state (#3289)
93 ts = TicketSystem(self.env)
94 perm = Mock(has_permission=lambda x: x == 'TICKET_CHGPROP')
95 self.assertEqual(['leave'],
96 ts.get_available_actions({'status': 'new'}, perm))
97 self.assertEqual(['leave'],
98 ts.get_available_actions({'status': 'assigned'}, perm))
99 self.assertEqual(['leave'],
100 ts.get_available_actions({'status': 'reopened'}, perm))
101 self.assertEqual(['leave'],
102 ts.get_available_actions({'status': 'closed'}, perm))
103
104
105 def suite():
106 return unittest.makeSuite(TicketSystemTestCase, 'test')
107
108 if __name__ == '__main__':
109 unittest.main()
Copyright (C) 2012-2017 Edgewall Software