tests/job.py
branchdevel
changeset 135 f8640c663e3e
child 140 75d0eaaa871d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/job.py	Tue Feb 07 01:56:59 2012 +0100
@@ -0,0 +1,107 @@
+import unittest
+
+from iro.controller.task import createJob
+
+from iro.model.job import jobs, Job
+
+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.telnumber import Telnumber
+
+from iro.error import JobNotFound
+from iro.validate import vHash
+
+
+from .dbtestcase import DBTestCase, setUpModule, tearDownModule
+
+#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 JobsTest(DBTestCase):
+    '''tests for jobs'''
+
+    def tearDown(self):
+        jobs.clear()
+        DBTestCase.tearDown(self)
+
+    def testCreate(self):
+        with self.session() as session:
+            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))
+
+        with self.session() as session:
+            j = session.query(DBJob.hash).all()
+            self.assertEqual(j,[(job.id,)])
+
+        self.assertEqual(jobs[job.id],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
+
+        self.assertEqual(len(jobs), 1)
+        self.assertEqual(job, jobs['a1'])
+
+    def testGetFromDB(self):
+        with self.session() as session:
+            u = User(name='test',apikey='abcdef123456789')
+            job = DBJob(hash='a1', 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')
+
+    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
+
+class JobTest(DBTestCase):
+    def testCreateSMS(self):
+        job = createJob([],SMS('sms'),[])
+        pass
+
+    def testCreateFax(self):
+        job = createJob([],Fax('header','fax',[]),[])
+        pass
+
+    def testCreateMail(self):
+        job = createJob([],Mail('sub','body','t@t.de'),[])
+    
+
+if __name__ == '__main__':
+        unittest.main()