From 86fbcf3ec88e35ccea52395cf5cfa27a44055baa Mon Sep 17 00:00:00 2001 From: Ben Christel Date: Thu, 13 Mar 2025 13:09:03 -0700 Subject: [PATCH 1/3] [benc/allow-null-widget-keys] Allow the 'key' field of Radio widgets to be null --- .../perseus-parsers/radio-widget.test.ts | 17 +++++++++++++++++ .../perseus-parsers/widget.ts | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/perseus-core/src/parse-perseus-json/perseus-parsers/radio-widget.test.ts b/packages/perseus-core/src/parse-perseus-json/perseus-parsers/radio-widget.test.ts index 0281ab9f08..9663e9d800 100644 --- a/packages/perseus-core/src/parse-perseus-json/perseus-parsers/radio-widget.test.ts +++ b/packages/perseus-core/src/parse-perseus-json/perseus-parsers/radio-widget.test.ts @@ -78,4 +78,21 @@ describe("parseRadioWidget", () => { ), ); }); + + it("allows a null key", () => { + const widget = { + type: "radio", + key: null, + graded: true, + version: { + major: 2, + minor: 0, + }, + options: { + choices: [], + }, + }; + + expect(parse(widget, parseRadioWidget)).toEqual(success(widget)); + }); }); diff --git a/packages/perseus-core/src/parse-perseus-json/perseus-parsers/widget.ts b/packages/perseus-core/src/parse-perseus-json/perseus-parsers/widget.ts index ef9156b37c..a5e17f177e 100644 --- a/packages/perseus-core/src/parse-perseus-json/perseus-parsers/widget.ts +++ b/packages/perseus-core/src/parse-perseus-json/perseus-parsers/widget.ts @@ -45,7 +45,7 @@ export function parseWidgetWithVersion< graded: optional(boolean), alignment: optional(string), options: parseOptions, - key: optional(number), + key: optional(nullable(number)), version: parseVersion, }); } From 507e1dd31452e49a4dd066a632a7dc381b56fe0f Mon Sep 17 00:00:00 2001 From: Ben Christel Date: Thu, 13 Mar 2025 13:09:36 -0700 Subject: [PATCH 2/3] [benc/allow-null-widget-keys] docs(changeset): Bugfix: allow the 'key' field of Radio widgets to be null when parsing Perseus JSON" --- .changeset/early-swans-brush.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/early-swans-brush.md diff --git a/.changeset/early-swans-brush.md b/.changeset/early-swans-brush.md new file mode 100644 index 0000000000..59e89c24f6 --- /dev/null +++ b/.changeset/early-swans-brush.md @@ -0,0 +1,5 @@ +--- +"@khanacademy/perseus-core": patch +--- + +Bugfix: allow the 'key' field of Radio widgets to be null when parsing Perseus JSON" From c2db3ddaab2212fed7bb30266e0c852666a94b28 Mon Sep 17 00:00:00 2001 From: Ben Christel Date: Mon, 17 Mar 2025 08:51:04 -0700 Subject: [PATCH 3/3] Update .changeset/early-swans-brush.md Co-authored-by: Matthew --- .changeset/early-swans-brush.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/early-swans-brush.md b/.changeset/early-swans-brush.md index 59e89c24f6..e97ada545c 100644 --- a/.changeset/early-swans-brush.md +++ b/.changeset/early-swans-brush.md @@ -2,4 +2,4 @@ "@khanacademy/perseus-core": patch --- -Bugfix: allow the 'key' field of Radio widgets to be null when parsing Perseus JSON" +Bugfix: allow the 'key' field of Radio widgets to be null when parsing Perseus JSON