MCPcopy Create free account
hub / github.com/cli/cli / TestResolveSingleSelectOptionID

Function TestResolveSingleSelectOptionID

pkg/cmd/project/shared/queries/resolve_test.go:12–73  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

10)
11
12func TestResolveSingleSelectOptionID(t *testing.T) {
13 status := singleSelectField("PVTSSF_status", "Status", []SingleSelectFieldOptions{
14 {ID: "opt_todo", Name: "Todo"},
15 {ID: "opt_inprog", Name: "In Progress"},
16 {ID: "opt_done", Name: "Done"},
17 })
18
19 t.Run("resolves an option name to its id", func(t *testing.T) {
20 id, err := ResolveSingleSelectOptionID(status, "In Progress")
21 require.NoError(t, err)
22 assert.Equal(t, "opt_inprog", id)
23 })
24
25 t.Run("resolves an option name case-insensitively", func(t *testing.T) {
26 id, err := ResolveSingleSelectOptionID(status, "in progress")
27 require.NoError(t, err)
28 assert.Equal(t, "opt_inprog", id)
29 })
30
31 t.Run("case-insensitive match that hits multiple options is ambiguous", func(t *testing.T) {
32 dup := singleSelectField("PVTSSF_status", "Status", []SingleSelectFieldOptions{
33 {ID: "opt_lower", Name: "done"},
34 {ID: "opt_upper", Name: "Done"},
35 })
36 _, err := ResolveSingleSelectOptionID(dup, "DONE")
37 require.Error(t, err)
38 var amb *OptionAmbiguousError
39 require.True(t, errors.As(err, &amb))
40 assert.ElementsMatch(t, []string{"opt_lower", "opt_upper"}, amb.Candidates)
41 })
42
43 t.Run("not found lists candidate option names", func(t *testing.T) {
44 _, err := ResolveSingleSelectOptionID(status, "In progres")
45 require.Error(t, err)
46 var nf *OptionNotFoundError
47 require.True(t, errors.As(err, &nf))
48 assert.Equal(t, "Status", nf.FieldName)
49 assert.Equal(t, []string{"Todo", "In Progress", "Done"}, nf.Candidates)
50 assert.Contains(t, err.Error(), "available options: Todo, In Progress, Done")
51 })
52
53 t.Run("ambiguous option lists candidate ids", func(t *testing.T) {
54 dup := singleSelectField("PVTSSF_status", "Status", []SingleSelectFieldOptions{
55 {ID: "opt_a", Name: "Done"},
56 {ID: "opt_b", Name: "Done"},
57 })
58 _, err := ResolveSingleSelectOptionID(dup, "Done")
59 require.Error(t, err)
60 var amb *OptionAmbiguousError
61 require.True(t, errors.As(err, &amb))
62 assert.ElementsMatch(t, []string{"opt_a", "opt_b"}, amb.Candidates)
63 })
64
65 t.Run("wrong field type is rejected", func(t *testing.T) {
66 _, err := ResolveSingleSelectOptionID(textField("PVTF_title", "Title"), "In Progress")
67 require.Error(t, err)
68 var wt *WrongFieldTypeError
69 require.True(t, errors.As(err, &wt))

Callers

nothing calls this directly

Calls 7

singleSelectFieldFunction · 0.85
textFieldFunction · 0.85
EqualMethod · 0.80
ContainsMethod · 0.80
RunMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected