59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
import time
|
|
|
|
import tempfile
|
|
from pathlib import Path
|
|
|
|
from app.cache import FileCache
|
|
from app.main import get_cache
|
|
from app.settings import Settings
|
|
|
|
|
|
def test_cache_returns_fresh_entry() -> None:
|
|
with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir:
|
|
cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=10)
|
|
cache.set_json("sample", {"x": 1})
|
|
|
|
entry = cache.get_json("sample")
|
|
|
|
assert entry is not None
|
|
assert entry.stale is False
|
|
assert entry.value == {"x": 1}
|
|
|
|
|
|
def test_cache_can_serve_stale_when_requested() -> None:
|
|
with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir:
|
|
cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=0)
|
|
cache.set_json("sample", {"x": 1})
|
|
time.sleep(0.01)
|
|
|
|
fresh = cache.get_json("sample")
|
|
stale = cache.get_json("sample", allow_stale=True)
|
|
|
|
assert fresh is None
|
|
assert stale is not None
|
|
assert stale.stale is True
|
|
assert stale.value == {"x": 1}
|
|
|
|
|
|
def test_cache_is_disabled_when_not_configured() -> None:
|
|
settings = Settings(
|
|
_env_file=None,
|
|
GITHUB_USERNAME="octocat",
|
|
GITEA_BASE_URL="https://gitea.example.com",
|
|
GITEA_USERNAME="octocat",
|
|
)
|
|
|
|
cache = get_cache(settings)
|
|
|
|
assert cache is None
|
|
|
|
|
|
def test_cache_works_in_workspace_tempdir() -> None:
|
|
with tempfile.TemporaryDirectory(dir=Path.cwd()) as temp_dir:
|
|
cache = FileCache(cache_dir=temp_dir, default_ttl_seconds=10)
|
|
cache.set_json("sample", {"x": 1})
|
|
entry = cache.get_json("sample")
|
|
|
|
assert entry is not None
|
|
assert entry.value == {"x": 1}
|