diff -r 745d829d1e02 -r b348d8f15b0a iro/tests/task.py --- a/iro/tests/task.py Fri Mar 23 16:18:12 2012 +0100 +++ b/iro/tests/task.py Fri Mar 23 16:21:22 2012 +0100 @@ -113,6 +113,45 @@ d.addCallback(c) return d + def testChaining(self): + with self.session() as session: + u = User(name='test',apikey='abcdef123456789') + session.add(u) + o=DBOffer(name="test", provider="bla", route="basic", typ="sms") + u.rights.append(Userright(o)) + o=DBOffer(name="test2", provider="bla", route="basic2", typ="sms") + u.rights.append(Userright(o)) + + p=Provider(name="p", typs={"sms":["basic","basic2"]}) + def send(typ,route,recipient,message): + if route=="basic": + raise Exception("oh my god an exception") + return Status(p,route) + p.send=send + offers["test"] = Offer("test",provider=p, route="basic", typ="sms") + offers["test2"] = Offer("test2",provider=p, route="basic2", typ="sms") + + def c(exjob): + task = Task(Telnumber('123456789'), exjob) + task.d = Deferred() + task.d.addCallback(stat, task) + task._run() + return task.d + + def stat(status, task): + errors = self.flushLoggedErrors(Exception) + self.assertEqual(len(errors), 1) + self.assertEqual(self.log.e[1]['why'], "Job(%s): Send to '0049123456789' failed via 'test'"% task.job.dbjob) + self.assertIsInstance(status, Status) + self.assertEqual(status.provider, p) + self.assertEqual(status.route, "basic2") + + d = exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test','test2']) + d.addCallback(c) + return d + + + def testSetStatus(self): task=Task(Telnumber('123456789'), None) self.assertEqual(task.status,None)