github.com/matthewdale/lab@v0.14.0/cmd/issue_test.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "os/exec" 6 "strings" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 ) 11 12 func Test_issueCmd(t *testing.T) { 13 var issueID string 14 t.Run("create", func(t *testing.T) { 15 repo := copyTestRepo(t) 16 cmd := exec.Command("../lab_bin", "issue", "create", "lab-testing", 17 "-m", "issue title", 18 "-m", "issue description", 19 "-l", "bug", 20 "-l", "critical", 21 "-a", "lab-testing") 22 cmd.Dir = repo 23 24 b, err := cmd.CombinedOutput() 25 if err != nil { 26 t.Log(string(b)) 27 t.Fatal(err) 28 } 29 30 out := string(b) 31 require.Contains(t, out, "https://gitlab.com/lab-testing/test/issues/") 32 33 i := strings.Index(out, "\n") 34 issueID = strings.TrimPrefix(out[:i], "https://gitlab.com/lab-testing/test/issues/") 35 t.Log(issueID) 36 }) 37 t.Run("show", func(t *testing.T) { 38 if issueID == "" { 39 t.Skip("issueID is empty, create likely failed") 40 } 41 repo := copyTestRepo(t) 42 cmd := exec.Command("../lab_bin", "issue", "show", "lab-testing", issueID) 43 cmd.Dir = repo 44 45 b, err := cmd.CombinedOutput() 46 if err != nil { 47 t.Log(string(b)) 48 t.Fatal(err) 49 } 50 out := string(b) 51 require.Contains(t, out, "Project: lab-testing/test\n") 52 require.Contains(t, out, "Status: Open\n") 53 require.Contains(t, out, "Assignees: lab-testing\n") 54 require.Contains(t, out, fmt.Sprintf("#%s issue title", issueID)) 55 require.Contains(t, out, "===================================\nissue description") 56 require.Contains(t, out, "Labels: bug, critical\n") 57 require.Contains(t, out, fmt.Sprintf("WebURL: https://gitlab.com/lab-testing/test/issues/%s", issueID)) 58 }) 59 t.Run("delete", func(t *testing.T) { 60 if issueID == "" { 61 t.Skip("issueID is empty, create likely failed") 62 } 63 repo := copyTestRepo(t) 64 cmd := exec.Command("../lab_bin", "issue", "lab-testing", "-d", issueID) 65 cmd.Dir = repo 66 67 b, err := cmd.CombinedOutput() 68 if err != nil { 69 t.Log(string(b)) 70 t.Fatal(err) 71 } 72 require.Contains(t, string(b), fmt.Sprintf("Issue #%s closed", issueID)) 73 }) 74 } 75 76 func Test_issueCmd_noArgs(t *testing.T) { 77 repo := copyTestRepo(t) 78 cmd := exec.Command("../lab_bin", "issue") 79 cmd.Dir = repo 80 81 b, err := cmd.CombinedOutput() 82 if err != nil { 83 t.Log(string(b)) 84 t.Fatal(err) 85 } 86 require.Contains(t, string(b), `Usage: 87 lab issue [flags] 88 lab issue [command]`) 89 }