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

Function TestResolveFieldByName

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

Source from the content-addressed store, hash-verified

29}
30
31func TestResolveFieldByName(t *testing.T) {
32 fields := []ProjectField{
33 textField("PVTF_title", "Title"),
34 singleSelectField("PVTSSF_status", "Status", []SingleSelectFieldOptions{
35 {ID: "opt_todo", Name: "Todo"},
36 {ID: "opt_inprog", Name: "In Progress"},
37 }),
38 textField("PVTF_prio", "Priority"),
39 }
40
41 t.Run("resolves an exact match", func(t *testing.T) {
42 got, err := ResolveFieldByName(fields, "Status")
43 require.NoError(t, err)
44 assert.Equal(t, "PVTSSF_status", got.ID())
45 })
46
47 t.Run("resolves case-insensitively", func(t *testing.T) {
48 got, err := ResolveFieldByName(fields, "status")
49 require.NoError(t, err)
50 assert.Equal(t, "PVTSSF_status", got.ID())
51 })
52
53 t.Run("not found lists candidate field names", func(t *testing.T) {
54 _, err := ResolveFieldByName(fields, "Statuss")
55 require.Error(t, err)
56 var nf *FieldNotFoundError
57 require.True(t, errors.As(err, &nf))
58 assert.Equal(t, "Statuss", nf.Name)
59 assert.Equal(t, []string{"Priority", "Status", "Title"}, nf.Candidates)
60 assert.Contains(t, err.Error(), "available fields: Priority, Status, Title")
61 })
62
63 t.Run("ambiguous name lists candidate ids in sorted order", func(t *testing.T) {
64 dup := append([]ProjectField{}, fields...)
65 dup = append(dup, textField("PVTF_status2", "Status"))
66 _, err := ResolveFieldByName(dup, "Status")
67 require.Error(t, err)
68 var amb *FieldAmbiguousError
69 require.True(t, errors.As(err, &amb))
70 assert.Equal(t, []string{"PVTF_status2", "PVTSSF_status"}, amb.Candidates)
71 assert.Contains(t, err.Error(), "is ambiguous")
72 })
73}
74
75func TestResolveFieldByID(t *testing.T) {
76 fields := []ProjectField{

Callers

nothing calls this directly

Calls 8

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

Tested by

no test coverage detected