source: server/test/server/job.py @ 951ab1b

no-cups
Last change on this file since 951ab1b was 951ab1b, checked in by Jessica B. Hamrick <jhamrick@…>, 12 years ago

Add support for verifying documents in job.py

  • Property mode set to 100644
File size: 4.1 KB
Line 
1from gutenbach.server import GutenbachJob
2from gutenbach.server import errors
3from gutenbach.ipp import JobStates as States
4import unittest
5import tempfile
6import sys
7
8def make_tempfile():
9    fh = tempfile.NamedTemporaryFile()
10    fh.write("test\n")
11    fh.seek(0)
12    return fh
13
14class TestEmptyGutenbachJob(unittest.TestCase):
15
16    def setUp(self):
17        self.job = GutenbachJob()
18
19    def testPlayer(self):
20        self.assertEqual(self.job.player, None)
21    def testId(self):
22        self.assertEqual(self.job.id, -1)
23    def testCreator(self):
24        self.assertEqual(self.job.creator, "")
25    def testName(self):
26        self.assertEqual(self.job.name, "")
27    def testSize(self):
28        self.assertEqual(self.job.size, 0)
29    def testState(self):
30        self.assertEqual(self.job.state, States.HELD)
31    def testPriority(self):
32        self.assertEqual(self.job.priority, 1)
33
34    def testStateProperties(self):
35        self.assertFalse(self.job.is_valid)
36        self.assertFalse(self.job.is_ready)
37        self.assertFalse(self.job.is_playing)
38        self.assertFalse(self.job.is_paused)
39        self.assertFalse(self.job.is_done)
40        self.assertFalse(self.job.is_completed)
41        self.assertFalse(self.job.is_cancelled)
42        self.assertFalse(self.job.is_aborted)
43
44    def testSpool(self):
45        fh = tempfile.NamedTemporaryFile()
46        self.assertRaises(errors.InvalidJobStateException, self.job.spool, fh)
47        fh.close()
48    def testPlay(self):
49        self.assertRaises(errors.InvalidJobStateException, self.job.play)
50    def testPause(self):
51        self.assertRaises(errors.InvalidJobStateException, self.job.pause)
52    def testCancel(self):
53        self.job.cancel()
54        self.assertTrue(self.job.is_cancelled)
55        self.assertEqual(self.job.state, States.CANCELLED)
56    def testAbort(self):
57        self.job.abort()
58        self.assertTrue(self.job.is_aborted)
59        self.assertEqual(self.job.state, States.ABORTED)
60
61class TestBadGutenbachJob(unittest.TestCase):
62
63    def testBadJobId(self):
64        job = GutenbachJob(job_id=-2)
65        self.assertEqual(job.id, -1)
66        job.id = -2
67        self.assertEqual(job.id, -1)
68
69    def testBadCreator(self):
70        job = GutenbachJob(
71            job_id=1,
72            creator=12345)
73        self.assertEqual(job.creator, "12345")
74        job.creator = None
75        self.assertEqual(job.creator, "")
76        job.creator = []
77        self.assertEqual(job.creator, "[]")
78
79    def testBadName(self):
80        job = GutenbachJob(
81            job_id=1,
82            creator="foo",
83            name=12345)
84        self.assertEqual(job.name, "12345")
85        job.name = None
86        self.assertEqual(job.name, "")
87        job.name = []
88        self.assertEqual(job.name, "[]")
89
90    def testBadPriority(self):
91        job = GutenbachJob(
92            job_id=1,
93            creator="foo",
94            name="test",
95            priority=-1)
96        self.assertEqual(job.priority, 1)
97        job.priority = 0
98        self.assertEqual(job.priority, 1)
99        job.priority = 1
100        self.assertEqual(job.priority, 1)
101        job.priority = sys.maxint
102        self.assertEqual(job.priority, sys.maxint)
103        job.priority = "hello"
104        self.assertEqual(job.priority, 1)
105        job.priority = []
106        self.assertEqual(job.priority, 1)
107
108    def testBadDocument(self):
109        job = GutenbachJob(
110            job_id=1,
111            creator="foo",
112            name="test",
113            priority=1)
114        self.assertRaises(errors.InvalidDocument, job.spool, "hello")
115       
116class TestGoodGutenbachJob(unittest.TestCase):
117
118    def setUp(self):
119        self.job = GutenbachJob(job_id=1, creator="foo", name="test")
120
121    def testSpool(self):
122        fh = make_tempfile()
123        self.assertTrue(self.job.is_valid)
124        self.assertFalse(self.job.is_ready)
125        self.job.spool(fh)
126        self.assertTrue(self.job.is_ready)
127       
128        # Verify various properties
129        self.assertEqual(self.job.document, fh.name)
130        self.assertNotEqual(self.job.player, None)
131        self.assertEqual(self.job.state, States.PENDING)
132
133        self.job.abort()
134
135
136if __name__ == "__main__":
137    unittest.main()
Note: See TracBrowser for help on using the repository browser.