diff --git a/src/Configuration/Provisioning/ProvisioningForm/PolicyForm/ProvisioningFormPolicyType.jsx b/src/Configuration/Provisioning/ProvisioningForm/PolicyForm/ProvisioningFormPolicyType.jsx index 208375feb..17909c208 100644 --- a/src/Configuration/Provisioning/ProvisioningForm/PolicyForm/ProvisioningFormPolicyType.jsx +++ b/src/Configuration/Provisioning/ProvisioningForm/PolicyForm/ProvisioningFormPolicyType.jsx @@ -64,7 +64,14 @@ const ProvisioningFormPolicyType = ({ index }) => { className="mt-3.5" > {POLICY_TYPE.LABEL} - +

+ {(submittedFormPolicyType === POLICY_TYPE.OPTIONS.ADMIN_SELECTS.VALUE) + && POLICY_TYPE.OPTIONS.ADMIN_SELECTS.DESCRIPTION} + {(submittedFormPolicyType === POLICY_TYPE.OPTIONS.LEARNER_SELECTS.VALUE) + && POLICY_TYPE.OPTIONS.LEARNER_SELECTS.DESCRIPTION} + +

+ {!submittedFormPolicyType && ( { data-testid={DESCRIPTION} data-description={DESCRIPTION} isInvalid={isFormFieldInvalid} - disabled={isEditMode} > {DESCRIPTION} )) } + )} {isFormFieldInvalid && ( { @@ -14,6 +15,7 @@ const PolicyContainer = () => { + )); diff --git a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyDistributionDetail.jsx b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyDistributionDetail.jsx new file mode 100644 index 000000000..f82ff7489 --- /dev/null +++ b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyDistributionDetail.jsx @@ -0,0 +1,33 @@ +import PropTypes from 'prop-types'; +import PROVISIONING_PAGE_TEXT from '../../data/constants'; +import ProvisioningFormHelpText from '../../ProvisioningForm/ProvisioningFormHelpText'; + +const PolicyDistributionDetail = ({ policyType }) => { + const { FORM: { POLICY_TYPE } } = PROVISIONING_PAGE_TEXT; + + return ( +
+

{POLICY_TYPE.TITLE}

+
+

{POLICY_TYPE.LABEL}

+

+ {(policyType === POLICY_TYPE.OPTIONS.ADMIN_SELECTS.VALUE) + && POLICY_TYPE.OPTIONS.ADMIN_SELECTS.DESCRIPTION} + {(policyType === POLICY_TYPE.OPTIONS.LEARNER_SELECTS.VALUE) + && POLICY_TYPE.OPTIONS.LEARNER_SELECTS.DESCRIPTION} + +

+
+
+ ); +}; + +PolicyDistributionDetail.propTypes = { + policyType: PropTypes.number, +}; + +PolicyDistributionDetail.defaultProps = { + policyType: null, +}; + +export default PolicyDistributionDetail; diff --git a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyLimitsDetail.jsx b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyLimitsDetail.jsx index 94cc56bbc..607d22dde 100644 --- a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyLimitsDetail.jsx +++ b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/PolicyLimitsDetail.jsx @@ -9,7 +9,7 @@ const PolicyLimitsDetail = ({ index }) => { const [formData] = selectProvisioningContext('formData'); return ( -
+

{FORM.LEARNER_CAP.TITLE}

{FORM.LEARNER_CAP.SUB_TITLE}

@@ -20,10 +20,12 @@ const PolicyLimitsDetail = ({ index }) => { {formData.policies[index].perLearnerCap ? (

{FORM.LEARNER_CAP_DETAIL.TITLE}

-
{FORM.LEARNER_CAP_DETAIL.OPTIONS.perLearnerSpendCap.title}
-

- {formatCurrency(formData.policies[index].perLearnerCapAmount)} -

+
+
{FORM.LEARNER_CAP_DETAIL.OPTIONS.perLearnerSpendCap.title}
+

+ {formatCurrency(formData.policies[index].perLearnerCapAmount)} +

+
) : null}
diff --git a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyContainer.test.jsx b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyContainer.test.jsx index 2671eab9c..3114be44c 100644 --- a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyContainer.test.jsx +++ b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyContainer.test.jsx @@ -27,6 +27,7 @@ describe('PolicyContainer', () => { expect(screen.getByText('Budget details')).toBeInTheDocument(); expect(screen.getByText('I love Executive Education Only')).toBeInTheDocument(); expect(screen.getByText('Executive Education')).toBeInTheDocument(); + expect(screen.getByText('Learner selects content or LMS')).toBeInTheDocument(); expect(screen.getByText('Create learner spend limits?')).toBeInTheDocument(); expect(screen.getByText('Per learner spend limit ($)')).toBeInTheDocument(); expect(screen.getByText('$2,500')).toBeInTheDocument(); diff --git a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDetail.test.jsx b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDetail.test.jsx index 6e601f72b..d1f7f0d19 100644 --- a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDetail.test.jsx +++ b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDetail.test.jsx @@ -28,7 +28,7 @@ describe('PolicyDetail', () => { expect(screen.getByText('Budget details')).toBeInTheDocument(); expect(screen.getByText('Display name')).toBeInTheDocument(); expect(screen.getByText('I love Executive Education Only')).toBeInTheDocument(); - expect(screen.getByText('Budget starting balance ($)')).toBeInTheDocument(); + expect(screen.getByText('Budget starting balance')).toBeInTheDocument(); expect(screen.getByText('Not editable')).toBeTruthy(); expect(screen.getByText('$2,500')).toBeInTheDocument(); }); diff --git a/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDistributionDetail.test.jsx b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDistributionDetail.test.jsx new file mode 100644 index 000000000..ff11ce90c --- /dev/null +++ b/src/Configuration/Provisioning/SubsidyDetailView/PolicyDetailView/tests/PolicyDistributionDetail.test.jsx @@ -0,0 +1,51 @@ +import { render, screen } from '@testing-library/react'; +import '@testing-library/jest-dom/extend-expect'; +import PolicyDistributionDetail from '../PolicyDistributionDetail'; +import { initialStateValue, ProvisioningContext } from '../../../../testData/Provisioning'; + +describe('PolicyDistributionDetail', () => { + it('renders Learner selects option', () => { + const value = { + ...initialStateValue, + formData: { + ...initialStateValue.formData, + policies: [ + { + policyType: 'PerLearnerSpendCreditAccessPolicy', + }, + ], + }, + }; + const policyType = 'PerLearnerSpendCreditAccessPolicy'; + render( + + + , + ); + expect(screen.getByText('Budget distribution mode')).toBeInTheDocument(); + expect(screen.getByText('How is content selected?')).toBeInTheDocument(); + expect(screen.getByText('Learner selects content or LMS')).toBeInTheDocument(); + expect(screen.getByText('Not editable')).toBeInTheDocument(); + }); + it('renders Admin selects option', () => { + const value = { + ...initialStateValue, + formData: { + ...initialStateValue.formData, + policies: [ + { + policyType: 'AssignedLearnerCreditAccessPolicy', + }, + ], + }, + }; + const policyType = 'AssignedLearnerCreditAccessPolicy'; + render( + + + , + ); + expect(screen.getByText('Admin selects content')).toBeInTheDocument(); + expect(screen.getByText('Not editable')).toBeInTheDocument(); + }); +}); diff --git a/src/Configuration/Provisioning/SubsidyDetailView/tests/SubsidyDetailView.test.jsx b/src/Configuration/Provisioning/SubsidyDetailView/tests/SubsidyDetailView.test.jsx index 70c893d94..8436879f7 100644 --- a/src/Configuration/Provisioning/SubsidyDetailView/tests/SubsidyDetailView.test.jsx +++ b/src/Configuration/Provisioning/SubsidyDetailView/tests/SubsidyDetailView.test.jsx @@ -137,7 +137,7 @@ describe('SubsidyDetailView', () => { expect(screen.getByText('Budget details')).toBeInTheDocument(); expect(screen.getByText('Open Courses')).toBeInTheDocument(); expect(screen.getByText('Display name')).toBeInTheDocument(); - expect(screen.getByText('Budget starting balance ($)')).toBeInTheDocument(); + expect(screen.getByText('Budget starting balance')).toBeInTheDocument(); expect(screen.getByText('$5,000')).toBeInTheDocument(); expect(screen.getByText('Catalog')).toBeInTheDocument(); expect(screen.getByText('Limits')).toBeInTheDocument(); diff --git a/src/Configuration/Provisioning/data/constants.js b/src/Configuration/Provisioning/data/constants.js index 7c28e917b..84c8e39ba 100644 --- a/src/Configuration/Provisioning/data/constants.js +++ b/src/Configuration/Provisioning/data/constants.js @@ -104,9 +104,9 @@ const PROVISIONING_PAGE_TEXT = { OPTIONS: { displayName: 'Display name', totalAccountValue: { - title: 'Budget starting balance ($)', - subtitle: 'The contracted USD value available through the budget.', - dynamicSubtitle: (budgetType) => `The contracted USD value available through the budget redeemable for ${budgetType} enrollment.`, + title: 'Budget starting balance', + subtitle: 'The total contracted USD value available through the budget.', + dynamicSubtitle: (budgetType) => `The total contracted USD value available through the budget redeemable for ${budgetType} enrollment.`, }, }, ERROR: { diff --git a/src/Configuration/testData/constants.js b/src/Configuration/testData/constants.js index 418fb1733..d2fe6c37a 100644 --- a/src/Configuration/testData/constants.js +++ b/src/Configuration/testData/constants.js @@ -206,6 +206,7 @@ export const sampleSinglePolicyPredefinedCatalogQueryFormData = { accountValue: '250000', perLearnerCap: true, perLearnerCapAmount: '2000', + policyType: 'PerLearnerSpendCreditAccessPolicy', }, ], enterpriseUUID: uuidv4(),