Skip to content

Commit 9603b7b

Browse files
committed
Add tests for get and set, clean up Specification test.
1 parent c3612c4 commit 9603b7b

File tree

1 file changed

+131
-3
lines changed

1 file changed

+131
-3
lines changed

test/test_admin.py

Lines changed: 131 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,85 @@ def install_init(self, type="classic",
8383
self.assertEqual(ret, 0)
8484

8585

86+
def testGet(self):
87+
''' Note the tests will fail if you run this under pdb.
88+
the context managers capture the pdb prompts and this screws
89+
up the stdout strings with (pdb) prefixed to the line.
90+
'''
91+
import sys
92+
93+
self.install_init()
94+
self.admin=AdminTool()
95+
96+
with captured_output() as (out, err):
97+
sys.argv=['main', '-i', '_test_admin', 'create', 'issue',
98+
'title="foo bar"', 'assignedto=admin' ]
99+
ret = self.admin.main()
100+
101+
out = out.getvalue().strip()
102+
print(out)
103+
self.assertEqual(out, '1')
104+
105+
self.admin=AdminTool()
106+
with captured_output() as (out, err):
107+
sys.argv=['main', '-i', '_test_admin', 'create', 'issue',
108+
'title="bar foo bar"', 'assignedto=anonymous',
109+
'superseder=1']
110+
ret = self.admin.main()
111+
112+
self.assertEqual(ret, 0)
113+
out = out.getvalue().strip()
114+
print(out)
115+
self.assertEqual(out, '2')
116+
117+
self.admin=AdminTool()
118+
with captured_output() as (out, err):
119+
sys.argv=['main', '-i', '_test_admin', 'get', 'assignedto',
120+
'issue2' ]
121+
ret = self.admin.main()
122+
123+
self.assertEqual(ret, 0)
124+
out = out.getvalue().strip()
125+
err = err.getvalue().strip()
126+
self.assertEqual(out, '2')
127+
self.assertEqual(len(err), 0)
128+
129+
self.admin=AdminTool()
130+
with captured_output() as (out, err):
131+
sys.argv=['main', '-i', '_test_admin', 'get', 'superseder',
132+
'issue2' ]
133+
ret = self.admin.main()
134+
135+
self.assertEqual(ret, 0)
136+
out = out.getvalue().strip()
137+
err = err.getvalue().strip()
138+
self.assertEqual(out, "['1']")
139+
self.assertEqual(len(err), 0)
140+
141+
self.admin=AdminTool()
142+
with captured_output() as (out, err):
143+
sys.argv=['main', '-i', '_test_admin', 'get', 'title', 'issue1']
144+
ret = self.admin.main()
145+
146+
self.assertEqual(ret, 0)
147+
out = out.getvalue().strip()
148+
err = err.getvalue().strip()
149+
self.assertEqual(out, '"foo bar"') ## why is capture inserting "??
150+
self.assertEqual(len(err), 0)
151+
152+
self.admin=AdminTool()
153+
with captured_output() as (out, err):
154+
sys.argv=['main', '-i', '_test_admin', 'get', 'tile', 'issue1']
155+
ret = self.admin.main()
156+
157+
expected_err = 'Error: no such issue property "tile"'
158+
159+
self.assertEqual(ret, 1)
160+
out = out.getvalue().strip()
161+
err = err.getvalue().strip()
162+
self.assertEqual(out.index(expected_err), 0)
163+
self.assertEqual(len(err), 0)
164+
86165
def testInit(self):
87166
import sys
88167
self.admin=AdminTool()
@@ -310,6 +389,58 @@ def testFilter(self):
310389
print(out)
311390
self.assertEqual(sorted(eval(out)), ['1', '2'])
312391

392+
def testSet(self):
393+
''' Note the tests will fail if you run this under pdb.
394+
the context managers capture the pdb prompts and this screws
395+
up the stdout strings with (pdb) prefixed to the line.
396+
'''
397+
import sys
398+
399+
self.install_init()
400+
self.admin=AdminTool()
401+
402+
with captured_output() as (out, err):
403+
sys.argv=['main', '-i', '_test_admin', 'create', 'issue',
404+
'title="foo bar"', 'assignedto=admin' ]
405+
ret = self.admin.main()
406+
407+
out = out.getvalue().strip()
408+
print(out)
409+
self.assertEqual(out, '1')
410+
411+
self.admin=AdminTool()
412+
with captured_output() as (out, err):
413+
sys.argv=['main', '-i', '_test_admin', 'create', 'issue',
414+
'title="bar foo bar"', 'assignedto=anonymous' ]
415+
ret = self.admin.main()
416+
417+
out = out.getvalue().strip()
418+
print(out)
419+
self.assertEqual(out, '2')
420+
421+
self.admin=AdminTool()
422+
with captured_output() as (out, err):
423+
sys.argv=['main', '-i', '_test_admin', 'set', 'issue2', 'title="new title"']
424+
ret = self.admin.main()
425+
426+
out = out.getvalue().strip()
427+
err = err.getvalue().strip()
428+
self.assertEqual(len(out), 0)
429+
self.assertEqual(len(err), 0)
430+
431+
self.admin=AdminTool()
432+
with captured_output() as (out, err):
433+
sys.argv=['main', '-i', '_test_admin', 'set', 'issue2', 'tile="new title"']
434+
ret = self.admin.main()
435+
436+
expected_err = "Error: 'tile' is not a property of issue"
437+
438+
out = out.getvalue().strip()
439+
err = err.getvalue().strip()
440+
self.assertEqual(out.index(expected_err), 0)
441+
self.assertEqual(len(err), 0)
442+
443+
313444
def testSpecification(self):
314445
''' Note the tests will fail if you run this under pdb.
315446
the context managers capture the pdb prompts and this screws
@@ -320,9 +451,6 @@ def testSpecification(self):
320451
self.install_init()
321452
self.admin=AdminTool()
322453

323-
self.maxDiff = 0
324-
import inspect
325-
326454
spec= [ 'username: <roundup.hyperdb.String> (key property)',
327455
'alternate_addresses: <roundup.hyperdb.String>',
328456
'realname: <roundup.hyperdb.String>',

0 commit comments

Comments
 (0)