package main import ( "testing" ) func TestParseEditContent_IssueFormat(t *testing.T) { tests := []struct { name string content string wantTitle string wantMessage string wantErr bool }{ { name: "simple title and message", content: "Title\n\nMessage body", wantTitle: "Title", wantMessage: "\nMessage body", wantErr: false, }, { name: "title with comment lines", content: ";; comment\nTitle\n\nMessage", wantTitle: "Title", wantMessage: "Message", wantErr: false, }, { name: "multiline message", content: "Title\n\nLine 1\nLine 2\nLine 3", wantTitle: "Title", wantMessage: "\nLine 1\nLine 2\nLine 3", wantErr: false, }, { name: "title only no message", content: "Title", wantTitle: "Title", wantMessage: "", wantErr: false, }, { name: "empty content", content: "", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "only comment lines", content: ";; comment 1\n;; comment 2", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "title with leading/trailing whitespace in lines", content: " Title \n\n Line 1 \n Line 2 ", wantTitle: "Title", wantMessage: "\n Line 1 \n Line 2 ", wantErr: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotTitle, gotMessage, err := parseEditContent(tt.content, false) if (err != nil) != tt.wantErr { t.Errorf("parseEditContent() error = %v, wantErr %v", err, tt.wantErr) return } if gotTitle != tt.wantTitle { t.Errorf("parseEditContent() title = %q, want %q", gotTitle, tt.wantTitle) } if gotMessage != tt.wantMessage { t.Errorf("parseEditContent() message = %q, want %q", gotMessage, tt.wantMessage) } }) } } func TestParseEditContent_CommentFormat(t *testing.T) { tests := []struct { name string content string wantTitle string wantMessage string wantErr bool }{ { name: "simple comment", content: "Comment text", wantTitle: "", wantMessage: "Comment text", wantErr: false, }, { name: "multiline comment", content: "Line 1\nLine 2\nLine 3", wantTitle: "", wantMessage: "Line 1\nLine 2\nLine 3", wantErr: false, }, { name: "comment with instruction lines", content: ";; instruction\nComment text", wantTitle: "", wantMessage: "Comment text", wantErr: false, }, { name: "empty content", content: "", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "only whitespace", content: " \n ", wantTitle: "", wantMessage: "", wantErr: true, }, { name: "only comment lines", content: ";; comment 1\n;; comment 2", wantTitle: "", wantMessage: "", wantErr: true, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotTitle, gotMessage, err := parseEditContent(tt.content, true) if (err != nil) != tt.wantErr { t.Errorf("parseEditContent() error = %v, wantErr %v", err, tt.wantErr) return } if gotTitle != tt.wantTitle { t.Errorf("parseEditContent() title = %q, want %q", gotTitle, tt.wantTitle) } if gotMessage != tt.wantMessage { t.Errorf("parseEditContent() message = %q, want %q", gotMessage, tt.wantMessage) } }) } }