MCPcopy
hub / github.com/pocketbase/pocketbase / TestFieldsListJSON

Function TestFieldsListJSON

core/fields_list_test.go:505–558  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

503}
504
505func TestFieldsListJSON(t *testing.T) {
506 scenarios := []struct {
507 name string
508 data string
509 expectError bool
510 expectJSON string
511 }{
512 {"empty string", "", true, "[]"},
513 {"invalid string", "invalid", true, "[]"},
514 {"empty string array", "[]", false, "[]"},
515 {"item with no field type", `[{}]`, true, "[]"},
516 {
517 "unknown field type",
518 `[{"id":"123","name":"test1","type":"unknown"},{"id":"456","name":"test2","type":"bool"}]`,
519 true,
520 `[]`,
521 },
522 {
523 "only the minimum field options",
524 `[{"id":"123","name":"test1","type":"text","required":true},{"id":"456","name":"test2","type":"bool"}]`,
525 false,
526 `[{"autogeneratePattern":"","help":"","hidden":false,"id":"123","max":0,"min":0,"name":"test1","pattern":"","presentable":false,"primaryKey":false,"required":true,"system":false,"type":"text"},{"help":"","hidden":false,"id":"456","name":"test2","presentable":false,"required":false,"system":false,"type":"bool"}]`,
527 },
528 {
529 "all field options",
530 `[{"autogeneratePattern":"","help":"abc","hidden":true,"id":"123","max":12,"min":0,"name":"test1","pattern":"","presentable":true,"primaryKey":false,"required":true,"system":false,"type":"text"},{"help":"def","hidden":false,"id":"456","name":"test2","presentable":false,"required":false,"system":true,"type":"bool"}]`,
531 false,
532 `[{"autogeneratePattern":"","help":"abc","hidden":true,"id":"123","max":12,"min":0,"name":"test1","pattern":"","presentable":true,"primaryKey":false,"required":true,"system":false,"type":"text"},{"help":"def","hidden":false,"id":"456","name":"test2","presentable":false,"required":false,"system":true,"type":"bool"}]`,
533 },
534 }
535
536 for _, s := range scenarios {
537 t.Run(s.name, func(t *testing.T) {
538 testFieldsList := core.FieldsList{}
539
540 err := testFieldsList.UnmarshalJSON([]byte(s.data))
541
542 hasErr := err != nil
543 if hasErr != s.expectError {
544 t.Fatalf("Expected hasErr %v, got %v (%v)", s.expectError, hasErr, err)
545 }
546
547 raw, err := testFieldsList.MarshalJSON()
548 if err != nil {
549 t.Fatal(err)
550 }
551
552 str := string(raw)
553 if str != s.expectJSON {
554 t.Fatalf("Expected\n%v\ngot\n%v", s.expectJSON, str)
555 }
556 })
557 }
558}

Callers

nothing calls this directly

Calls 3

UnmarshalJSONMethod · 0.95
MarshalJSONMethod · 0.95
RunMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…