diff --git a/.changeset/early-swans-brush.md b/.changeset/early-swans-brush.md new file mode 100644 index 0000000000..e97ada545c --- /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 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, }); }