fix: address Copilot review round 37 — stale constants, inherited answers, prefixed labels
- The seeding effect re-applies constants as well as filling absences: an in-place schema change can move a `const` the user cannot edit, and the read-only field then displayed the new value while `values` still held the old one — which is what would be submitted. Ordinary defaults are still only ever added, so an edited field keeps what the user put there. - hasMissingIn checks own-property presence: a required argument legally named `constructor` resolved to the inherited one and read as supplied, enabling a submit the schema rejects. - The TUI keeps the declared name as a branch field's fallback title. The prefix is an internal field NAME, and buildFields labels from its map key — so the showcase displayed `__b0__address` where the schema says `address`. Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
f78b541ce1
commit
85b030cbde
1 changed files with 120 additions and 5 deletions
|
|
@ -465,6 +465,35 @@ describe("schemaToForm", () => {
|
|||
]);
|
||||
});
|
||||
|
||||
it("labels a branch field by the name the schema declared", () => {
|
||||
// The prefix is an internal field name; `buildFields` falls back to its
|
||||
// map key for a label, so the user would otherwise see `__b0__address`.
|
||||
const form = schemaToForm(UNION, "union_tool");
|
||||
expect(form.sections[1]!.fields[1]).toMatchObject({
|
||||
name: "__b0__address",
|
||||
label: "address",
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps a declared title ahead of the fallback", () => {
|
||||
const form = schemaToForm(
|
||||
{
|
||||
type: "object",
|
||||
anyOf: [
|
||||
{
|
||||
type: "object",
|
||||
properties: { a: { type: "string", title: "Street address" } },
|
||||
},
|
||||
{ type: "object", properties: { b: { type: "string" } } },
|
||||
],
|
||||
},
|
||||
"titled",
|
||||
);
|
||||
expect(form.sections[1]!.fields[0]).toMatchObject({
|
||||
label: "Street address",
|
||||
});
|
||||
});
|
||||
|
||||
it("offers a variant select listing the alternatives", () => {
|
||||
const form = schemaToForm(UNION, "union_tool");
|
||||
expect(form.sections[0]!.fields[0]).toMatchObject({
|
||||
|
|
|
|||
Loading…
Reference in a new issue