diff --git a/rq/queue.py b/rq/queue.py index 9d2357f..dc961b8 100644 --- a/rq/queue.py +++ b/rq/queue.py @@ -111,6 +111,12 @@ class Queue(object): script = self.connection.register_script(script) return script(keys=[self.key]) + def delete(self): + """Deletes the queue and all the associated messages on the queue.""" + self.empty() + self.connection.srem(self.redis_queues_keys, self._key) + self.connection.delete(self._key) + def is_empty(self): """Returns whether the current queue is empty.""" return self.count == 0 diff --git a/tests/test_queue.py b/tests/test_queue.py index 7129452..5a6aa20 100644 --- a/tests/test_queue.py +++ b/tests/test_queue.py @@ -72,6 +72,20 @@ class TestQueue(RQTestCase): self.testconn.rpush('rq:queue:example', 'sentinel message') self.assertEqual(q.is_empty(), False) + def test_queue_delete(self): + """Test queue.delete properly removes queue""" + q = Queue('example') + self.testconn.rpush('rq:queue:example', 'foo') + self.testconn.rpush('rq:queue:example', 'bar') + + self.assertEqual(2, len(q.get_job_ids())) + + q.delete() + + self.assertEqual(0, len(q.get_job_ids())) + self.assertEqual(0, len(self.testconn.smembers(Queue.redis_queues_keys))) + self.assertEqual(False, self.testconn.exists(q.key)) + def test_remove(self): """Ensure queue.remove properly removes Job from queue.""" q = Queue('example')