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  }