Mercurial > genshi > mirror
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() |