diff --git a/rq_retry_scheduler/scheduler.py b/rq_retry_scheduler/scheduler.py index e8bb998..7de1df6 100644 --- a/rq_retry_scheduler/scheduler.py +++ b/rq_retry_scheduler/scheduler.py @@ -132,6 +132,15 @@ def enqueue_jobs(self): queue.enqueue_job(job) self.remove_job(job.id) + def schedule(self): + """Returns the job ids and when they are scheduled to be queued""" + data = self.connection.zrange( + self.scheduler_jobs_key, 0, -1, withscores=True) + + return [ + (job_id, datetime.utcfromtimestamp(ts)) + for job_id, ts in data] + def run(self, burst=False): self.log.info('Starting RQ Retry Scheduler..') diff --git a/tests/conftest.py b/tests/conftest.py index e3f38db..d89528d 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -21,7 +21,7 @@ def connection(redis_db_num): try: yield conn finally: - conn.flushall() + conn.flushdb() @pytest.yield_fixture diff --git a/tests/test_queue.py b/tests/test_queue.py index 2f2e116..7a7d1a6 100644 --- a/tests/test_queue.py +++ b/tests/test_queue.py @@ -118,7 +118,7 @@ def test_schedule_job(mock, queue, connection): queue.schedule_job(job, dt) zadd.assert_called_with(queue.scheduler_jobs_key, util.to_unix(dt), job.id) - save.assert_called() + assert save.called def test_enqueue_job(mock, queue, connection): diff --git a/tests/test_scheduler.py b/tests/test_scheduler.py index ac82d3a..f4837e8 100644 --- a/tests/test_scheduler.py +++ b/tests/test_scheduler.py @@ -259,3 +259,19 @@ def test_make_repat_job(scheduler): assert repeat_job.func == job.func assert repeat_job.args == job.args assert repeat_job.kwargs == job.kwargs + + +def test_schedule(scheduler, mock, connection): + assert scheduler.schedule() == [] + + dt = datetime.utcnow().replace(microsecond=0) + scheduler.current_time = lambda: dt + + job_id = b'unittest' + + ret = [(job_id, to_unix(dt))] + mock.patch.object(connection, 'zrange', return_value=ret) + + expected = [(job_id, dt)] + + assert scheduler.schedule() == expected