1
0
mirror of https://github.com/scrapy/scrapy.git synced 2025-02-28 12:44:38 +00:00
scrapy/scrapyd/tests/test_spiderqueue.py

67 lines
1.9 KiB
Python
Raw Normal View History

from twisted.internet.defer import inlineCallbacks, maybeDeferred
from twisted.trial import unittest
from zope.interface.verify import verifyObject
from scrapyd.interfaces import ISpiderQueue
from scrapyd.spiderqueue import SqliteSpiderQueue
class SpiderQueueTest(unittest.TestCase):
"""This test case can be used easily for testing other SpiderQueue's by
just changing the _get_queue() method. It also supports queues with
deferred methods.
"""
def setUp(self):
self.q = self._get_queue()
self.name = 'spider1'
self.args = {'arg1': 'val1', 'arg2': 2}
self.msg = self.args.copy()
self.msg['name'] = self.name
def _get_queue(self):
return SqliteSpiderQueue(':memory:')
def test_interface(self):
verifyObject(ISpiderQueue, self.q)
@inlineCallbacks
def test_add_pop_count(self):
c = yield maybeDeferred(self.q.count)
self.assertEqual(c, 0)
yield maybeDeferred(self.q.add, self.name, **self.args)
c = yield maybeDeferred(self.q.count)
self.assertEqual(c, 1)
m = yield maybeDeferred(self.q.pop)
self.assertEqual(m, self.msg)
c = yield maybeDeferred(self.q.count)
self.assertEqual(c, 0)
@inlineCallbacks
def test_list(self):
l = yield maybeDeferred(self.q.list)
self.assertEqual(l, [])
yield maybeDeferred(self.q.add, self.name, **self.args)
yield maybeDeferred(self.q.add, self.name, **self.args)
l = yield maybeDeferred(self.q.list)
self.assertEqual(l, [self.msg, self.msg])
@inlineCallbacks
def test_clear(self):
yield maybeDeferred(self.q.add, self.name, **self.args)
yield maybeDeferred(self.q.add, self.name, **self.args)
c = yield maybeDeferred(self.q.count)
self.assertEqual(c, 2)
yield maybeDeferred(self.q.clear)
c = yield maybeDeferred(self.q.count)
self.assertEqual(c, 0)