40 lines
1.3 KiB
Python
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()
|