diff options
Diffstat (limited to 'pkg/gui/custom_commands_test.go')
-rw-r--r-- | pkg/gui/custom_commands_test.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/pkg/gui/custom_commands_test.go b/pkg/gui/custom_commands_test.go new file mode 100644 index 000000000..d51617c09 --- /dev/null +++ b/pkg/gui/custom_commands_test.go @@ -0,0 +1,63 @@ +package gui + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGuiGenerateMenuCandidates(t *testing.T) { + type scenario struct { + testName string + cmdOut string + filter string + valueFormat string + labelFormat string + test func([]commandMenuEntry, error) + } + + scenarios := []scenario{ + { + "Extract remote branch name", + "upstream/pr-1", + "(?P<remote>[a-z_]+)/(?P<branch>.*)", + "{{ .branch }}", + "Remote: {{ .remote }}", + func(actualEntry []commandMenuEntry, err error) { + assert.NoError(t, err) + assert.EqualValues(t, "pr-1", actualEntry[0].value) + assert.EqualValues(t, "Remote: upstream", actualEntry[0].label) + }, + }, + { + "Multiple named groups with empty labelFormat", + "upstream/pr-1", + "(?P<remote>[a-z]*)/(?P<branch>.*)", + "{{ .branch }}|{{ .remote }}", + "", + func(actualEntry []commandMenuEntry, err error) { + assert.NoError(t, err) + assert.EqualValues(t, "pr-1|upstream", actualEntry[0].value) + assert.EqualValues(t, "pr-1|upstream", actualEntry[0].label) + }, + }, + { + "Multiple named groups with group ids", + "upstream/pr-1", + "(?P<remote>[a-z]*)/(?P<branch>.*)", + "{{ .group_2 }}|{{ .group_1 }}", + "Remote: {{ .group_1 }}", + func(actualEntry []commandMenuEntry, err error) { + assert.NoError(t, err) + assert.EqualValues(t, "pr-1|upstream", actualEntry[0].value) + assert.EqualValues(t, "Remote: upstream", actualEntry[0].label) + }, + }, + } + + for _, s := range scenarios { + t.Run(s.testName, func(t *testing.T) { + s.test(NewDummyGui().GenerateMenuCandidates(s.cmdOut, s.filter, s.valueFormat, s.labelFormat)) + }) + } +} |