From 8954c0b85b0ad29251f725a95fb111f7583dd0c6 Mon Sep 17 00:00:00 2001 From: Anna Gavrilman Date: Fri, 12 Apr 2024 07:37:58 -0400 Subject: [PATCH] Fix enrollment dialog default option (#2154) --- .../components/CourseProductDetailEnroll.js | 4 +- .../CourseProductDetailEnroll_test.js | 78 +++++-------------- frontend/public/src/lib/test_utils.js | 6 ++ 3 files changed, 27 insertions(+), 61 deletions(-) diff --git a/frontend/public/src/components/CourseProductDetailEnroll.js b/frontend/public/src/components/CourseProductDetailEnroll.js index bf01320126..083b6b13cd 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll.js +++ b/frontend/public/src/components/CourseProductDetailEnroll.js @@ -148,7 +148,7 @@ export class CourseProductDetailEnroll extends React.Component< hndSetCourseRun = (event: any) => { const { courseRuns } = this.props - if (event.target.value === "") { + if (event.target.value === "default") { this.setCurrentCourseRun(null) return } @@ -203,7 +203,7 @@ export class CourseProductDetailEnroll extends React.Component< onChange={this.hndSetCourseRun.bind(this)} className="form-control" > - {courseRuns && diff --git a/frontend/public/src/components/CourseProductDetailEnroll_test.js b/frontend/public/src/components/CourseProductDetailEnroll_test.js index ef37b60100..dd2ae5947f 100644 --- a/frontend/public/src/components/CourseProductDetailEnroll_test.js +++ b/frontend/public/src/components/CourseProductDetailEnroll_test.js @@ -23,6 +23,7 @@ import { import * as courseApi from "../lib/courseApi" import { makeUser, makeAnonymousUser } from "../factories/user" +import { getDisabledProp } from "../lib/test_utils" describe("CourseProductDetailEnrollShallowRender", () => { let helper, @@ -542,36 +543,23 @@ describe("CourseProductDetailEnrollShallowRender", () => { .at(0) .prop("disabled") ) - assert.isTrue( - inner - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) + assert.isTrue(getDisabledProp(inner, "button.enroll-now-free")) modal .find("select.form-control") .simulate("change", { target: { value: courseRun["id"] } }) inner.update() - assert.isFalse( - inner - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) - assert.isFalse( - inner - .find("button.btn-upgrade") - .at(0) - .prop("disabled") - ) + assert.isFalse(getDisabledProp(inner, "button.enroll-now-free")) + assert.isFalse(getDisabledProp(inner, "button.btn-upgrade")) + // check if default selected it resets back + modal + .find("select.form-control") + .simulate("change", { target: { value: "default" } }) + inner.update() + assert.isTrue(getDisabledProp(inner, "button.enroll-now-free")) + assert.isTrue(getDisabledProp(inner, "button.btn-upgrade")) } else { assert.isFalse(selectorControl.exists()) - assert.isFalse( - inner - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) + assert.isFalse(getDisabledProp(inner, "button.enroll-now-free")) assert.isFalse( upgradeForm .find("button.btn-upgrade") @@ -604,22 +592,12 @@ describe("CourseProductDetailEnrollShallowRender", () => { const modal = inner.find(".upgrade-enrollment-modal") assert.isTrue(modal.find("select.form-control").exists()) - assert.isTrue( - modal - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) + assert.isTrue(getDisabledProp(inner, "button.enroll-now-free")) modal .find("select.form-control") .simulate("change", { target: { value: courseRun["id"] } }) inner.update() - assert.isFalse( - inner - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) + assert.isFalse(getDisabledProp(inner, "button.enroll-now-free")) assert.isFalse(inner.find("button.btn-upgrade").exists()) }) ;[ @@ -655,28 +633,15 @@ describe("CourseProductDetailEnrollShallowRender", () => { const modal = inner.find(".upgrade-enrollment-modal") assert.isTrue(modal.find("select.form-control").exists()) - let upgradeBtnDisabledProp = inner - .find("button.btn-upgrade") - .at(0) - .prop("disabled") - assert.isTrue( - modal - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) - assert.isTrue(upgradeBtnDisabledProp) + assert.isTrue(getDisabledProp(inner, "button.enroll-now-free")) + assert.isTrue(getDisabledProp(inner, "button.btn-upgrade")) modal .find("select.form-control") .simulate("change", { target: { value: runWithMixedInfo["id"] } }) inner.update() const certPricing = inner.find(".certificate-pricing").at(0) - upgradeBtnDisabledProp = inner - .find("button.btn-upgrade") - .at(0) - .prop("disabled") if (isUpgradable && hasProduct) { - assert.isFalse(upgradeBtnDisabledProp) + assert.isFalse(getDisabledProp(inner, "button.btn-upgrade")) assert.isTrue(certPricing.exists()) assert.isTrue( certPricing @@ -686,15 +651,10 @@ describe("CourseProductDetailEnrollShallowRender", () => { ) ) } else { - assert.isTrue(upgradeBtnDisabledProp) + assert.isTrue(getDisabledProp(inner, "button.btn-upgrade")) assert.isTrue(certPricing.text().includes("not available")) } - assert.isFalse( - inner - .find("button.enroll-now-free") - .at(0) - .prop("disabled") - ) + assert.isFalse(getDisabledProp(inner, "button.enroll-now-free")) }) }) diff --git a/frontend/public/src/lib/test_utils.js b/frontend/public/src/lib/test_utils.js index 9028d6fc7b..7c93b4d6e3 100644 --- a/frontend/public/src/lib/test_utils.js +++ b/frontend/public/src/lib/test_utils.js @@ -28,6 +28,12 @@ export const findFormikErrorByName = (wrapper: any, name: string) => .find("FormikConnect(ErrorMessageImpl)") .filterWhere(node => node.prop("name") === name) +export const getDisabledProp = (inner: any, name: string) => + inner + .find(`${name}`) + .at(0) + .prop("disabled") + /** * This is here to support testing components that are wrapped with a * context consumer, e.g.: