--- /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()