github.com/matthewdale/lab@v0.14.0/cmd/issue_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_issueCmd(t *testing.T) {
    13  	var issueID string
    14  	t.Run("create", func(t *testing.T) {
    15  		repo := copyTestRepo(t)
    16  		cmd := exec.Command("../lab_bin", "issue", "create", "lab-testing",
    17  			"-m", "issue title",
    18  			"-m", "issue description",
    19  			"-l", "bug",
    20  			"-l", "critical",
    21  			"-a", "lab-testing")
    22  		cmd.Dir = repo
    23  
    24  		b, err := cmd.CombinedOutput()
    25  		if err != nil {
    26  			t.Log(string(b))
    27  			t.Fatal(err)
    28  		}
    29  
    30  		out := string(b)
    31  		require.Contains(t, out, "https://gitlab.com/lab-testing/test/issues/")
    32  
    33  		i := strings.Index(out, "\n")
    34  		issueID = strings.TrimPrefix(out[:i], "https://gitlab.com/lab-testing/test/issues/")
    35  		t.Log(issueID)
    36  	})
    37  	t.Run("show", func(t *testing.T) {
    38  		if issueID == "" {
    39  			t.Skip("issueID is empty, create likely failed")
    40  		}
    41  		repo := copyTestRepo(t)
    42  		cmd := exec.Command("../lab_bin", "issue", "show", "lab-testing", issueID)
    43  		cmd.Dir = repo
    44  
    45  		b, err := cmd.CombinedOutput()
    46  		if err != nil {
    47  			t.Log(string(b))
    48  			t.Fatal(err)
    49  		}
    50  		out := string(b)
    51  		require.Contains(t, out, "Project: lab-testing/test\n")
    52  		require.Contains(t, out, "Status: Open\n")
    53  		require.Contains(t, out, "Assignees: lab-testing\n")
    54  		require.Contains(t, out, fmt.Sprintf("#%s issue title", issueID))
    55  		require.Contains(t, out, "===================================\nissue description")
    56  		require.Contains(t, out, "Labels: bug, critical\n")
    57  		require.Contains(t, out, fmt.Sprintf("WebURL: https://gitlab.com/lab-testing/test/issues/%s", issueID))
    58  	})
    59  	t.Run("delete", func(t *testing.T) {
    60  		if issueID == "" {
    61  			t.Skip("issueID is empty, create likely failed")
    62  		}
    63  		repo := copyTestRepo(t)
    64  		cmd := exec.Command("../lab_bin", "issue", "lab-testing", "-d", issueID)
    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("Issue #%s closed", issueID))
    73  	})
    74  }
    75  
    76  func Test_issueCmd_noArgs(t *testing.T) {
    77  	repo := copyTestRepo(t)
    78  	cmd := exec.Command("../lab_bin", "issue")
    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 issue [flags]
    88    lab issue [command]`)
    89  }