Files
life-echo/api/tests/test_memoir_tasks_redis.py
2026-03-11 11:27:32 +08:00

40 lines
1.3 KiB
Python

import unittest
from unittest.mock import Mock, patch
from api.tasks import memoir_tasks
from api.tasks.memoir_tasks import (
_acquire_chapter_lock,
_release_chapter_lock,
_update_task_status_sync,
)
class MemoirTasksRedisReuseTest(unittest.TestCase):
def setUp(self):
memoir_tasks._REDIS_CLIENTS.clear()
@patch("api.tasks.memoir_tasks.redis.from_url")
def test_chapter_lock_helpers_reuse_same_redis_client(self, from_url_mock):
client = Mock()
client.set.return_value = True
from_url_mock.return_value = client
self.assertTrue(_acquire_chapter_lock("user-1", "childhood"))
_release_chapter_lock("user-1", "childhood")
self.assertEqual(from_url_mock.call_count, 1)
client.set.assert_called_once()
client.delete.assert_called_once()
@patch("api.tasks.memoir_tasks.redis.from_url")
def test_task_status_updates_reuse_decode_response_client(self, from_url_mock):
client = Mock()
client.hget.return_value = None
from_url_mock.return_value = client
_update_task_status_sync("user-1", "task-1", "running")
_update_task_status_sync("user-1", "task-1", "success", {"processed": 1})
self.assertEqual(from_url_mock.call_count, 1)
client.hset.assert_called()