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  }