summaryrefslogtreecommitdiffstats
path: root/pkg/gui/custom_commands_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/gui/custom_commands_test.go')
-rw-r--r--pkg/gui/custom_commands_test.go63
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))
+ })
+ }
+}