Spaces:
Sleeping
Sleeping
| """Durable weekly impact metrics (server/impact.py).""" | |
| import importlib | |
| import pytest | |
| from server import impact | |
| def _clean(): | |
| impact.reset() | |
| yield | |
| impact.reset() | |
| def test_record_and_read_roundtrip(): | |
| impact.record_capture(3, conflicts_caught=1) | |
| w = impact.this_week() | |
| assert w["events_captured"] == 3 | |
| assert w["conflicts_caught"] == 1 | |
| # default estimate: 3*8 + 1*15 | |
| assert w["minutes_saved"] == 3 * 8 + 1 * 15 | |
| def test_accumulates_across_calls(): | |
| impact.record_capture(2) | |
| impact.record_capture(1, conflicts_caught=2) | |
| w = impact.this_week() | |
| assert w["events_captured"] == 3 | |
| assert w["conflicts_caught"] == 2 | |
| def test_persists_across_restart(): | |
| """this_week() reads from disk each call, so a fresh import sees prior data.""" | |
| impact.record_capture(5) | |
| reloaded = importlib.reload(impact) | |
| assert reloaded.this_week()["events_captured"] == 5 | |
| def test_week_rollover_keeps_weeks_separate(monkeypatch): | |
| # one _week_key() call per record_capture / this_week | |
| weeks = iter(["2026-W23", "2026-W24"]) | |
| monkeypatch.setattr(impact, "_week_key", lambda when=None: next(weeks)) | |
| impact.record_capture(2) # writes W23 | |
| this = impact.this_week() # reads W24 -> empty | |
| assert this["events_captured"] == 0 | |
| # both weeks coexist in the file | |
| data = impact._load() | |
| assert data["2026-W23"]["events_captured"] == 2 | |
| def test_minutes_saved_env_override(monkeypatch): | |
| monkeypatch.setenv("IMPACT_MIN_PER_EVENT", "12") | |
| monkeypatch.setenv("IMPACT_MIN_PER_CONFLICT", "20") | |
| impact.record_capture(2, conflicts_caught=1) | |
| assert impact.this_week()["minutes_saved"] == 2 * 12 + 1 * 20 | |
| def test_this_week_defaults_to_zero(): | |
| w = impact.this_week() | |
| assert w == {"events_captured": 0, "conflicts_caught": 0, "minutes_saved": 0} | |