package session import ( "strings" "testing" ) func TestFormatStartupNudge(t *testing.T) { tests := []struct { name string cfg StartupNudgeConfig wantSub []string // substrings that must appear wantNot []string // substrings that must NOT appear }{ { name: "assigned with mol-id", cfg: StartupNudgeConfig{ Recipient: "gastown/crew/gus", Sender: "deacon", Topic: "assigned", MolID: "gt-abc12", }, wantSub: []string{ "[GAS TOWN]", "gastown/crew/gus", "<- deacon", "assigned:gt-abc12", }, }, { name: "cold-start no mol-id", cfg: StartupNudgeConfig{ Recipient: "deacon", Sender: "mayor", Topic: "cold-start", }, wantSub: []string{ "[GAS TOWN]", "deacon", "<- mayor", "cold-start", }, // No wantNot - timestamp contains ":" }, { name: "handoff self", cfg: StartupNudgeConfig{ Recipient: "gastown/witness", Sender: "self", Topic: "handoff", }, wantSub: []string{ "[GAS TOWN]", "gastown/witness", "<- self", "handoff", }, }, { name: "mol-id only", cfg: StartupNudgeConfig{ Recipient: "gastown/polecats/Toast", Sender: "witness", MolID: "gt-xyz99", }, wantSub: []string{ "[GAS TOWN]", "gastown/polecats/Toast", "<- witness", "gt-xyz99", }, }, { name: "empty topic defaults to ready", cfg: StartupNudgeConfig{ Recipient: "deacon", Sender: "mayor", }, wantSub: []string{ "[GAS TOWN]", "ready", }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := FormatStartupNudge(tt.cfg) for _, sub := range tt.wantSub { if !strings.Contains(got, sub) { t.Errorf("FormatStartupNudge() = %q, want to contain %q", got, sub) } } for _, sub := range tt.wantNot { if strings.Contains(got, sub) { t.Errorf("FormatStartupNudge() = %q, should NOT contain %q", got, sub) } } }) } }