mtg_python_deckbuilder/code/tests/test_theme_summary_telemetry.py

61 lines
1.8 KiB
Python

from __future__ import annotations
from deck_builder.summary_telemetry import (
_reset_metrics_for_test,
get_theme_metrics,
record_theme_summary,
)
def setup_function() -> None:
_reset_metrics_for_test()
def teardown_function() -> None:
_reset_metrics_for_test()
def test_record_theme_summary_tracks_user_themes() -> None:
payload = {
"commanderThemes": ["Lifegain"],
"userThemes": ["Angels", "Life Gain"],
"requested": ["Angels"],
"resolved": ["angels"],
"unresolved": [],
"mode": "AND",
"weight": 1.3,
"themeCatalogVersion": "test-cat",
}
record_theme_summary(payload)
metrics = get_theme_metrics()
assert metrics["total_builds"] == 1
assert metrics["with_user_themes"] == 1
summary = metrics["last_summary"]
assert summary is not None
assert summary["commanderThemes"] == ["Lifegain"]
assert summary["userThemes"] == ["Angels", "Life Gain"]
assert summary["mergedThemes"] == ["Lifegain", "Angels", "Life Gain"]
assert summary["unresolvedCount"] == 0
assert metrics["top_user_themes"][0]["theme"] in {"Angels", "Life Gain"}
def test_record_theme_summary_without_user_themes() -> None:
payload = {
"commanderThemes": ["Artifacts"],
"userThemes": [],
"requested": [],
"resolved": [],
"unresolved": [],
"mode": "AND",
"weight": 1.0,
}
record_theme_summary(payload)
metrics = get_theme_metrics()
assert metrics["total_builds"] == 1
assert metrics["with_user_themes"] == 0
summary = metrics["last_summary"]
assert summary is not None
assert summary["commanderThemes"] == ["Artifacts"]
assert summary["userThemes"] == []
assert summary["mergedThemes"] == ["Artifacts"]
assert summary["unresolvedCount"] == 0