github.com/matthewdale/lab@v0.14.0/cmd/mr_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_mrCmd(t *testing.T) { 13 t.Parallel() 14 repo := copyTestRepo(t) 15 var mrID string 16 t.Run("create", func(t *testing.T) { 17 git := exec.Command("git", "checkout", "mrtest") 18 git.Dir = repo 19 b, err := git.CombinedOutput() 20 if err != nil { 21 t.Log(string(b)) 22 t.Fatal(err) 23 } 24 25 cmd := exec.Command("../lab_bin", "mr", "create", "lab-testing", "master", 26 "-m", "mr title", 27 "-m", "mr description", 28 "-a", "lab-testing", 29 ) 30 cmd.Dir = repo 31 32 b, _ = cmd.CombinedOutput() 33 out := string(b) 34 t.Log(out) 35 require.Contains(t, out, "https://gitlab.com/lab-testing/test/merge_requests") 36 37 i := strings.Index(out, "/diffs\n") 38 mrID = strings.TrimPrefix(out[:i], "https://gitlab.com/lab-testing/test/merge_requests/") 39 t.Log(mrID) 40 }) 41 t.Run("show", func(t *testing.T) { 42 if mrID == "" { 43 t.Skip("mrID is empty, create likely failed") 44 } 45 cmd := exec.Command("../lab_bin", "mr", "show", "lab-testing", mrID) 46 cmd.Dir = repo 47 48 b, err := cmd.CombinedOutput() 49 if err != nil { 50 t.Log(string(b)) 51 t.Fatal(err) 52 } 53 out := string(b) 54 require.Contains(t, out, "Project: lab-testing/test\n") 55 require.Contains(t, out, "Branches: mrtest->master\n") 56 require.Contains(t, out, "Status: Open\n") 57 require.Contains(t, out, "Assignee: lab-testing\n") 58 require.Contains(t, out, fmt.Sprintf("#%s mr title", mrID)) 59 require.Contains(t, out, "===================================\nmr description") 60 require.Contains(t, out, fmt.Sprintf("WebURL: https://gitlab.com/lab-testing/test/merge_requests/%s", mrID)) 61 }) 62 t.Run("delete", func(t *testing.T) { 63 if mrID == "" { 64 t.Skip("mrID is empty, create likely failed") 65 } 66 cmd := exec.Command("../lab_bin", "mr", "lab-testing", "-d", mrID) 67 cmd.Dir = repo 68 69 b, err := cmd.CombinedOutput() 70 if err != nil { 71 t.Log(string(b)) 72 t.Fatal(err) 73 } 74 require.Contains(t, string(b), fmt.Sprintf("Merge Request #%s closed", mrID)) 75 }) 76 } 77 78 func Test_mrCmd_noArgs(t *testing.T) { 79 repo := copyTestRepo(t) 80 cmd := exec.Command("../lab_bin", "mr") 81 cmd.Dir = repo 82 83 b, err := cmd.CombinedOutput() 84 if err != nil { 85 t.Log(string(b)) 86 t.Fatal(err) 87 } 88 require.Contains(t, string(b), `Usage: 89 lab mr [flags] 90 lab mr [command]`) 91 }