package decode import ( "testing" "gitea.lab.audasmedia.com.au/sam/compass_teams_nhs/internal/store" ) func testCodes() store.CodeMap { return store.CodeMap{ Subject: map[string]string{"7SCF": "Year 7 Science", "11MGMAC2": "Year 11 General Maths"}, Room: map[string]string{"H14LAB": "Room H14LAB", "B11": "Room B11"}, Teacher: map[string]string{"KNI": "Mr KNI", "GT": "Mr GT"}, Period: map[string]string{"C": "Connect"}, } } // TestPeriodDecodesKnownCodes proves FR-17: a lesson reads as plain English. func TestPeriodDecodesKnownCodes(t *testing.T) { cases := map[string]string{ "1 - 7SCF - H14LAB - KNI": "Period 1 — Year 7 Science — Room H14LAB — Mr KNI", "3 - 11MGMAC2 - B11 - GT": "Period 3 — Year 11 General Maths — Room B11 — Mr GT", "C - 11MGMAC2 - B11 - GT": "Connect — Year 11 General Maths — Room B11 — Mr GT", "RLE GROUP D - IM1 - RLE": "RLE GROUP D — IM1 — RLE", "5 - 11HLEGB5 - D8": "Period 5 — 11HLEGB5 — D8", "2 - 11HLEGB5": "Period 2 — 11HLEGB5", } for raw, want := range cases { if got := Period(raw, testCodes()); got != want { t.Errorf("Period(%q) = %q, want %q", raw, got, want) } } } // TestPeriodUnknownCodesRenderRaw proves the fallback: a code that is not in // the editable map renders as the raw code, never blank (FR-17). func TestPeriodUnknownCodesRenderRaw(t *testing.T) { got := Period("1 - 7ZZZ - Z99 - ZZZ", testCodes()) want := "Period 1 — 7ZZZ — Z99 — ZZZ" if got != want { t.Errorf("Period = %q, want %q", got, want) } } // TestPeriodLeavesEventsAlone proves a school event is not mangled by the // lesson decoder. func TestPeriodLeavesEventsAlone(t *testing.T) { raw := "End of Year Senior Music Concert - HALL - KSH, CFR" if got := Period(raw, testCodes()); got != raw { t.Errorf("Period = %q, want the event unchanged", got) } }