github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/cmd/snippet_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_snippetCmd_personal(t *testing.T) { 13 t.Parallel() 14 repo := copyTestRepo(t) 15 var snipID string 16 t.Run("create_personal", func(t *testing.T) { 17 cmd := exec.Command("../lab_bin", "snippet", "-g", 18 "-m", "personal snippet title", 19 "-m", "personal snippet description") 20 cmd.Dir = repo 21 22 rc, err := cmd.StdinPipe() 23 if err != nil { 24 t.Fatal(err) 25 } 26 27 _, err = rc.Write([]byte("personal snippet contents")) 28 if err != nil { 29 t.Fatal(err) 30 } 31 err = rc.Close() 32 if err != nil { 33 t.Fatal(err) 34 } 35 36 b, err := cmd.CombinedOutput() 37 if err != nil { 38 t.Log(string(b)) 39 t.Fatal(err) 40 } 41 42 out := string(b) 43 require.Contains(t, out, "https://gitlab.com/snippets/") 44 45 i := strings.Index(out, "\n") 46 snipID = strings.TrimPrefix(out[:i], "https://gitlab.com/snippets/") 47 t.Log(snipID) 48 }) 49 t.Run("list_personal", func(t *testing.T) { 50 if snipID == "" { 51 t.Skip("snipID is empty, create likely failed") 52 } 53 cmd := exec.Command("../lab_bin", "snippet", "-l", "-g") 54 cmd.Dir = repo 55 56 b, err := cmd.CombinedOutput() 57 if err != nil { 58 t.Log(string(b)) 59 t.Fatal(err) 60 } 61 62 snips := strings.Split(string(b), "\n") 63 t.Log(snips) 64 require.Contains(t, snips, fmt.Sprintf("#%s personal snippet title", snipID)) 65 }) 66 t.Run("delete_personal", func(t *testing.T) { 67 if snipID == "" { 68 t.Skip("snipID is empty, create likely failed") 69 } 70 cmd := exec.Command("../lab_bin", "snippet", "-g", "-d", snipID) 71 cmd.Dir = repo 72 73 b, err := cmd.CombinedOutput() 74 if err != nil { 75 t.Log(string(b)) 76 t.Fatal(err) 77 } 78 require.Contains(t, string(b), fmt.Sprintf("Snippet #%s deleted", snipID)) 79 }) 80 } 81 82 func Test_snippetCmd_noArgs(t *testing.T) { 83 repo := copyTestRepo(t) 84 cmd := exec.Command("../lab_bin", "snippet") 85 cmd.Dir = repo 86 87 b, err := cmd.CombinedOutput() 88 if err != nil { 89 t.Log(string(b)) 90 t.Fatal(err) 91 } 92 require.Contains(t, string(b), `Usage: 93 lab snippet [flags] 94 lab snippet [command]`) 95 }