--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/task.py Sun Feb 19 17:47:39 2012 +0100
@@ -0,0 +1,109 @@
+from twisted.internet import reactor
+from twisted.internet.defer import inlineCallbacks
+
+from Queue import deque
+
+from iro.model.schema import User, Offer as DBOffer, Userright
+from iro.model.message import SMS
+from iro.model.status import Status
+from iro.model.offer import offers
+from iro.model.job import exJobs
+
+from iro.controller.task import createJob, Task
+from iro.controller.pool import taskPool, dbPool
+
+from iro.offer import Offer, Provider
+
+from iro.error import NoRouteForTask
+from iro.telnumber import Telnumber
+
+from .dbtestcase import DBTestCase
+
+class TaskTestCase(DBTestCase):
+ def setUp(self):
+ DBTestCase.setUp(self)
+ dbPool.start(reactor)
+
+ def tearDown(self):
+ exJobs.clear()
+ offers.clear()
+ dbPool.pool.stop()
+ taskPool.pool.q.queue = deque()
+ DBTestCase.tearDown(self)
+
+class TestTasks(TaskTestCase):
+
+ @inlineCallbacks
+ def testCreateSMS(self):
+ with self.session() as session:
+ u = User(name='test',apikey='abcdef123456789')
+ session.add(u)
+
+ job = yield createJob(u,[Telnumber('0123325456')],SMS('sms'),[])
+
+ self.assertEqual(taskPool.pool.q.qsize(),1)
+
+ self.assertEqual(job.tasks.keys(),[Telnumber('0123325456')])
+ self.assertIsInstance(job.tasks[Telnumber('0123325456')], Task)
+
+ @inlineCallbacks
+ def testRun(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))
+
+ p=Provider(name="p", config={}, typs={"sms":["test",]})
+ def send(typ,route,recipient,message):
+ return Status(provider=p, route=route)
+ p.send=send
+ offers["test"] = Offer("test",provider=p, route="test", typ="sms")
+
+ exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
+
+ task=Task(Telnumber('123456789'), exjob)
+ ret = yield task._run()
+ self.assertIsInstance(ret, Status)
+ self.assertEqual(ret.provider, p)
+ self.assertEqual(ret.route, "test")
+
+ @inlineCallbacks
+ def testNoRoute(self):
+ with self.session() as session:
+ u = User(name='test',apikey='abcdef123456789')
+ session.add(u)
+
+ exjob = yield exJobs.create(u, [Telnumber('123456789')], SMS('test'), [])
+
+ task=Task(Telnumber('123456789'), exjob)
+ d = task._run()
+ self.assertFailure(d, NoRouteForTask)
+
+
+class CompletetaskTests(TaskTestCase):
+ def setUp(self):
+ TaskTestCase.setUp(self)
+ taskPool.start(reactor)
+
+ def tearDown(self):
+ taskPool.pool.stop()
+ TaskTestCase.tearDown(self)
+
+# def testStart(self):
+# pass
+
+
+ #def testCreateFax(self):
+ # with self.session() as session:
+ # u = User(name='test',apikey='abcdef123456789')
+ # session.add(u)
+ # job = createJob(u,[Telnumber('0123325456')],Fax('header','fax',[]),[])
+
+ # self.assertEqual(taskPool.pool.q.qsize(),1)
+
+ #def testCreateMail(self):
+ # with self.session() as session:
+ # u = User(name='test',apikey='abcdef123456789')
+ # session.add(u)
+ # job = createJob(u,[],Mail('sub','body','t@t.de'),[])