class MessageLogPutTestCase(unittest.TestCase): """ Тест на L{spamfighter.rules.log.messageLogPut}. """ def setUp(self): startUpTestTimer(100) getDefaultDomain().set('testStorage', DomainMemoryStorage(storage=MemoryStorage(cleanupInterval=0))) self.log = MessageLog(storage='testStorage') getDefaultDomain().set('testLog', self.log) self.message1 = TransitMessage(serialized={ 'text' : u'мама'}).getMessage(getDefaultDomain()) self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain()) def tearDown(self): tearDownTestTimer() getDefaultDomain().delete('testStorage') getDefaultDomain().delete('testLog') def testNoLog(self): return defer.maybeDeferred(messageLogPut, log="__noSUCHLOG__", domain=getDefaultDomain(), message=self.message1).addCallback(lambda _: self.assert_(False)) \ .addErrback(lambda failure: failure.trap("spamfighter.core.commands.errors.AttributeKeyException")) def testNotALog(self): return defer.maybeDeferred(messageLogPut, log="messageDomain", domain=getDefaultDomain(), message=self.message1).addCallback(lambda _: self.assert_(False)) \ .addErrback(lambda failure: failure.trap("spamfighter.core.commands.errors.NotAMessageLogError")) def testPut1(self): return defer.maybeDeferred(messageLogPut, log="testLog", domain=getDefaultDomain(), message=self.message2).addCallback(lambda _: self.log.fetch()) \ .addCallback(self.assertEquals, [LogEntry(when=100, tags=[], message=TransitMessage(message=self.message2), id=1)]) def testPut2(self): return defer.maybeDeferred(messageLogPut, log="testLog", domain=getDefaultDomain(), message=self.message1, tag='oops').addCallback(lambda _: self.log.fetch()) \ .addCallback(self.assertEquals, [LogEntry(when=100, tags=['oops'], message=TransitMessage(message=self.message1), id=1)])
class MessageLogTestCase(unittest.TestCase): """ Тест на L{spamfighter.core.log.MessageLog}. """ def setUp(self): getDefaultDomain().set('testStorage', DomainMemoryStorage(storage=MemoryStorage(cleanupInterval=0))) self.message1 = TransitMessage(serialized={ 'text' : u'мама мыла раму папы'}).getMessage(getDefaultDomain()) self.message2 = TransitMessage(serialized={ 'text' : u'папа'}).getMessage(getDefaultDomain()) self.message3 = TransitMessage(serialized={ 'text' : u'привет всем в чате!'}).getMessage(getDefaultDomain()) self.message4 = TaggedMessage(TransitMessage(serialized={ 'text' : u'и тебе привет!',}).getMessage(getDefaultDomain())) self.message4.addTag('good') self.message4.addTag('bad') startUpTestTimer(1000) self.log = MessageLog(storage='testStorage') getDefaultDomain().set('testLog', self.log) def tearDown(self): tearDownTestTimer() getDefaultDomain().delete('testLog') getDefaultDomain().delete('testStorage') def testInterface(self): ziv.verifyClass(IMessageLog, MessageLog) def testPutFetch(self): return self.log.put(self.message1).addCallback(lambda _: self.log.fetch()) \ .addCallback(self.assertEquals, [LogEntry(when=1000, message=self.message1, id=1)] ) def testPutFetchLong(self): return self.log.put(self.message1).addCallback(lambda _: advanceTestTimer(989)).addCallback(lambda _: self.log.fetch()) \ .addCallback(self.assertEquals, [LogEntry(when=1000, message=self.message1, id=1)] ) \ .addCallback(lambda _: advanceTestTimer(1)).addCallback(lambda _: self.log.fetch()).addCallback(self.assertEquals, []) def testFirst(self): return defer.DeferredList([self.log.put(self.message2, when=when) for when in [850, 852, 900, 901, 920]]) \ .addCallback(lambda _: self.log.fetch(first=852)) \ .addCallback(lambda result: self.assertEquals([852, 900, 901, 920], map(lambda i: i.when, result))) def testLast(self): return defer.DeferredList([self.log.put(self.message2, when=when) for when in [850, 852, 900, 901, 920]]) \ .addCallback(lambda _: self.log.fetch(last=900)) \ .addCallback(lambda result: self.assertEquals([850, 852, 900], map(lambda i: i.when, result))) def testFirstLast(self): return defer.DeferredList([self.log.put(self.message2, when=when) for when in [850, 852, 900, 901, 920]]) \ .addCallback(lambda _: self.log.fetch(first=852, last=901)) \ .addCallback(lambda result: self.assertEquals([852, 900, 901], map(lambda i: i.when, result))) def testFirstWithShift(self): return defer.DeferredList([self.log.put(self.message2, when=when) for when in [850, 852, 900, 901, 920]]) \ .addCallback(lambda _: advanceTestTimer(500)).addCallback(lambda _: self.log.fetch(first=852)) \ .addCallback(lambda result: self.assertEquals([852, 900, 901, 920], map(lambda i: i.when, result))) def testFirstID(self): return defer.DeferredList([self.log.put(self.message2, when=when) for when in [850, 852, 900, 901, 920]]) \ .addCallback(lambda _: self.log.fetch(first=800, firstID=3)) \ .addCallback(lambda result: self.assertEquals([900, 901, 920], map(lambda i: i.when, result))) def testPickling(self): import pickle l = pickle.loads(pickle.dumps(self.log))