tests/offer.py
branchdevel
changeset 157 0192f9107870
parent 150 c6896c3374c4
child 159 fbd7364b252d
--- a/tests/offer.py	Mon Feb 13 22:18:06 2012 +0100
+++ b/tests/offer.py	Mon Feb 13 22:19:31 2012 +0100
@@ -1,12 +1,14 @@
 from twisted.internet import reactor
 from twisted.internet.defer import inlineCallbacks
 
+import io
+
 from iro.model import offer
 from iro.config import config
-
-from iro.offer.offer import Offer
+from iro.offer import Offer, providers as OfferProviders, Provider
 from iro.model.schema import User, Offer as DBOffer, Userright
 from iro.controller.pool  import dbPool
+from iro.error import NoProvider
 from .dbtestcase import DBTestCase
 
 class TestOffers(DBTestCase):
@@ -18,6 +20,11 @@
     def tearDown(self):
         dbPool.pool.stop()
         offer.offers.clear()
+        try:
+            del(OfferProviders["test"])
+        except KeyError:
+            pass
+        offer.providers.clear()
         DBTestCase.tearDown(self)
 
     def testReloadList(self):
@@ -60,7 +67,7 @@
             o=DBOffer(name="oh", provider="bla", route="a", typ="sms")
             u.rights.append(Userright(o)) 
         
-        offer.offers={"bla":Offer("bla",["a","b","c"])}
+        offer.providers={"bla":Provider("bla",None, ["a","b","c"])}
 
         for l in [['bla'],['oh'],['oh','bla'],['bla','oh']]:
             ret = yield offer.extendProvider(u, "sms", l)
@@ -77,7 +84,7 @@
             o=DBOffer(name="a", provider="bla", route="b", typ="sms")
             u.rights.append(Userright(o)) 
         
-        offer.offers={"bla":Offer("bla",["a","b","c"])}
+        offer.providers={"bla":Provider("bla", None, ["a","b","c"])}
 
         ret = yield offer.extendProvider(u, "sms",  ["bla"])
         self.assertEqual(ret, ["oh","a"])
@@ -88,3 +95,36 @@
         ret = yield offer.extendProvider(u, "sms",  ["bla", "a"])
         self.assertEqual(ret, ["oh","a"])
 
+    @inlineCallbacks
+    def testLoadOffers(self):
+        
+        class TestProvider(Provider):
+            def __init__(self,name,config):
+                Provider.__init__(self,name,config,["a",])
+        
+        with self.session() as session:
+            session.add(DBOffer(name="oh", provider="p", route="a", typ="sms"))
+
+        sample_config = """[p]
+typ = test
+"""
+        config.readfp(io.BytesIO(sample_config))
+        OfferProviders["test"]=TestProvider
+        yield offer.loadOffers()        
+        self.assertEqual(offer.offers.keys(),["oh"])
+        self.assertEqual(offer.providers.keys(),["p"])
+        self.assertEqual(offer.providers["p"].name,"p")
+        self.assertEqual(offer.providers["p"].typ,"test")
+        self.assertEqual(offer.offers["oh"],Offer(provider=offer.providers["p"], name="oh", route="a", typ="sms"))
+
+    def testLoadOffersUnknown(self):
+        with self.session() as session:
+            session.add(DBOffer(name="oh", provider="p", route="a", typ="sms"))
+
+        sample_config = """[p]
+typ = unknown
+"""
+        config.readfp(io.BytesIO(sample_config))
+        d = offer.loadOffers()        
+        self.assertFailure(d, NoProvider)
+