summaryrefslogtreecommitdiffstats
path: root/pkg/commands/git_commands/flow_test.go
blob: 3ee2e91a5d35be1cded4db201dae9672c581540b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package git_commands

import (
	"testing"

	"github.com/jesseduffield/lazygit/pkg/commands/git_config"
	"github.com/stretchr/testify/assert"
)

func TestStartCmdObj(t *testing.T) {
	scenarios := []struct {
		testName   string
		branchType string
		name       string
		expected   string
	}{
		{
			testName:   "basic",
			branchType: "feature",
			name:       "test",
			expected:   "git flow feature start test",
		},
	}

	for _, s := range scenarios {
		s := s
		t.Run(s.testName, func(t *testing.T) {
			instance := buildFlowCommands(commonDeps{})

			assert.Equal(t,
				instance.StartCmdObj(s.branchType, s.name).ToString(),
				s.expected,
			)
		})
	}
}

func TestFinishCmdObj(t *testing.T) {
	scenarios := []struct {
		testName               string
		branchName             string
		expected               string
		expectedError          string
		gitConfigMockResponses map[string]string
	}{
		{
			testName:               "not a git flow branch",
			branchName:             "mybranch",
			expected:               "",
			expectedError:          "This does not seem to be a git flow branch",
			gitConfigMockResponses: nil,
		},
		{
			testName:               "feature branch without config",
			branchName:             "feature/mybranch",
			expected:               "",
			expectedError:          "This does not seem to be a git flow branch",
			gitConfigMockResponses: nil,
		},
		{
			testName:      "feature branch with config",
			branchName:    "feature/mybranch",
			expected:      "git flow feature finish mybranch",
			expectedError: "",
			gitConfigMockResponses: map[string]string{
				"--local --get-regexp gitflow.prefix": "gitflow.prefix.feature feature/",
			},
		},
	}

	for _, s := range scenarios {
		s := s
		t.Run(s.testName, func(t *testing.T) {
			instance := buildFlowCommands(commonDeps{
				gitConfig: git_config.NewFakeGitConfig(s.gitConfigMockResponses),
			})

			cmd, err := instance.FinishCmdObj(s.branchName)

			if s.expectedError != "" {
				if err == nil {
					t.Errorf("Expected error, got nil")
				} else {
					assert.Equal(t, err.Error(), s.expectedError)
				}
			} else {
				assert.NoError(t, err)
				assert.Equal(t, cmd.ToString(), s.expected)
			}
		})
	}
}