github.com/ianfoo/lab@v0.9.5-0.20180123060006-5ed79f2ccfc7/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",
    26  			"-m", "mr title",
    27  			"-m", "mr description",
    28  		)
    29  		cmd.Dir = repo
    30  
    31  		b, _ = cmd.CombinedOutput()
    32  		out := string(b)
    33  		t.Log(out)
    34  		require.Contains(t, out, "https://gitlab.com/lab-testing/test/merge_requests")
    35  
    36  		i := strings.Index(out, "/diffs\n")
    37  		mrID = strings.TrimPrefix(out[:i], "https://gitlab.com/lab-testing/test/merge_requests/")
    38  		t.Log(mrID)
    39  	})
    40  	t.Run("show", func(t *testing.T) {
    41  		if mrID == "" {
    42  			t.Skip("mrID is empty, create likely failed")
    43  		}
    44  		cmd := exec.Command("../lab_bin", "mr", "show", "lab-testing", mrID)
    45  		cmd.Dir = repo
    46  
    47  		b, err := cmd.CombinedOutput()
    48  		if err != nil {
    49  			t.Log(string(b))
    50  			t.Fatal(err)
    51  		}
    52  		out := string(b)
    53  		require.Contains(t, out, "Project: lab-testing/test\n")
    54  		require.Contains(t, out, "Branches: mrtest->master\n")
    55  		require.Contains(t, out, "Status: Open\n")
    56  		require.Contains(t, out, fmt.Sprintf("#%s mr title", mrID))
    57  		require.Contains(t, out, "===================================\nmr description")
    58  		require.Contains(t, out, fmt.Sprintf("WebURL: https://gitlab.com/lab-testing/test/merge_requests/%s", mrID))
    59  	})
    60  	t.Run("delete", func(t *testing.T) {
    61  		if mrID == "" {
    62  			t.Skip("mrID is empty, create likely failed")
    63  		}
    64  		cmd := exec.Command("../lab_bin", "mr", "lab-testing", "-d", mrID)
    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("Merge Request #%s closed", mrID))
    73  	})
    74  }
    75  
    76  func Test_mrCmd_noArgs(t *testing.T) {
    77  	repo := copyTestRepo(t)
    78  	cmd := exec.Command("../lab_bin", "mr")
    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 mr [flags]
    88    lab mr [command]`)
    89  }