Skip to content
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

Dropdown: Extract validation out of scoring #1898

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

Myranae
Copy link
Contributor

@Myranae Myranae commented Nov 21, 2024

Summary:

To complete server-side scoring, we are separating out validation logic from scoring logic. This PR separates that logic and updates associated tests.

Issue: LEMS-2597

Test plan:

  • Confirm all checks pass
  • Confirm widget still works as expected

@Myranae Myranae self-assigned this Nov 21, 2024
Copy link
Contributor

github-actions bot commented Nov 21, 2024

npm Snapshot: Published

Good news!! We've packaged up the latest commit from this PR (d5bb04c) and published it to npm. You
can install it using the tag PR1898.

Example:

yarn add @khanacademy/perseus@PR1898

If you are working in Khan Academy's webapp, you can run:

./dev/tools/bump_perseus_version.sh -t PR1898

Copy link
Contributor

github-actions bot commented Nov 21, 2024

Size Change: +118 B (+0.01%)

Total Size: 1.29 MB

Filename Size Change
packages/perseus/dist/es/index.js 425 kB +118 B (+0.03%)
ℹ️ View Unchanged
Filename Size
packages/kas/dist/es/index.js 39 kB
packages/keypad-context/dist/es/index.js 760 B
packages/kmath/dist/es/index.js 4.27 kB
packages/math-input/dist/es/index.js 77.9 kB
packages/math-input/dist/es/strings.js 1.79 kB
packages/perseus-core/dist/es/index.js 1.48 kB
packages/perseus-editor/dist/es/index.js 698 kB
packages/perseus-linter/dist/es/index.js 22.2 kB
packages/perseus/dist/es/strings.js 3.57 kB
packages/pure-markdown/dist/es/index.js 3.66 kB
packages/simple-markdown/dist/es/index.js 12.5 kB

compressed-size-action

@Myranae Myranae marked this pull request as ready for review November 21, 2024 16:21
@khan-actions-bot khan-actions-bot requested a review from a team November 21, 2024 16:21
@khan-actions-bot
Copy link
Contributor

Gerald

Required Reviewers
  • @Khan/perseus for changes to .changeset/famous-horses-grab.md, packages/perseus/src/widgets/dropdown/score-dropdown.test.ts, packages/perseus/src/widgets/dropdown/score-dropdown.ts, packages/perseus/src/widgets/dropdown/validate-dropdown.test.ts, packages/perseus/src/widgets/dropdown/validate-dropdown.ts

Don't want to be involved in this pull request? Comment #removeme and we won't notify you of further changes.

Comment on lines -10 to -24
it("returns invalid for user input of 0", () => {
// Arrange
const userInput: PerseusDropdownUserInput = {
value: 0,
};
const rubric: PerseusDropdownRubric = {
choices: question1.widgets["dropdown 1"].options.choices,
};

// Act
const result = scoreDropdown(userInput, rubric);

// Assert
expect(result).toHaveInvalidInput();
});
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Didn't keep a check for this in scoring test since it looks like we might be doing validation before scoring (love that)

import type {PerseusDropdownUserInput} from "../../validation.types";

describe("validateDropdown", () => {
it("returns invalid for invalid input (user input of 0)", () => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tiny improvement suggestion as 0 is the selected index. 🤷‍♂️ You decide. :)

Suggested change
it("returns invalid for invalid input (user input of 0)", () => {
it("returns invalid when nothing selected (user input of 0)", () => {

Comment on lines +6 to +7
* This is shown with a userInput value / index other than 0.
* @param userInput
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would suggest removing these two lines:

The first one documents the internal implementation of the function (how it checks validation) which you can see by reading the code. It also presents something that can easily get out of sync with the code. A great guide for comments that I was told one time was "document why, not what". :)

The @param userInput doesn't really add any value.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants