MCPcopy
hub / github.com/pocketbase/pocketbase / TestFileFieldDriverValue

Function TestFileFieldDriverValue

core/field_file_test.go:154–221  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

152}
153
154func TestFileFieldDriverValue(t *testing.T) {
155 app, _ := tests.NewTestApp()
156 defer app.Cleanup()
157
158 f1, err := filesystem.NewFileFromBytes([]byte("test"), "test.txt")
159 if err != nil {
160 t.Fatal(err)
161 }
162
163 scenarios := []struct {
164 raw any
165 field *core.FileField
166 expected string
167 }{
168 // single
169 {nil, &core.FileField{MaxSelect: 1}, `""`},
170 {"", &core.FileField{MaxSelect: 1}, `""`},
171 {123, &core.FileField{MaxSelect: 1}, `"123"`},
172 {"a", &core.FileField{MaxSelect: 1}, `"a"`},
173 {`["a"]`, &core.FileField{MaxSelect: 1}, `"a"`},
174 {f1, &core.FileField{MaxSelect: 1}, `"` + f1.Name + `"`},
175 {[]string{}, &core.FileField{MaxSelect: 1}, `""`},
176 {[]string{"a", "b"}, &core.FileField{MaxSelect: 1}, `"b"`},
177
178 // multiple
179 {nil, &core.FileField{MaxSelect: 2}, `[]`},
180 {"", &core.FileField{MaxSelect: 2}, `[]`},
181 {123, &core.FileField{MaxSelect: 2}, `["123"]`},
182 {"a", &core.FileField{MaxSelect: 2}, `["a"]`},
183 {`["a"]`, &core.FileField{MaxSelect: 2}, `["a"]`},
184 {[]any{"a", f1}, &core.FileField{MaxSelect: 2}, `["a","` + f1.Name + `"]`},
185 {[]string{}, &core.FileField{MaxSelect: 2}, `[]`},
186 {[]string{"a", "b", "c"}, &core.FileField{MaxSelect: 2}, `["a","b","c"]`},
187 }
188
189 for i, s := range scenarios {
190 t.Run(fmt.Sprintf("%d_%#v_%v", i, s.raw, s.field.IsMultiple()), func(t *testing.T) {
191 record := core.NewRecord(core.NewBaseCollection("test"))
192 record.SetRaw(s.field.GetName(), s.raw)
193
194 v, err := s.field.DriverValue(record)
195 if err != nil {
196 t.Fatal(err)
197 }
198
199 if s.field.IsMultiple() {
200 _, ok := v.(types.JSONArray[string])
201 if !ok {
202 t.Fatalf("Expected types.JSONArray value, got %T", v)
203 }
204 } else {
205 _, ok := v.(string)
206 if !ok {
207 t.Fatalf("Expected string value, got %T", v)
208 }
209 }
210
211 vRaw, err := json.Marshal(v)

Callers

nothing calls this directly

Calls 10

CleanupMethod · 0.95
SetRawMethod · 0.95
NewTestAppFunction · 0.92
NewFileFromBytesFunction · 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…