1 from twisted.internet import reactor |
1 from twisted.internet import reactor |
|
2 from twisted.internet.defer import inlineCallbacks |
2 |
3 |
3 from Queue import deque |
4 from Queue import deque |
4 |
5 |
5 from iro.controller.task import createJob, Task |
6 from iro.controller.task import createJob, Task |
6 from iro.controller.pool import taskPool, dbPool |
7 from iro.controller.pool import taskPool, dbPool |
7 |
8 |
8 from iro.model.job import exJobs, ExJob |
9 from iro.model.job import exJobs, ExJob, Status |
9 |
10 |
10 from iro.model.pool import data |
11 from iro.model.pool import data |
11 |
12 |
12 from iro.model.message import SMS, Fax, Mail |
13 from iro.model.message import SMS, Fax, Mail |
13 from iro.model.schema import Job, User |
14 from iro.model.schema import Job, User |
14 from iro.telnumber import Telnumber |
15 from iro.telnumber import Telnumber |
15 |
16 |
16 from iro.validate import vInteger |
17 from iro.validate import vInteger |
|
18 from iro.error import NoRoute |
17 |
19 |
18 from .dbtestcase import DBTestCase |
20 from .dbtestcase import DBTestCase |
19 |
21 |
20 class DumpPool(): |
22 class DumpPool(): |
21 def run(self, f,*a,**k): |
23 def run(self, f,*a,**k): |
82 self.assertEqual(u.jobs[0].extend,ejob) |
84 self.assertEqual(u.jobs[0].extend,ejob) |
83 |
85 |
84 def testUnknownExJob(self): |
86 def testUnknownExJob(self): |
85 self.assertRaises(KeyError,exJobs.__getitem__,'a1234567890') |
87 self.assertRaises(KeyError,exJobs.__getitem__,'a1234567890') |
86 |
88 |
87 class JobTest(DBTestCase): |
89 class TestTasks(DBTestCase): |
88 |
90 |
89 def setUp(self): |
91 def setUp(self): |
90 DBTestCase.setUp(self) |
92 DBTestCase.setUp(self) |
91 dbPool.start(reactor) |
93 dbPool.start(reactor) |
92 |
94 |
105 |
107 |
106 def poolsize(result): |
108 def poolsize(result): |
107 self.assertEqual(taskPool.pool.q.qsize(),1) |
109 self.assertEqual(taskPool.pool.q.qsize(),1) |
108 return result |
110 return result |
109 d.addCallback(poolsize) |
111 d.addCallback(poolsize) |
|
112 |
110 def keys(result): |
113 def keys(result): |
111 self.assertEqual(result.tasks.keys(),[Telnumber('0123325456')]) |
114 self.assertEqual(result.tasks.keys(),[Telnumber('0123325456')]) |
112 return result |
115 return result |
113 d.addCallback(keys) |
116 d.addCallback(keys) |
|
117 return d |
|
118 @inlineCallbacks |
|
119 def testRun(self): |
|
120 with self.session() as session: |
|
121 u = User(name='test',apikey='abcdef123456789') |
|
122 session.add(u) |
|
123 |
114 def tasktest(result): |
124 def tasktest(result): |
115 self.assertIsInstance(result.tasks[Telnumber('0123325456')], Task) |
125 self.assertIsInstance(result.tasks[Telnumber('0123325456')], Task) |
116 return result |
126 return result |
117 d.addCallback(tasktest) |
127 d.addCallback(tasktest) |
118 |
128 |
119 |
129 |
120 |
130 |
121 return d |
131 exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test']) |
|
132 |
|
133 task=Task(Telnumber('123456789'), exjob) |
|
134 ret = yield task._run() |
|
135 self.assertIsInstance(ret, Status) |
|
136 self.assertEqual(ret.offer,"test") |
|
137 self.assertEqual(ret.status, Status.error) |
|
138 self.assertEqual(ret.errtext,"Error: Test") |
|
139 |
|
140 @inlineCallbacks |
|
141 def testNoRoute(self): |
|
142 with self.session() as session: |
|
143 u = User(name='test',apikey='abcdef123456789') |
|
144 session.add(u) |
|
145 |
|
146 exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), []) |
|
147 |
|
148 task=Task(Telnumber('123456789'), exjob) |
|
149 d = task._run() |
|
150 self.assertFailure(d, NoRoute) |
|
151 |
122 |
152 |
123 #def testCreateFax(self): |
153 #def testCreateFax(self): |
124 # with self.session() as session: |
154 # with self.session() as session: |
125 # u = User(name='test',apikey='abcdef123456789') |
155 # u = User(name='test',apikey='abcdef123456789') |
126 # session.add(u) |
156 # session.add(u) |