diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/tasks/test_tasks.py | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/tasks/test_tasks.py b/tests/tasks/test_tasks.py index b66c2df058..267169f4fa 100644 --- a/tests/tasks/test_tasks.py +++ b/tests/tasks/test_tasks.py @@ -1,4 +1,5 @@ import dataclasses +import pickle from datetime import datetime from django.tasks import ( @@ -269,6 +270,31 @@ class TaskTestCase(SimpleTestCase): test_tasks.noop_task_async, ) + def test_pickle_task(self): + pickled_task = pickle.dumps(test_tasks.noop_task) + unpickled_task = pickle.loads(pickled_task) + + self.assertEqual(unpickled_task, test_tasks.noop_task) + + def test_unpickle_arbitrary_string(self): + kwargs = {"func": "does.not.exist.fake_task"} + msg = "Expected 'does.not.exist.fake_task' to point to a Task instance." + with self.assertRaisesMessage(ValueError, msg): + Task._reconstruct(kwargs) + + def test_unpickle_non_task_object(self): + kwargs = {"func": "builtins.any"} + msg = "Expected 'builtins.any' to point to a Task instance." + with self.assertRaisesMessage(ValueError, msg): + Task._reconstruct(kwargs) + + def test_pickle_task_result(self): + result = test_tasks.noop_task.enqueue() + pickled_result = pickle.dumps(result) + unpickled_result = pickle.loads(pickled_result) + + self.assertEqual(unpickled_result, result) + @override_settings(TASKS={}) def test_no_backends(self): with self.assertRaises(InvalidTaskBackend): |
