From 7ddba51b36c4eac7595903dd68c0da84a1636181 Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Mon, 17 Mar 2025 06:36:35 -0700 Subject: [PATCH] Generate empty objects and arrays for non required object and array fields --- client/src/utils/__tests__/schemaUtils.test.ts | 14 ++++++++++++++ client/src/utils/schemaUtils.ts | 2 ++ 2 files changed, 16 insertions(+) diff --git a/client/src/utils/__tests__/schemaUtils.test.ts b/client/src/utils/__tests__/schemaUtils.test.ts index cd9c288..00187cd 100644 --- a/client/src/utils/__tests__/schemaUtils.test.ts +++ b/client/src/utils/__tests__/schemaUtils.test.ts @@ -37,6 +37,20 @@ describe("generateDefaultValue", () => { ); }); + test("generates empty array for non-required array", () => { + expect(generateDefaultValue({ type: "array", required: false })).toEqual([]); + }); + + test("generates empty object for non-required object", () => { + expect(generateDefaultValue({ type: "object", required: false })).toEqual({}); + }); + + test("generates null for non-required primitive types", () => { + expect(generateDefaultValue({ type: "string", required: false })).toBe(null); + expect(generateDefaultValue({ type: "number", required: false })).toBe(null); + expect(generateDefaultValue({ type: "boolean", required: false })).toBe(null); + }); + test("generates object with properties", () => { const schema: JsonSchemaType = { type: "object", diff --git a/client/src/utils/schemaUtils.ts b/client/src/utils/schemaUtils.ts index 88a9b53..819ac99 100644 --- a/client/src/utils/schemaUtils.ts +++ b/client/src/utils/schemaUtils.ts @@ -13,6 +13,8 @@ export function generateDefaultValue(schema: JsonSchemaType): JsonValue { } if (!schema.required) { + if (schema.type === "array") return []; + if (schema.type === "object") return {}; return null; }