import { assert, describe, it } from "vitest"; import dottedGet from "../../functions/dotted_get"; // ErrorDict: { [key: string]: string[] | ErrorDict } // dottedGet(errors, fieldName) traverses the dict using dot-notation field names. describe("dottedGet — flat keys", () => { it("returns the error array for a matching flat key", () => { const errors = { name: ["This field is required."] }; assert.deepEqual(dottedGet(errors, "name"), ["This field is required."]); }); it("returns undefined when the key is not present", () => { assert.isUndefined(dottedGet({ name: ["error"] }, "other")); }); it("returns undefined when errors is undefined", () => { assert.isUndefined(dottedGet(undefined, "name")); }); it("returns undefined when errors is null", () => { assert.isUndefined(dottedGet(null, "name")); }); }); describe("dottedGet — dot-notation keys", () => { it("reads nested errors one level deep", () => { const errors = { address: { street: ["Enter a street address."] } }; assert.deepEqual(dottedGet(errors, "address.street"), [ "Enter a street address.", ]); }); it("reads nested errors two levels deep", () => { const errors = { a: { b: { c: ["Too short."] } } }; assert.deepEqual(dottedGet(errors, "a.b.c"), ["Too short."]); }); it("returns a nested ErrorDict when the path resolves to a sub-dict", () => { const errors = { address: { street: ["Required."], city: ["Required."] }, }; assert.deepEqual(dottedGet(errors, "address"), { street: ["Required."], city: ["Required."], }); }); it("returns undefined when an intermediate key is missing", () => { assert.isUndefined(dottedGet({}, "address.street")); }); it("returns undefined when a mid-path value is not an object", () => { assert.isUndefined( dottedGet({ address: ["Invalid address."] }, "address.street"), ); }); it("returns undefined when errors is undefined and path has dots", () => { assert.isUndefined(dottedGet(undefined, "address.street")); }); });