mirror of
https://github.com/calibrain/shelfmark.git
synced 2026-07-31 06:46:39 -04:00
31 lines
1.1 KiB
Python
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
|