Spaces:
Running
Running
| """ | |
| Tests for in-memory forensics cache. | |
| """ | |
| import pytest | |
| from backend.core.cache import ForensicsCache | |
| def cache(): | |
| """Fresh cache instance for each test.""" | |
| return ForensicsCache() | |
| def sample_report(): | |
| """Sample forensic report for caching.""" | |
| return { | |
| "file_info": {"filename": "test.png"}, | |
| "summary": {"ai_probability": 0.3} | |
| } | |
| def test_cache_miss_on_empty(cache, sample_image_bytes): | |
| """Empty cache returns None.""" | |
| result = cache.get(sample_image_bytes) | |
| assert result is None | |
| def test_cache_set_and_get(cache, sample_image_bytes, sample_report): | |
| """Store and retrieve report correctly.""" | |
| cache.set(sample_image_bytes, sample_report) | |
| result = cache.get(sample_image_bytes) | |
| assert result is not None | |
| assert result["summary"]["ai_probability"] == 0.3 | |
| def test_cache_hit_adds_metadata(cache, sample_image_bytes, sample_report): | |
| """Cache hit includes cache_info metadata.""" | |
| cache.set(sample_image_bytes, sample_report) | |
| result = cache.get(sample_image_bytes) | |
| assert "cache_info" in result | |
| assert result["cache_info"]["cached"] is True | |
| assert result["cache_info"]["cache_hit"] is True | |
| def test_cache_different_files(cache, sample_image_bytes, sample_report): | |
| """Different files get different cache entries.""" | |
| different_bytes = b"different_file_content" | |
| cache.set(sample_image_bytes, sample_report) | |
| assert cache.get(sample_image_bytes) is not None | |
| assert cache.get(different_bytes) is None | |
| def test_cache_size(cache, sample_image_bytes, sample_report): | |
| """Cache size increments correctly.""" | |
| assert cache.size() == 0 | |
| cache.set(sample_image_bytes, sample_report) | |
| assert cache.size() == 1 | |
| def test_cache_clear(cache, sample_image_bytes, sample_report): | |
| """Cache clear removes all entries.""" | |
| cache.set(sample_image_bytes, sample_report) | |
| cache.clear() | |
| assert cache.size() == 0 | |
| assert cache.get(sample_image_bytes) is None | |