tests/job.py
branchdevel
changeset 142 7d0c1fa97123
parent 141 90c95fdd1e33
child 143 0b265608b6ce
equal deleted inserted replaced
141:90c95fdd1e33 142:7d0c1fa97123
     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)