MCPcopy
hub / github.com/pocketbase/pocketbase / TestFileFieldPrepareValue

Function TestFileFieldPrepareValue

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

Source from the content-addressed store, hash-verified

89}
90
91func TestFileFieldPrepareValue(t *testing.T) {
92 app, _ := tests.NewTestApp()
93 defer app.Cleanup()
94
95 record := core.NewRecord(core.NewBaseCollection("test"))
96
97 f1, err := filesystem.NewFileFromBytes([]byte("test"), "test1.txt")
98 if err != nil {
99 t.Fatal(err)
100 }
101 f1Raw, err := json.Marshal(f1)
102 if err != nil {
103 t.Fatal(err)
104 }
105
106 scenarios := []struct {
107 raw any
108 field *core.FileField
109 expected string
110 }{
111 // single
112 {nil, &core.FileField{MaxSelect: 1}, `""`},
113 {"", &core.FileField{MaxSelect: 1}, `""`},
114 {123, &core.FileField{MaxSelect: 1}, `"123"`},
115 {"a", &core.FileField{MaxSelect: 1}, `"a"`},
116 {`["a"]`, &core.FileField{MaxSelect: 1}, `"a"`},
117 {*f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
118 {f1, &core.FileField{MaxSelect: 1}, string(f1Raw)},
119 {[]string{}, &core.FileField{MaxSelect: 1}, `""`},
120 {[]string{"a", "b"}, &core.FileField{MaxSelect: 1}, `"b"`},
121
122 // multiple
123 {nil, &core.FileField{MaxSelect: 2}, `[]`},
124 {"", &core.FileField{MaxSelect: 2}, `[]`},
125 {123, &core.FileField{MaxSelect: 2}, `["123"]`},
126 {"a", &core.FileField{MaxSelect: 2}, `["a"]`},
127 {`["a"]`, &core.FileField{MaxSelect: 2}, `["a"]`},
128 {[]any{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
129 {[]*filesystem.File{f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
130 {[]filesystem.File{*f1}, &core.FileField{MaxSelect: 2}, `[` + string(f1Raw) + `]`},
131 {[]string{}, &core.FileField{MaxSelect: 2}, `[]`},
132 {[]string{"a", "b", "c"}, &core.FileField{MaxSelect: 2}, `["a","b","c"]`},
133 }
134
135 for i, s := range scenarios {
136 t.Run(fmt.Sprintf("%d_%#v_%v", i, s.raw, s.field.IsMultiple()), func(t *testing.T) {
137 v, err := s.field.PrepareValue(record, s.raw)
138 if err != nil {
139 t.Fatal(err)
140 }
141
142 vRaw, err := json.Marshal(v)
143 if err != nil {
144 t.Fatal(err)
145 }
146
147 if string(vRaw) != s.expected {
148 t.Fatalf("Expected %q, got %q", s.expected, vRaw)

Callers

nothing calls this directly

Calls 8

CleanupMethod · 0.95
NewTestAppFunction · 0.92
NewRecordFunction · 0.92
NewBaseCollectionFunction · 0.92
NewFileFromBytesFunction · 0.92
IsMultipleMethod · 0.65
PrepareValueMethod · 0.65
RunMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…