86 lines
2.3 KiB
Python
86 lines
2.3 KiB
Python
"""
|
|
Tests for the memory caching functionality.
|
|
"""
|
|
|
|
import time
|
|
import pytest
|
|
from penpot_mcp.utils.cache import MemoryCache
|
|
|
|
@pytest.fixture
|
|
def memory_cache():
|
|
"""Create a MemoryCache instance with a short TTL for testing."""
|
|
return MemoryCache(ttl_seconds=2)
|
|
|
|
def test_cache_set_get(memory_cache):
|
|
"""Test setting and getting a file from cache."""
|
|
test_data = {"test": "data"}
|
|
file_id = "test123"
|
|
|
|
# Set data in cache
|
|
memory_cache.set(file_id, test_data)
|
|
|
|
# Get data from cache
|
|
cached_data = memory_cache.get(file_id)
|
|
assert cached_data == test_data
|
|
|
|
def test_cache_expiration(memory_cache):
|
|
"""Test that cached files expire after TTL."""
|
|
test_data = {"test": "data"}
|
|
file_id = "test123"
|
|
|
|
# Set data in cache
|
|
memory_cache.set(file_id, test_data)
|
|
|
|
# Data should be available immediately
|
|
assert memory_cache.get(file_id) == test_data
|
|
|
|
# Wait for cache to expire
|
|
time.sleep(3)
|
|
|
|
# Data should be expired
|
|
assert memory_cache.get(file_id) is None
|
|
|
|
def test_cache_clear(memory_cache):
|
|
"""Test clearing the cache."""
|
|
test_data = {"test": "data"}
|
|
file_id = "test123"
|
|
|
|
# Set data in cache
|
|
memory_cache.set(file_id, test_data)
|
|
|
|
# Verify data is cached
|
|
assert memory_cache.get(file_id) == test_data
|
|
|
|
# Clear cache
|
|
memory_cache.clear()
|
|
|
|
# Verify data is gone
|
|
assert memory_cache.get(file_id) is None
|
|
|
|
def test_get_all_cached_files(memory_cache):
|
|
"""Test getting all cached files."""
|
|
test_data1 = {"test": "data1"}
|
|
test_data2 = {"test": "data2"}
|
|
|
|
# Set multiple files in cache
|
|
memory_cache.set("file1", test_data1)
|
|
memory_cache.set("file2", test_data2)
|
|
|
|
# Get all cached files
|
|
all_files = memory_cache.get_all_cached_files()
|
|
|
|
# Verify all files are present
|
|
assert len(all_files) == 2
|
|
assert all_files["file1"] == test_data1
|
|
assert all_files["file2"] == test_data2
|
|
|
|
# Wait for cache to expire
|
|
time.sleep(3)
|
|
|
|
# Verify expired files are removed
|
|
all_files = memory_cache.get_all_cached_files()
|
|
assert len(all_files) == 0
|
|
|
|
def test_cache_nonexistent_file(memory_cache):
|
|
"""Test getting a nonexistent file from cache."""
|
|
assert memory_cache.get("nonexistent") is None |