-
Notifications
You must be signed in to change notification settings - Fork 352
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Client Validation] Use emptyWidgetsFunctional in scoring #2083
[Client Validation] Use emptyWidgetsFunctional in scoring #2083
Conversation
npm Snapshot: PublishedGood news!! We've packaged up the latest commit from this PR (6678137) and published it to npm. You Example: yarn add @khanacademy/perseus@PR2083 If you are working in Khan Academy's webapp, you can run: ./dev/tools/bump_perseus_version.sh -t PR2083 |
Size Change: +77 B (+0.01%) Total Size: 1.47 MB
ℹ️ View Unchanged
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Love seeing a PR that's mostly tests. Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approved with some thoughts :) Thanks!
ec8e6a2
to
fc63b15
Compare
This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @khanacademy/[email protected] ### Major Changes - [#1965](#1965) [`0f2bec314`](0f2bec3) Thanks [@Myranae](https://github.com/Myranae)! - Refactor the LabelImage widget to separate out answers from userInput into scoringData - [#2134](#2134) [`117e78d03`](117e78d) Thanks [@handeyeco](https://github.com/handeyeco)! - Move widget ID utils to perseus-core - [#2153](#2153) [`29a1c656e`](29a1c65) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Rename all instances of the term "ScoringData" back to "Rubric" - [#2135](#2135) [`7a984eba6`](7a984eb) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Expression WidgetOptions logic to core ### Minor Changes - [#2002](#2002) [`a1e22a4e3`](a1e22a4) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Add and improve types for scoring and validation - [#2155](#2155) [`0df0b1940`](0df0b19) Thanks [@benchristel](https://github.com/benchristel)! - Move `parsePerseusItem`, `parseAndMigratePerseusItem`, `parseAndMigratePerseusArticle`, `isSuccess`, and `isFailure` to the `perseus-core` package, and deprecate the equivalent exports from the `perseus` package. - [#2032](#2032) [`22d108fdc`](22d108f) Thanks [@anakaren-rojas](https://github.com/anakaren-rojas)! - adds aria labels to line segment - [#2038](#2038) [`e6f7cc91e`](e6f7cc9) Thanks [@Myranae](https://github.com/Myranae)! - Fix some naming discrepancies related to validation and simplify Matcher ScoringData type - [#2083](#2083) [`4c10af109`](4c10af1) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Use empty widgets check in scoring function - [#2000](#2000) [`0db68d222`](0db68d2) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Change empty widgets check in Renderer to depend only on data available (and not on scoring data) - [#2137](#2137) [`b4b3a3dbb`](b4b3a3d) Thanks [@Myranae](https://github.com/Myranae)! - Implement a widget export function to filter out rubric data from widget options for the orderer widget - [#2006](#2006) [`879d2a501`](879d2a5) Thanks [@Myranae](https://github.com/Myranae)! - Rename usages of rubric to scoringData - [#2139](#2139) [`32cc4a45b`](32cc4a4) Thanks [@Myranae](https://github.com/Myranae)! - Implement a widget export function to filter out rubric data from widget options for the Expression widget - [#2016](#2016) [`55ad836c6`](55ad836) Thanks [@Myranae](https://github.com/Myranae)! - Introduces a validation function for the label-image widget (extracted from label-image scoring function). ### Patch Changes - [#2142](#2142) [`d7bcb14c3`](d7bcb14) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Radio upgrade logic to Perseus Core - [#2122](#2122) [`1a75ca628`](1a75ca6) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Type and test fixes for new MockWidget (isolating to be seen only in tests) - [#2143](#2143) [`459c25074`](459c250) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Passage widgets upgrade logic to Perseus Core - [#1997](#1997) [`0464a760f`](0464a76) Thanks [@Myranae](https://github.com/Myranae)! - Remove unused CS Program rubric type - [#2110](#2110) [`e2f2cee9f`](e2f2cee) Thanks [@nishasy](https://github.com/nishasy)! - [SR] Linear - Add the interactive elements linear description to the whole graph container - [#2136](#2136) [`ffaa3904a`](ffaa390) Thanks [@nishasy](https://github.com/nishasy)! - [SR] Quadratic - add screen reader support for Quadratic interactive graph - [#1996](#1996) [`b6623bb56`](b6623bb) Thanks [@Myranae](https://github.com/Myranae)! - Remove unused iframe rubric type - [#2124](#2124) [`bdbdafe5d`](bdbdafe) Thanks [@dependabot](https://github.com/apps/dependabot)! - Updating wonder-blocks dependences. - [#2152](#2152) [`f8c9d3574`](f8c9d35) Thanks [@Myranae](https://github.com/Myranae)! - Move the categorizer, orderer, and expression public widget options functions from perseus package to their widget folders in perseus-core - [#1995](#1995) [`99cd254de`](99cd254) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - TESTS: swap input-number out of renderer tests as it is deprecated - [#2141](#2141) [`1355d6cfc`](1355d6c) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Measurer upgrade logic to Perseus Core - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`29a1c656e`](29a1c65), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Major Changes - [#2153](#2153) [`29a1c656e`](29a1c65) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Rename all instances of the term "ScoringData" back to "Rubric" ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Minor Changes - [#2158](#2158) [`8f8955718`](8f89557) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Re-export widget id support function: addWidget - [#2142](#2142) [`d7bcb14c3`](d7bcb14) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Radio upgrade logic to Perseus Core - [#2148](#2148) [`685774f2e`](685774f) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Matcher upgrade logic to Perseus Core - [#2145](#2145) [`8a489600e`](8a48960) Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget upgrade logic to Perseus Core (pt 2) - [#2143](#2143) [`459c25074`](459c250) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Passage widgets upgrade logic to Perseus Core - [#2155](#2155) [`0df0b1940`](0df0b19) Thanks [@benchristel](https://github.com/benchristel)! - Move `parsePerseusItem`, `parseAndMigratePerseusItem`, `parseAndMigratePerseusArticle`, `isSuccess`, and `isFailure` to the `perseus-core` package, and deprecate the equivalent exports from the `perseus` package. - [#2144](#2144) [`dc8118aa1`](dc8118a) Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget upgrade logic to Perseus Core (pt 1) - [#2150](#2150) [`82fa90299`](82fa902) Thanks [@handeyeco](https://github.com/handeyeco)! - Move InteractiveGraph widget upgrade to Perseus Core - [#2134](#2134) [`117e78d03`](117e78d) Thanks [@handeyeco](https://github.com/handeyeco)! - Move widget ID utils to perseus-core - [#2135](#2135) [`7a984eba6`](7a984eb) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Expression WidgetOptions logic to core - [#2141](#2141) [`1355d6cfc`](1355d6c) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Measurer upgrade logic to Perseus Core - [#2149](#2149) [`75f43a8f4`](75f43a8) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Table upgrade logic to Perseus Core - [#2147](#2147) [`ebf3695b6`](ebf3695) Thanks [@handeyeco](https://github.com/handeyeco)! - Move upgrade logic for NumberLine to Perseus Core ### Patch Changes - [#2122](#2122) [`1a75ca628`](1a75ca6) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Type and test fixes for new MockWidget (isolating to be seen only in tests) - [#2137](#2137) [`b4b3a3dbb`](b4b3a3d) Thanks [@Myranae](https://github.com/Myranae)! - Move util files out of widget folder in perseus package to utils folder in perseus-core - [#2152](#2152) [`f8c9d3574`](f8c9d35) Thanks [@Myranae](https://github.com/Myranae)! - Move the categorizer, orderer, and expression public widget options functions from perseus package to their widget folders in perseus-core - [#2139](#2139) [`32cc4a45b`](32cc4a4) Thanks [@Myranae](https://github.com/Myranae)! - Move util files out of widget folder in perseus package to utils folder in perseus-core ## @khanacademy/[email protected] ### Minor Changes - [#2015](#2015) [`46623c8f1`](46623c8) Thanks [@mark-fitzgerald](https://github.com/mark-fitzgerald)! - [Numeric Input] Re-organize editor and improve its UI - [#2015](#2015) [`46623c8f1`](46623c8) Thanks [@mark-fitzgerald](https://github.com/mark-fitzgerald)! - [Numeric Input] - Adjust editor to organize settings more logically ### Patch Changes - [#2142](#2142) [`d7bcb14c3`](d7bcb14) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Radio upgrade logic to Perseus Core - [#2148](#2148) [`685774f2e`](685774f) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Matcher upgrade logic to Perseus Core - [#2145](#2145) [`8a489600e`](8a48960) Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget upgrade logic to Perseus Core (pt 2) - [#2122](#2122) [`1a75ca628`](1a75ca6) Thanks [@jeremywiebe](https://github.com/jeremywiebe)! - Type and test fixes for new MockWidget (isolating to be seen only in tests) - [#2143](#2143) [`459c25074`](459c250) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Passage widgets upgrade logic to Perseus Core - [#2144](#2144) [`dc8118aa1`](dc8118a) Thanks [@handeyeco](https://github.com/handeyeco)! - Move simple widget upgrade logic to Perseus Core (pt 1) - [#2150](#2150) [`82fa90299`](82fa902) Thanks [@handeyeco](https://github.com/handeyeco)! - Move InteractiveGraph widget upgrade to Perseus Core - [#1965](#1965) [`0f2bec314`](0f2bec3) Thanks [@Myranae](https://github.com/Myranae)! - Refactor the LabelImage widget to separate out answers from userInput into scoringData - [#2124](#2124) [`bdbdafe5d`](bdbdafe) Thanks [@dependabot](https://github.com/apps/dependabot)! - Updating wonder-blocks dependences. - [#2135](#2135) [`7a984eba6`](7a984eb) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Expression WidgetOptions logic to core - [#2141](#2141) [`1355d6cfc`](1355d6c) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Measurer upgrade logic to Perseus Core - [#2149](#2149) [`75f43a8f4`](75f43a8) Thanks [@handeyeco](https://github.com/handeyeco)! - Move Table upgrade logic to Perseus Core - [#2147](#2147) [`ebf3695b6`](ebf3695) Thanks [@handeyeco](https://github.com/handeyeco)! - Move upgrade logic for NumberLine to Perseus Core - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`a1e22a4e3`](a1e22a4), [`0464a760f`](0464a76), [`0df0b1940`](0df0b19), [`22d108fdc`](22d108f), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`e2f2cee9f`](e2f2cee), [`ffaa3904a`](ffaa390), [`0f2bec314`](0f2bec3), [`b4b3a3dbb`](b4b3a3d), [`e6f7cc91e`](e6f7cc9), [`4c10af109`](4c10af1), [`b6623bb56`](b6623bb), [`0db68d222`](0db68d2), [`bdbdafe5d`](bdbdafe), [`117e78d03`](117e78d), [`b4b3a3dbb`](b4b3a3d), [`29a1c656e`](29a1c65), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`879d2a501`](879d2a5), [`32cc4a45b`](32cc4a4), [`99cd254de`](99cd254), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`55ad836c6`](55ad836), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] ## @khanacademy/[email protected] ### Patch Changes - [#2124](#2124) [`bdbdafe5d`](bdbdafe) Thanks [@dependabot](https://github.com/apps/dependabot)! - Updating wonder-blocks dependences. - Updated dependencies \[[`8f8955718`](8f89557), [`d7bcb14c3`](d7bcb14), [`685774f2e`](685774f), [`8a489600e`](8a48960), [`1a75ca628`](1a75ca6), [`459c25074`](459c250), [`0df0b1940`](0df0b19), [`dc8118aa1`](dc8118a), [`82fa90299`](82fa902), [`b4b3a3dbb`](b4b3a3d), [`117e78d03`](117e78d), [`7a984eba6`](7a984eb), [`f8c9d3574`](f8c9d35), [`1355d6cfc`](1355d6c), [`75f43a8f4`](75f43a8), [`32cc4a45b`](32cc4a4), [`ebf3695b6`](ebf3695)]: - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected] - @khanacademy/[email protected]
This PR completes the work of extracting validation logic from scoring logic. This retains most of the validation that used to be intermingled with scoring.
This means that even when we strip scoring data from the widget options, we'll still be able to check if an answer is scorable.
Notably:
input-number
andnumeric-input
missed the train here. Both of these widgets useKhanAnswerTypes
right at the beginning of scoring. Further, thecoefficient
answer type allows an empty value (""
) and bare negative ("-"
) to be treated as answers by coercing them to1
and-1
respectively. This means that we cannot do any validation/empty checking for these widgets because we need the fullKhanAnswerTypes
logic (which requires scoring data to work).Issue: LEMS-2561
Test plan:
yarn test
yarn typecheck