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