package link import "testing" func TestExtractLinks(t *testing.T) { tests := []struct { name string body string want []string }{ {"no links", "plain text with no links", nil}, {"single link", "see [[nginx config]] for details", []string{"nginx config"}}, {"multiple links", "see [[nginx config]] and [[deploy steps]]", []string{"nginx config", "deploy steps"}}, {"duplicate deduped", "[[foo]] then [[foo]] again", []string{"foo"}}, {"empty brackets", "empty [[ ]] ignored", nil}, {"just brackets no content", "[[]] empty", nil}, {"link with special chars", "see [[deploy: staging (v2)]]", []string{"deploy: staging (v2)"}}, {"link in markdown", "# heading\n\nsee [[my note]] for info", []string{"my note"}}, {"adjacent links", "[[one]][[two]]", []string{"one", "two"}}, {"partial brackets ignored", "not a [link] or [[incomplete", nil}, {"link with hash", "see [[#ops channel]]", []string{"#ops channel"}}, {"multiline body", "line one [[link one]]\nline two [[link two]]", []string{"link one", "link two"}}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := ExtractLinks(tt.body) if len(got) != len(tt.want) { t.Fatalf("got %v, want %v", got, tt.want) } for i := range got { if got[i] != tt.want[i] { t.Fatalf("got %v, want %v", got, tt.want) } } }) } }