(t *testing.T)
| 89 | } |
| 90 | |
| 91 | func 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) |
nothing calls this directly
no test coverage detected
searching dependent graphs…