Local changes: Updated model training, removed debug instrumentation, and configuration improvements
This commit is contained in:
92
tests/unit/core/test_redis.py
Normal file
92
tests/unit/core/test_redis.py
Normal file
@@ -0,0 +1,92 @@
|
||||
"""Tests for Redis client wrapper."""
|
||||
|
||||
import pytest
|
||||
from unittest.mock import Mock, patch, MagicMock, AsyncMock
|
||||
|
||||
|
||||
class TestRedisClient:
|
||||
"""Tests for RedisClient class."""
|
||||
|
||||
@patch('src.core.redis.get_config')
|
||||
def test_get_client_creates_connection(self, mock_config):
|
||||
"""Test that get_client creates a Redis connection."""
|
||||
# Setup mock config
|
||||
mock_config.return_value.get.return_value = {
|
||||
"host": "localhost",
|
||||
"port": 6379,
|
||||
"db": 0,
|
||||
"password": None,
|
||||
"socket_connect_timeout": 5
|
||||
}
|
||||
|
||||
from src.core.redis import RedisClient
|
||||
|
||||
client = RedisClient()
|
||||
|
||||
# Should not have connected yet
|
||||
assert client._client is None
|
||||
|
||||
# Get client should trigger connection
|
||||
with patch('src.core.redis.redis.ConnectionPool') as mock_pool:
|
||||
with patch('src.core.redis.redis.Redis') as mock_redis:
|
||||
redis_client = client.get_client()
|
||||
|
||||
mock_pool.assert_called_once()
|
||||
mock_redis.assert_called_once()
|
||||
|
||||
@patch('src.core.redis.get_config')
|
||||
def test_get_client_reuses_existing(self, mock_config):
|
||||
"""Test that get_client reuses existing connection."""
|
||||
mock_config.return_value.get.return_value = {
|
||||
"host": "localhost",
|
||||
"port": 6379,
|
||||
"db": 0,
|
||||
}
|
||||
|
||||
from src.core.redis import RedisClient
|
||||
|
||||
client = RedisClient()
|
||||
|
||||
# Pre-set a mock client
|
||||
mock_redis = Mock()
|
||||
client._client = mock_redis
|
||||
|
||||
# Should return existing
|
||||
result = client.get_client()
|
||||
assert result is mock_redis
|
||||
|
||||
@patch('src.core.redis.get_config')
|
||||
@pytest.mark.asyncio
|
||||
async def test_close_connection(self, mock_config):
|
||||
"""Test closing Redis connection."""
|
||||
mock_config.return_value.get.return_value = {"host": "localhost"}
|
||||
|
||||
from src.core.redis import RedisClient
|
||||
|
||||
client = RedisClient()
|
||||
mock_redis = AsyncMock()
|
||||
client._client = mock_redis
|
||||
|
||||
await client.close()
|
||||
|
||||
mock_redis.aclose.assert_called_once()
|
||||
|
||||
|
||||
class TestGetRedisClient:
|
||||
"""Tests for get_redis_client singleton."""
|
||||
|
||||
@patch('src.core.redis.get_config')
|
||||
def test_returns_singleton(self, mock_config):
|
||||
"""Test that get_redis_client returns same instance."""
|
||||
mock_config.return_value.get.return_value = {"host": "localhost"}
|
||||
|
||||
# Reset the global
|
||||
import src.core.redis as redis_module
|
||||
redis_module._redis_client = None
|
||||
|
||||
from src.core.redis import get_redis_client
|
||||
|
||||
client1 = get_redis_client()
|
||||
client2 = get_redis_client()
|
||||
|
||||
assert client1 is client2
|
||||
Reference in New Issue
Block a user