summaryrefslogtreecommitdiff
path: root/tests/test_cli.py
diff options
context:
space:
mode:
authorJosh Cohen <joshuasteelers@me.com>2021-08-23 20:40:29 -0400
committerGitHub <noreply@github.com>2021-08-24 07:40:29 +0700
commitb80045d615d539cf4c565c5541694efe13ea648e (patch)
tree7957b9aea90eca368d2623ebb31a4da80fb36081 /tests/test_cli.py
parent246d52b977275e1ae4848a56a07bac0266e6595a (diff)
downloadrq-b80045d615d539cf4c565c5541694efe13ea648e.tar.gz
Respect serializer (#1538)
* Add serializer where missing in code * Fix cli * Pass option to command * Add tests for serializer option * Merge branch 'master' into respect-serializer - Update enqueue cli to resp. serializer * Address @selwin's review
Diffstat (limited to 'tests/test_cli.py')
-rw-r--r--tests/test_cli.py65
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/test_cli.py b/tests/test_cli.py
index e653355..72fc510 100644
--- a/tests/test_cli.py
+++ b/tests/test_cli.py
@@ -168,6 +168,45 @@ class TestRQCli(RQTestCase):
self.assertNotIn(job2, registry)
self.assertNotIn(job3, registry)
+ def test_requeue_with_serializer(self):
+ """rq requeue -u <url> -S <serializer> --all"""
+ connection = Redis.from_url(self.redis_url)
+ queue = Queue('requeue', connection=connection, serializer=JSONSerializer)
+ registry = queue.failed_job_registry
+
+ runner = CliRunner()
+
+ job = queue.enqueue(div_by_zero)
+ job2 = queue.enqueue(div_by_zero)
+ job3 = queue.enqueue(div_by_zero)
+
+ worker = Worker([queue], serializer=JSONSerializer)
+ worker.work(burst=True)
+
+ self.assertIn(job, registry)
+ self.assertIn(job2, registry)
+ self.assertIn(job3, registry)
+
+ result = runner.invoke(
+ main,
+ ['requeue', '-u', self.redis_url, '--queue', 'requeue', '-S', 'rq.serializers.JSONSerializer', job.id]
+ )
+ self.assert_normal_execution(result)
+
+ # Only the first specified job is requeued
+ self.assertNotIn(job, registry)
+ self.assertIn(job2, registry)
+ self.assertIn(job3, registry)
+
+ result = runner.invoke(
+ main,
+ ['requeue', '-u', self.redis_url, '--queue', 'requeue', '-S', 'rq.serializers.JSONSerializer', '--all']
+ )
+ self.assert_normal_execution(result)
+ # With --all flag, all failed jobs are requeued
+ self.assertNotIn(job2, registry)
+ self.assertNotIn(job3, registry)
+
def test_info(self):
"""rq info -u <url>"""
runner = CliRunner()
@@ -398,6 +437,32 @@ class TestRQCli(RQTestCase):
worker.work(True)
self.assertEqual(Job(job_id).result, 'Hi there, Stranger!')
+ def test_cli_enqueue_with_serializer(self):
+ """rq enqueue -u <url> -S rq.serializers.JSONSerializer tests.fixtures.say_hello"""
+ queue = Queue(connection=self.connection, serializer=JSONSerializer)
+ self.assertTrue(queue.is_empty())
+
+ runner = CliRunner()
+ result = runner.invoke(main, ['enqueue', '-u', self.redis_url, '-S', 'rq.serializers.JSONSerializer', 'tests.fixtures.say_hello'])
+ self.assert_normal_execution(result)
+
+ prefix = 'Enqueued tests.fixtures.say_hello() with job-id \''
+ suffix = '\'.\n'
+
+ print(result.stdout)
+
+ self.assertTrue(result.stdout.startswith(prefix))
+ self.assertTrue(result.stdout.endswith(suffix))
+
+ job_id = result.stdout[len(prefix):-len(suffix)]
+ queue_key = 'rq:queue:default'
+ self.assertEqual(self.connection.llen(queue_key), 1)
+ self.assertEqual(self.connection.lrange(queue_key, 0, -1)[0].decode('ascii'), job_id)
+
+ worker = Worker(queue, serializer=JSONSerializer)
+ worker.work(True)
+ self.assertEqual(Job(job_id, serializer=JSONSerializer).result, 'Hi there, Stranger!')
+
def test_cli_enqueue_args(self):
"""rq enqueue -u <url> tests.fixtures.echo hello ':[1, {"key": "value"}]' json:=["abc"] nojson=def"""
queue = Queue(connection=self.connection)