Run library, checks and downloads in background threads with parallel fetching
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
"""Tests for prune version-selection logic (MetadataStore._select_versions_to_keep)."""
|
||||
|
||||
from src.config import MetadataStore
|
||||
from src.models import DownloadedInstaller, GameRecord, InstallerType, PruneStrategy
|
||||
|
||||
|
||||
def _record(version_years: dict[str, int]) -> GameRecord:
|
||||
"""Build a GameRecord with one installer per (version, year)."""
|
||||
installers = [
|
||||
DownloadedInstaller(
|
||||
filename=f"setup_{v}.exe",
|
||||
size=1,
|
||||
version=v,
|
||||
language="en",
|
||||
installer_type=InstallerType.GAME,
|
||||
downloaded_at=f"{year}-01-01T00:00:00",
|
||||
)
|
||||
for v, year in version_years.items()
|
||||
]
|
||||
return GameRecord(game_id="1", name="Game", installers=installers)
|
||||
|
||||
|
||||
VERSION_YEARS = {"1": 2020, "2": 2020, "3": 2021, "4": 2022, "5": 2022}
|
||||
ALL = ["1", "2", "3", "4", "5"]
|
||||
|
||||
|
||||
def _keep(strategy: PruneStrategy, keep_latest: int = 1) -> set[str]:
|
||||
record = _record(VERSION_YEARS)
|
||||
return MetadataStore._select_versions_to_keep(record, ALL, keep_latest, strategy)
|
||||
|
||||
|
||||
def test_returns_all_when_fewer_than_keep() -> None:
|
||||
record = _record({"1": 2020})
|
||||
assert MetadataStore._select_versions_to_keep(record, ["1"], 1, PruneStrategy.LATEST_N) == {"1"}
|
||||
|
||||
|
||||
def test_latest_n_keeps_only_recent() -> None:
|
||||
assert _keep(PruneStrategy.LATEST_N, keep_latest=1) == {"5"}
|
||||
assert _keep(PruneStrategy.LATEST_N, keep_latest=2) == {"4", "5"}
|
||||
|
||||
|
||||
def test_latest_n_oldest_adds_first() -> None:
|
||||
assert _keep(PruneStrategy.LATEST_N_OLDEST, keep_latest=1) == {"1", "5"}
|
||||
|
||||
|
||||
def test_yearly_keeps_one_per_year_plus_latest() -> None:
|
||||
assert _keep(PruneStrategy.YEARLY, keep_latest=1) == {"2", "3", "5"}
|
||||
|
||||
|
||||
def test_latest_n_yearly_oldest_combines_all() -> None:
|
||||
assert _keep(PruneStrategy.LATEST_N_YEARLY_OLDEST, keep_latest=1) == {"1", "2", "3", "5"}
|
||||
Reference in New Issue
Block a user