Files
shelfmark/tests/irc/test_cache.py
2026-06-17 14:25:31 -04:00

31 lines
1.1 KiB
Python

from shelfmark.release_sources import Release
from shelfmark.release_sources.irc import cache
def test_cache_results_round_trip_by_query_identity(monkeypatch):
"""The whole answer (all content types) is cached under one query identity."""
state = {"entries": {}, "version": 1}
monkeypatch.setattr(cache, "_load_cache", lambda: state)
monkeypatch.setattr(cache, "_save_cache", lambda _cache: None)
ebook_release = Release(
source="irc", source_id="ebook", title="Shared Title", format="epub", content_type="ebook"
)
audiobook_release = Release(
source="irc",
source_id="audio",
title="Shared Title",
format="mp3",
content_type="audiobook",
)
key = "irc.example.net:ebooks:words of radiance"
cache.cache_results(key, "words of radiance", [ebook_release, audiobook_release])
cached = cache.get_cached_results(key, ttl_seconds=60)
assert {release.source_id for release in cached["releases"]} == {"ebook", "audio"}
# A different query identity is isolated.
assert cache.get_cached_results("irc.example.net:ebooks:other query", ttl_seconds=60) is None