MCPcopy
hub / github.com/pocketbase/pocketbase / TestSelectFieldDriverValue

Function TestSelectFieldDriverValue

core/field_select_test.go:134–194  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

132}
133
134func TestSelectFieldDriverValue(t *testing.T) {
135 app, _ := tests.NewTestApp()
136 defer app.Cleanup()
137
138 scenarios := []struct {
139 raw any
140 field *core.SelectField
141 expected string
142 }{
143 // single
144 {nil, &core.SelectField{}, `""`},
145 {"", &core.SelectField{}, `""`},
146 {123, &core.SelectField{}, `"123"`},
147 {"a", &core.SelectField{}, `"a"`},
148 {`["a"]`, &core.SelectField{}, `"a"`},
149 {[]string{}, &core.SelectField{}, `""`},
150 {[]string{"a", "b"}, &core.SelectField{}, `"b"`},
151
152 // multiple
153 {nil, &core.SelectField{MaxSelect: 2}, `[]`},
154 {"", &core.SelectField{MaxSelect: 2}, `[]`},
155 {123, &core.SelectField{MaxSelect: 2}, `["123"]`},
156 {"a", &core.SelectField{MaxSelect: 2}, `["a"]`},
157 {`["a"]`, &core.SelectField{MaxSelect: 2}, `["a"]`},
158 {[]string{}, &core.SelectField{MaxSelect: 2}, `[]`},
159 {[]string{"a", "b", "c"}, &core.SelectField{MaxSelect: 2}, `["a","b","c"]`},
160 }
161
162 for i, s := range scenarios {
163 t.Run(fmt.Sprintf("%d_%#v_%v", i, s.raw, s.field.IsMultiple()), func(t *testing.T) {
164 record := core.NewRecord(core.NewBaseCollection("test"))
165 record.SetRaw(s.field.GetName(), s.raw)
166
167 v, err := s.field.DriverValue(record)
168 if err != nil {
169 t.Fatal(err)
170 }
171
172 if s.field.IsMultiple() {
173 _, ok := v.(types.JSONArray[string])
174 if !ok {
175 t.Fatalf("Expected types.JSONArray value, got %T", v)
176 }
177 } else {
178 _, ok := v.(string)
179 if !ok {
180 t.Fatalf("Expected string value, got %T", v)
181 }
182 }
183
184 vRaw, err := json.Marshal(v)
185 if err != nil {
186 t.Fatal(err)
187 }
188
189 if string(vRaw) != s.expected {
190 t.Fatalf("Expected %q, got %q", s.expected, vRaw)
191 }

Callers

nothing calls this directly

Calls 9

CleanupMethod · 0.95
SetRawMethod · 0.95
NewTestAppFunction · 0.92
NewRecordFunction · 0.92
NewBaseCollectionFunction · 0.92
IsMultipleMethod · 0.65
GetNameMethod · 0.65
DriverValueMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…