def testRoundTrip(self): s = Store() DecimalDoodad(store=s, integral=19947, money=Decimal("4.3"), otherMoney=Decimal("-17.94")) self.assertEqual(s.findFirst(DecimalDoodad).integral, 19947) self.assertEqual(s.findFirst(DecimalDoodad).money, Decimal("4.3")) self.assertEqual(s.findFirst(DecimalDoodad).otherMoney, Decimal("-17.9400"))
def testRoundTrip(self): s = Store() DecimalDoodad(store=s, integral=19947, money=Decimal("4.3"), otherMoney=Decimal("-17.94")) gc.collect() # Force the item to be reloaded from the database self.assertEquals(s.findFirst(DecimalDoodad).integral, 19947) self.assertEquals(s.findFirst(DecimalDoodad).money, Decimal("4.3")) self.assertEquals(s.findFirst(DecimalDoodad).otherMoney, Decimal("-17.9400"))
def testRoundTrip(self): s = Store() DecimalDoodad(store=s, integral=19947, money=Decimal("4.3"), otherMoney=Decimal("-17.94")) gc.collect() # Force the item to be reloaded from the database self.assertEquals(s.findFirst(DecimalDoodad).integral, 19947) self.assertEquals(s.findFirst(DecimalDoodad).money, Decimal("4.3")) self.assertEquals( s.findFirst(DecimalDoodad).otherMoney, Decimal("-17.9400"))
class TwinodeResolver(object): def __init__(self, storeName): self.db = Store(storeName) def query(self, query, timeout=None): name = query.name.name parts = name.split(".") found = False domain = None hostpart = None i = 0 # Get the base domain by walking down the domain name, from most specific to not while domain == None: if i > len(parts): # No domains! return defer.fail(error.DomainError()) domainParts = ".".join(parts[i:]) hostpart = ".".join(parts[0:i]) try: domain = self.db.findFirst(Domain, Domain.domain == domainParts) except KeyError: pass i = i+1 # Find out what they're querying, and check if we have anything under it. if query.type == dns.A: try: record = self.db.findFirst(ARecord, ARecord.host == hostpart) except KeyError: # We don't have a resource under this domain with this host. return defer.fail(error.DomainError()) answer = dns.RRHeader(name=name, payload=dns.Record_A(address=record.target), ttl=record.ttl) return defer.succeed(([answer], [], [])) # We don't handle that kind of record return defer.fail(error.DomainError())
class MoreComposeActionsTestCase(TestCase): """ Test compose-action related stuff that requires an on-disk store. """ def setUp(self): self.store = Store(dbdir=self.mktemp()) installOn(inbox.Inbox(store=self.store), self.store) self.composer = compose.Composer(store=self.store) installOn(self.composer, self.store) LoginMethod(store=self.store, internal=False, protocol=u'email', localpart=u'recipient', domain=u'host', verified=True, account=self.store) self.msg = testMessageFactory( store=self.store, spam=False, impl=DummyMessageImplWithABunchOfAddresses(store=self.store)) self.msgDetail = MessageDetail(self.msg) def test_setStatus(self): """ Test that statuses requested for parent messages get set after the created message is sent. """ # (bypass Item.__setattr__) object.__setattr__(self.composer, 'sendMessage', lambda fromA, toA, msg: None) class MsgStub: impl = MIMEPart() statuses = None def addStatus(self, status): if self.statuses is None: self.statuses = [status] else: self.statuses.append(status) parent = MsgStub() parent.impl.headers = [ Header("message-id", "<*****@*****.**>"), Header("references", "<*****@*****.**>"), Header("references", "<*****@*****.**>") ] toAddresses = [ mimeutil.EmailAddress('*****@*****.**', mimeEncoded=False) ] cf = self.msgDetail._composeSomething(toAddresses, u'Sup dood', u'A body', [], parent, REPLIED_STATUS) cf._sendOrSave(self.store.findFirst(smtpout.FromAddress), toAddresses, u'Sup dood', u'A body', [], [], [], False) self.assertEqual(parent.statuses, [REPLIED_STATUS])
class MoreComposeActionsTestCase(TestCase): """ Test compose-action related stuff that requires an on-disk store. """ def setUp(self): self.store = Store(dbdir=self.mktemp()) installOn(inbox.Inbox(store=self.store), self.store) self.composer = compose.Composer(store=self.store) installOn(self.composer, self.store) LoginMethod(store=self.store, internal=False, protocol=u'email', localpart=u'recipient', domain=u'host', verified=True, account=self.store) self.msg = testMessageFactory( store=self.store, spam=False, impl=DummyMessageImplWithABunchOfAddresses(store=self.store)) self.msgDetail = MessageDetail(self.msg) def test_setStatus(self): """ Test that statuses requested for parent messages get set after the created message is sent. """ # (bypass Item.__setattr__) object.__setattr__(self.composer, 'sendMessage', lambda fromA, toA, msg: None) class MsgStub: impl = MIMEPart() statuses = None def addStatus(self, status): if self.statuses is None: self.statuses = [status] else: self.statuses.append(status) parent = MsgStub() parent.impl.headers = [Header("message-id", "<*****@*****.**>"), Header("references", "<*****@*****.**>"), Header("references", "<*****@*****.**>")] toAddresses = [mimeutil.EmailAddress( '*****@*****.**', mimeEncoded=False)] cf = self.msgDetail._composeSomething( toAddresses, u'Sup dood', u'A body', [], parent, REPLIED_STATUS) cf._sendOrSave(self.store.findFirst(smtpout.FromAddress), toAddresses, u'Sup dood', u'A body', [], [], [], False) self.assertEqual(parent.statuses, [REPLIED_STATUS])
def test_brokenReferenceException(self): """ Test that an exception is raised when a broken reference is detected when this should be impossible (ie. CASCADE or NULLIFY). """ store = Store() referee = Referee(store=store, topSecret=0) referent = BreakingReferent(store=store, ref=referee) referee.deleteFromStore() referent = None gc.collect() referent = store.findFirst(BreakingReferent) self.patch(BreakingReferent.ref, 'whenDeleted', reference.CASCADE) self.assertRaises(BrokenReference, lambda: referent.ref)
def test_brokenReferenceException(self): """ Test that an exception is raised when a broken reference is detected when this should be impossible (ie. CASCADE or NULLIFY). """ store = Store() referee = Referee(store=store, topSecret=0) referent = BreakingReferent(store=store, ref=referee) referee.deleteFromStore() referent = None gc.collect() referent = store.findFirst(BreakingReferent) self.patch(BreakingReferent.ref, 'whenDeleted', reference.CASCADE) self.assertRaises(BrokenReference, lambda: referent.ref)
class ContentTypeTest(unittest.TestCase): def setUp(self): self.store = Store() self.site = Site(store=self.store, title=u"Tech News") self.site.registerContentType(Page) self.site.registerContentType(Article) contentTypes = list(self.site.getContentTypes()) self.assertEquals(len(contentTypes), 2) def test_basic(self): articleNevow = Article(store=self.store, title=u"Introducing Nevow, one kickass web framework.") self.site.addContent(articleNevow) self.assertTrue(articleNevow.path == u"news") contentType = self.store.findFirst(ContentType, ContentType.name == u"News Item") self.assertTrue(contentType == IContent(articleNevow).type) content = list(self.site.getContentForType(contentType)) self.assertEquals(len(content), 1) self.assertEquals(content[0], articleNevow)
def testRoundTrip(self): s = Store() Number(store=s, value=7.1) n = s.findFirst(Number) self.assertEqual(n.value, 7.1)