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[a-z_]+)/(?P.*)", "{{ .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[a-z]*)/(?P.*)", "{{ .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[a-z]*)/(?P.*)", "{{ .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 { s := s t.Run(s.testName, func(t *testing.T) { s.test(NewDummyGui().GenerateMenuCandidates(s.cmdOut, s.filter, s.valueFormat, s.labelFormat)) }) } }