Files
photoanalyzer/tests/unit/test_thumbnail_cache_key.py

38 lines
1.1 KiB
Python

"""Cache-key golden rules: keyed by pixel hash + size + version, so identity
changes invalidate and EXIF-only changes reuse."""
from photo_pipeline.models import Asset
from photo_pipeline.services.thumbnails import THUMB_VERSION, ThumbnailService
def _asset(pixel=None, sha="deadbeef"):
return Asset(
id="a1",
original_path="a.jpg",
current_path="a.jpg",
current_sha256=sha,
pixel_sha256=pixel,
hash_version=1,
)
def test_key_is_pixel_size_and_version():
key = ThumbnailService._cache_key(_asset(pixel="PIX"), 512)
assert key == f"PIX-512-v{THUMB_VERSION}"
def test_different_size_changes_key():
asset = _asset(pixel="PIX")
assert ThumbnailService._cache_key(asset, 256) != ThumbnailService._cache_key(asset, 512)
def test_different_pixels_change_key():
assert ThumbnailService._cache_key(_asset(pixel="P1"), 512) != ThumbnailService._cache_key(
_asset(pixel="P2"), 512
)
def test_undecodable_asset_keys_by_source_bytes():
key = ThumbnailService._cache_key(_asset(pixel=None, sha="abc123"), 256)
assert key == f"src:abc123-256-v{THUMB_VERSION}"