From 22d51b37ccbdd52245400f1eee79fb551de7c8d2 Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Fri, 27 Dec 2024 21:50:00 +0000 Subject: [PATCH] Ensure return value is correctly exposed using database backend It seems the return value was always `None`, regardless of if the task actually returned a value. Fixes #131 --- django_tasks/backends/database/models.py | 1 + tests/tests/test_database_backend.py | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/django_tasks/backends/database/models.py b/django_tasks/backends/database/models.py index e70c6af..720157c 100644 --- a/django_tasks/backends/database/models.py +++ b/django_tasks/backends/database/models.py @@ -167,6 +167,7 @@ def task_result(self) -> "TaskResult[T]": object.__setattr__(task_result, "_exception_class", exception_class) object.__setattr__(task_result, "_traceback", self.traceback or None) + object.__setattr__(task_result, "_return_value", self.return_value) return task_result diff --git a/tests/tests/test_database_backend.py b/tests/tests/test_database_backend.py index 25237cc..989e4a8 100644 --- a/tests/tests/test_database_backend.py +++ b/tests/tests/test_database_backend.py @@ -127,6 +127,7 @@ def test_refresh_result(self) -> None: status=ResultStatus.SUCCEEDED, started_at=timezone.now(), finished_at=timezone.now(), + return_value=42, ) self.assertEqual(result.status, ResultStatus.NEW) @@ -139,6 +140,7 @@ def test_refresh_result(self) -> None: self.assertIsNotNone(result.finished_at) self.assertEqual(result.status, ResultStatus.SUCCEEDED) self.assertTrue(result.is_finished) + self.assertEqual(result.return_value, 42) async def test_refresh_result_async(self) -> None: result = await default_task_backend.aenqueue( @@ -149,6 +151,7 @@ async def test_refresh_result_async(self) -> None: status=ResultStatus.SUCCEEDED, started_at=timezone.now(), finished_at=timezone.now(), + return_value=42, ) self.assertEqual(result.status, ResultStatus.NEW) @@ -160,6 +163,7 @@ async def test_refresh_result_async(self) -> None: self.assertIsNotNone(result.finished_at) self.assertEqual(result.status, ResultStatus.SUCCEEDED) self.assertTrue(result.is_finished) + self.assertEqual(result.return_value, 42) def test_get_missing_result(self) -> None: with self.assertRaises(ResultDoesNotExist):