tests/job.py
branchdevel
changeset 140 75d0eaaa871d
parent 135 f8640c663e3e
child 141 90c95fdd1e33
--- a/tests/job.py	Thu Feb 09 17:35:23 2012 +0100
+++ b/tests/job.py	Thu Feb 09 17:36:31 2012 +0100
@@ -1,42 +1,41 @@
 import unittest
+from Queue import deque
 
-from iro.controller.task import createJob
+from iro.controller.task import createJob, Task
+from iro.controller.pool  import taskPool
 
-from iro.model.job import jobs, Job
+from iro.model.job import exJobs, ExJob
 
 from iro.model.pool import data
 
 from iro.model.message import SMS, Fax, Mail
-from iro.model.schema import Job as DBJob, User
+from iro.model.schema import Job, User
 from iro.telnumber import Telnumber
 
-from iro.error import JobNotFound
-from iro.validate import vHash
+from iro.validate import vInteger
 
 
-from .dbtestcase import DBTestCase, setUpModule, tearDownModule
+from .dbtestcase import DBTestCase
 
 #activates all logging we can get.
 
-from twisted.python import log
-import logging
-logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(name)s(%(processName)s)-%(levelname)s: %(message)s')
-observer = log.PythonLoggingObserver()
-observer.start()
-
 class DumpPool():
     def run(self, f,*a,**k):
         return f(*a,**k)
 
 
-data.pool=DumpPool()
-
+class exJobsTest(DBTestCase):
+    '''tests for exJobs'''
 
-class JobsTest(DBTestCase):
-    '''tests for jobs'''
+    def setUp(self):
+        DBTestCase.setUp(self)
+        self.pool = data.pool
+        data.pool = DumpPool()
 
     def tearDown(self):
-        jobs.clear()
+        exJobs.clear()
+        data.pool = self.pool
+        self.pool = None
         DBTestCase.tearDown(self)
 
     def testCreate(self):
@@ -44,63 +43,87 @@
             u = User(name='test',apikey='abcdef123456789')
             session.add(u)
 
-        job = jobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
-        self.assertIsInstance(job, Job)
-        self.assertTrue(vHash(job.id, None, 40, 40))
+        job = exJobs.create(u, [Telnumber('123456789')], SMS('test'), ['test'])
+        self.assertIsInstance(job, ExJob)
+        self.assertTrue(vInteger(job.dbjob, None, minv=0 ))
+        self.assertEqual(job.message, SMS('test'))
+        self.assertEqual(job.recipients,  [Telnumber('123456789')])
+        self.assertEqual(job.offers,['test'])
+        self.assertEqual(job.tasks,{})
 
         with self.session() as session:
-            j = session.query(DBJob.hash).all()
-            self.assertEqual(j,[(job.id,)])
+            j = session.query(Job.id).all()
+            self.assertEqual(j,[(job.dbjob,)])
 
-        self.assertEqual(jobs[job.id],job)
+        self.assertEqual(exJobs[job.dbjob],job)
 
     def testGet(self):
         with self.session() as session:
             u = User(name='test',apikey='abcdef123456789')
             session.add(u)
 
-        job = Job(u, [Telnumber('123456789')], SMS('test'), ['test'])
-        jobs['a1'] = job
+        job = ExJob(None, [Telnumber('123456789')], SMS('test'), ['test'])
+        exJobs[1] = job
 
-        self.assertEqual(len(jobs), 1)
-        self.assertEqual(job, jobs['a1'])
+        self.assertEqual(len(exJobs), 1)
+        self.assertEqual(job, exJobs[1])
 
     def testGetFromDB(self):
         with self.session() as session:
             u = User(name='test',apikey='abcdef123456789')
-            job = DBJob(hash='a1', info="info", status="started")
+            job = Job( info="info", status="started")
             u.jobs.append(job)
             session.add(u)
 
         with self.session() as session:
             job = session.merge(job)
             u = session.merge(u)
-            self.assertEqual(repr(jobs['a1'].dbjob),repr(job))
-            self.assertEqual(repr(jobs['a1'].user),repr(u))
-            self.assertEqual(jobs['a1'].info, 'info')
+            ejob= ExJob(job.id, [Telnumber('123456789')], SMS('test'), ['test'])
+            exJobs[job.id]=ejob
+            self.assertEqual(job.extend, ejob)
+            self.assertEqual(u.jobs[0].extend,ejob)
 
-    def testUnknownJob(self):
-        with self.assertRaises(JobNotFound):
-            Job.fromDB('a1234567890')
-
-        with self.assertRaises(KeyError):
-            jobs['a1234567890']
-
-    @unittest.skip('test not implemented')
-    def testSyncroniced(self):
-        pass
+    def testUnknownExJob(self):
+        self.assertRaises(KeyError,exJobs.__getitem__,'a1234567890')
 
 class JobTest(DBTestCase):
+   
+    def setUp(self):
+        DBTestCase.setUp(self)
+        self.pool = data.pool
+        data.pool = DumpPool()
+
+    def tearDown(self):
+        exJobs.clear()
+        data.pool = self.pool
+        self.pool = None
+        taskPool.pool.q.queue = deque()
+        DBTestCase.tearDown(self)
+    
     def testCreateSMS(self):
-        job = createJob([],SMS('sms'),[])
-        pass
+        with self.session() as session:
+            u = User(name='test',apikey='abcdef123456789')
+            session.add(u)
+        exjob = createJob(u,[Telnumber('0123325456')],SMS('sms'),[])
+        self.assertEqual(taskPool.pool.q.qsize(),1)
+        self.assertEqual(exjob.tasks.keys(),[Telnumber('0123325456')])
+        self.assertIsInstance(exjob.tasks[Telnumber('0123325456')], Task)
+
+
 
     def testCreateFax(self):
-        job = createJob([],Fax('header','fax',[]),[])
-        pass
+        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):
-        job = createJob([],Mail('sub','body','t@t.de'),[])
+        with self.session() as session:
+            u = User(name='test',apikey='abcdef123456789')
+            session.add(u)
+        job = createJob(u,[],Mail('sub','body','t@t.de'),[])
     
 
 if __name__ == '__main__':