forked from ChelseaKR/gtfs-scorecard
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_campaigns.py
More file actions
93 lines (79 loc) · 2.9 KB
/
Copy pathtest_campaigns.py
File metadata and controls
93 lines (79 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
"""Tests for bounded cohort support campaigns."""
from __future__ import annotations
import datetime as dt
import pytest
from scorecard_pipeline.campaigns import (
build_program_campaign,
render_program_campaign_markdown,
)
def _artifact(agency_id: str, code: str | None, *, days: int = 90) -> dict[str, object]:
findings = (
[{"code": code, "count": 3, "what": "Fields are unknown.", "fix": "Export values."}]
if code
else []
)
return {
"snapshot_date": "2026-07-01",
"agency": {"id": agency_id, "name": agency_id.title()},
"overall": {"grade": "F", "score": 20},
"categories": {
"completeness": {"status": "measured", "findings": findings},
"freshness": {
"status": "measured",
"details": {"days_until_expiry": days},
"findings": [],
},
},
}
def test_campaign_targets_one_theme_without_scores_or_ranking() -> None:
plan = build_program_campaign(
rollup_id="district",
rollup_name="District",
kind="accessibility-fields",
artifacts=[
_artifact("alpha", "scorecard_wheelchair_boarding_unknown"),
_artifact("beta", None),
],
as_of=dt.date(2026, 7, 2),
)
assert plan["baseline"] == {
"as_of": "2026-07-02",
"agencies_checked": 2,
"agencies_targeted": 1,
"agencies_already_clear": 1,
}
assert [target["agency_id"] for target in plan["targets"]] == ["alpha"]
assert "score" not in plan["targets"][0]
assert "ranking" in plan["fairness_note"]
def test_calendar_campaign_uses_coverage_even_without_notice_code() -> None:
plan = build_program_campaign(
rollup_id="r",
rollup_name="Region",
kind="calendar-renewal",
artifacts=[_artifact("soon", None, days=12), _artifact("current", None, days=60)],
as_of=dt.date(2026, 7, 2),
)
assert [target["agency_id"] for target in plan["targets"]] == ["soon"]
assert plan["targets"][0]["findings"][0]["code"] == "calendar_coverage_below_30_days"
def test_markdown_leads_with_goal_and_closeout() -> None:
plan = build_program_campaign(
rollup_id="r",
rollup_name="Region",
kind="rider-information",
artifacts=[_artifact("one", "missing_trip_headsign")],
as_of=dt.date(2026, 7, 2),
)
markdown = render_program_campaign_markdown(plan)
assert "**Goal:**" in markdown
assert "## Agency worklist" in markdown
assert "## Closeout" in markdown
assert "not an agency ranking" in markdown
def test_unknown_campaign_is_rejected() -> None:
with pytest.raises(ValueError, match="unknown campaign kind"):
build_program_campaign(
rollup_id="r",
rollup_name="Region",
kind="leaderboard",
artifacts=[],
as_of=dt.date(2026, 7, 2),
)