--- 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)
+