Pārlūkot izejas kodu

Ensured Issue.New processes titles

arianagiroux 3 nedēļas atpakaļ
vecāks
revīzija
3b8b15ba93
3 mainītis faili ar 49 papildinājumiem un 15 dzēšanām
  1. 10 6
      issue.go
  2. 37 8
      issue_test.go
  3. 2 1
      tui.go

+ 10 - 6
issue.go

@@ -115,13 +115,17 @@ type Issue struct {
 }
 
 // Constrcutor for Issues
-func (i Issue) New(title string, status Field, tags VariadicField, blockedby VariadicField, path string) (issue Issue, err error) {
+func (i Issue) New(title string, description Field, status Field, tags VariadicField, blockedby VariadicField, path string) (issue Issue, err error) {
+	if len(title) == 0 {
+		title = parsePathToHuman(path)
+	}
 	return Issue{
-		Title:     title,
-		Status:    status,
-		Tags:      tags,
-		Blockedby: blockedby,
-		Path:      path,
+		Title:       title,
+		Description: description,
+		Status:      status,
+		Tags:        tags,
+		Blockedby:   blockedby,
+		Path:        path,
 	}, err
 }
 

+ 37 - 8
issue_test.go

@@ -7,8 +7,27 @@ import (
 )
 
 func Test_Issue_New(t *testing.T) {
-	testIssue := Issue{
-		Title:       "test 1",
+	// Custom title
+	customTitleIssue := Issue{
+		Title:       "custom-title",
+		Description: Field{Data: "test description\n", Path: "/description"},
+		Status:      Field{Data: "open:test\n", Path: "/status"},
+		Path:        "tests/bugs/test-1",
+
+		Tags: VariadicField{
+			Path: "/tags", Fields: []Field{
+				{Path: "tag1"},
+				{Path: "tag2"},
+			},
+		},
+		Blockedby: VariadicField{
+			Path: "/blockedby", Fields: []Field{
+				{Path: "blocker1"},
+				{Path: "blocker2"},
+			},
+		},
+	}
+	autoTitleIssue := Issue{
 		Description: Field{Data: "test description\n", Path: "/description"},
 		Status:      Field{Data: "open:test\n", Path: "/status"},
 		Path:        "tests/bugs/test-1",
@@ -27,13 +46,23 @@ func Test_Issue_New(t *testing.T) {
 		},
 	}
 
-	issue, _ := Issue.New(Issue{}, testIssue.Title, testIssue.Status, testIssue.Tags, testIssue.Blockedby, testIssue.Path)
+	ctIssue, _ := Issue.New(Issue{}, customTitleIssue.Title, customTitleIssue.Description,
+		customTitleIssue.Status, customTitleIssue.Tags, customTitleIssue.Blockedby, customTitleIssue.Path)
 
-	assert.Equal(t, testIssue.Title, issue.Title)
-	assert.Equal(t, testIssue.Status, issue.Status)
-	assert.Equal(t, testIssue.Tags, issue.Tags)
-	assert.Equal(t, testIssue.Blockedby, issue.Blockedby)
-	assert.Equal(t, testIssue.Path, issue.Path)
+	assert.Equal(t, customTitleIssue.Title, ctIssue.Title)
+	assert.Equal(t, customTitleIssue.Status, ctIssue.Status)
+	assert.Equal(t, customTitleIssue.Tags, ctIssue.Tags)
+	assert.Equal(t, customTitleIssue.Blockedby, ctIssue.Blockedby)
+	assert.Equal(t, customTitleIssue.Path, ctIssue.Path)
+
+	atIssue, _ := Issue.New(Issue{}, "", customTitleIssue.Description,
+		customTitleIssue.Status, customTitleIssue.Tags, customTitleIssue.Blockedby, customTitleIssue.Path)
+
+	assert.Equal(t, parsePathToHuman(autoTitleIssue.Path), atIssue.Title)
+	assert.Equal(t, autoTitleIssue.Status, atIssue.Status)
+	assert.Equal(t, autoTitleIssue.Tags, atIssue.Tags)
+	assert.Equal(t, autoTitleIssue.Blockedby, atIssue.Blockedby)
+	assert.Equal(t, autoTitleIssue.Path, atIssue.Path)
 }
 func Test_Issue_NewFromPath_err_bad_path(t *testing.T) {
 	testIssue := Issue{}

+ 2 - 1
tui.go

@@ -120,7 +120,7 @@ var (
 				Align(lipgloss.Left)
 )
 
-// Handles all view logic for [issue.Issue]
+// Handles all view logic for Issue structs
 func (m Model) renderIssue() tea.Msg {
 	var output string
 	// title
@@ -159,6 +159,7 @@ func (m Model) renderIssue() tea.Msg {
 	return borderStyle.Render(output)
 }
 
+// Handles all view logic for IssueCollection structs.
 func (m Model) renderIssueCollection() tea.Msg {
 	var output string
 	var left string