-
Notifications
You must be signed in to change notification settings - Fork 351
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
Number Line: Extract validation out of scoring #1901
base: release/server-side-scoring
Are you sure you want to change the base?
Number Line: Extract validation out of scoring #1901
Conversation
Rename state to userInput Rename rubric to scoringData Rename rubric type
Add check for null return on validation pass Remove test helpers Rename rubric to scoringData
Update scoringData type to union with ValidationData
npm Snapshot: PublishedGood news!! We've packaged up the latest commit from this PR (47f4c3f) and published it to npm. You Example: yarn add @khanacademy/perseus@PR1901 If you are working in Khan Academy's webapp, you can run: ./dev/tools/bump_perseus_version.sh -t PR1901 |
Size Change: +133 B (+0.01%) Total Size: 1.29 MB
ℹ️ View Unchanged
|
// TODO: I don't think isTickCrtl is a thing anymore | ||
if (state.isTickCrtl && outsideAllowedRange) { |
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.
I'm guessing when exercises allow users to set their own interval, then this check was necessary in case they put in an invalid number of divisions.
I checked the number line editor, and it still has a checkbox for isTickCrtl
and the json still has the field (though it defaults to not being there). I tried removing state.isTickCrtl
from line 27 and all the tests still pass. It doesn't look like it is referenced anywhere other than tests and this line here. Wouldn't this always be false if isTickCrtl
is not in use? Maybe this validation check hasn't been working?
Or maybe this check is not necessary if we are no longer allowing the user to set their own tick interval. It is possible to turn this to true
in the editor, so I think we should only remove it if that checkbox ever gets removed, just in case it has been set to true in the past or in case anyone sets it to true in the future.
I don't think this property should be on userInput though. Should we move it to validationData? Should there be any tests making sure things work with or without this value?
if (state.numLinePosition === start && state.rel === startRel) { | ||
// We're where we started. | ||
return { | ||
type: "invalid", | ||
message: null, | ||
}; | ||
} |
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.
I don't think it's necessary to do this check after checking if the user got it right. If the user tries to check their answer and they have not moved the dot, then it should probably be invalid. This might not be the case if the first tick could possibly be the right answer. Might be good to check with content before landing this change since this validation check gets moved.
Summary:
To complete server-side scoring, we are separating out validation logic from scoring logic. This PR separates that logic and associated tests for the number line widget.
Issue: LEMS-2608
Test plan: