Skip to content

Commit 3fcadf5

Browse files
authored
fix: lms access link and budget filter (#1229)
fix: lms access link and budget filter
1 parent 093c977 commit 3fcadf5

File tree

3 files changed

+72
-38
lines changed

3 files changed

+72
-38
lines changed

src/components/learner-credit-management/BudgetDetailPageOverviewAvailability.jsx

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const BudgetActions = ({
3030
const { enterpriseSlug, enterpriseAppPage } = useParams();
3131
const { subsidyAccessPolicyId } = useBudgetId();
3232
const { data: subsidyAccessPolicy } = useSubsidyAccessPolicy(subsidyAccessPolicyId);
33-
const { data: appliesToAllContexts } = useEnterpriseGroup(subsidyAccessPolicy);
33+
const { data: enterpriseGroup } = useEnterpriseGroup(subsidyAccessPolicy);
3434
const { data: enterpriseCustomer } = useEnterpriseCustomer(enterpriseId);
3535
const { openInviteModal } = useContext(BudgetDetailPageContext);
3636
const supportUrl = configuration.ENTERPRISE_SUPPORT_URL;
@@ -95,15 +95,15 @@ const BudgetActions = ({
9595

9696
if (!isAssignable) {
9797
if (enterpriseGroupsV1) {
98-
if (isLmsBudget(enterpriseCustomer?.activeIntegrations.length, appliesToAllContexts)) {
98+
if (isLmsBudget(enterpriseCustomer?.activeIntegrations.length, enterpriseGroup?.appliesToAllContexts)) {
9999
return (
100100
<div className="h-100 d-flex align-items-center pt-4 pt-lg-0">
101101
<div>
102102
<h3>
103103
<FormattedMessage
104104
id="lcm.budget.detail.page.overview.budget.actions.manage.edx.in.integrated.learning.platform"
105105
defaultMessage="Manage edX in your integrated learning platform"
106-
description="Titlte which tells to customer to manage edX in their integrated learning platform"
106+
description="Title which tells to customer to manage edX in their integrated learning platform"
107107
/>
108108
</h3>
109109
<p>
@@ -114,7 +114,7 @@ const BudgetActions = ({
114114
values={{ apostrophe: "'" }}
115115
/>
116116
</p>
117-
<Link to={`/${enterpriseSlug}/admin/settings/lms`}>
117+
<Link to={`/${enterpriseSlug}/admin/settings/access`}>
118118
<Button variant="outline-primary">
119119
<FormattedMessage
120120
id="lcm.budget.detail.page.overview.budget.actions.configure.access"
@@ -126,36 +126,41 @@ const BudgetActions = ({
126126
</div>
127127
</div>
128128
);
129-
} if (appliesToAllContexts === true) {
130-
<div className="h-100 d-flex align-items-center pt-4 pt-lg-0">
131-
<div>
132-
<h3>
133-
<FormattedMessage
134-
id="lcm.budget.detail.page.overview.budget.actions.manage.edx.for.organization"
135-
defaultMessage="Manage edX for your organization"
136-
description="Title for the budget actions section on the budget detail page overview"
137-
/>
138-
</h3>
139-
<p>
140-
<FormattedMessage
141-
id="lcm.budget.detail.page.overview.budget.actions.all.people.choose.learn"
142-
defaultMessage="All people in your organization can choose what to learn
143-
from the catalog and spend from the available balance to enroll."
144-
description="Decription which tells that user can choose from the catalog and spend from the available balance to enroll"
145-
/>
146-
</p>
147-
<Link to={`/${enterpriseSlug}/admin/settings/access`}>
148-
<Button variant="outline-primary">
129+
}
130+
131+
if (enterpriseGroup?.appliesToAllContexts === true) {
132+
return (
133+
<div className="h-100 d-flex align-items-center pt-4 pt-lg-0">
134+
<div>
135+
<h3>
149136
<FormattedMessage
150-
id="lcm.budget.detail.page.overview.budget.actions.configure.access.general"
151-
defaultMessage="Configure access"
152-
description="Configure access button on the budget detail page overview"
137+
id="lcm.budget.detail.page.overview.budget.actions.manage.edx.for.organization"
138+
defaultMessage="Manage edX for your organization"
139+
description="Title for the budget actions section on the budget detail page overview"
153140
/>
154-
</Button>
155-
</Link>,
141+
</h3>
142+
<p>
143+
<FormattedMessage
144+
id="lcm.budget.detail.page.overview.budget.actions.all.people.choose.learn"
145+
defaultMessage="All people in your organization can choose what to learn
146+
from the catalog and spend from the available balance to enroll."
147+
description="Description which tells that user can choose from the catalog and spend from the available balance to enroll"
148+
/>
149+
</p>
150+
<Link to={`/${enterpriseSlug}/admin/settings/access`}>
151+
<Button variant="outline-primary">
152+
<FormattedMessage
153+
id="lcm.budget.detail.page.overview.budget.actions.configure.access.general"
154+
defaultMessage="Configure access"
155+
description="Configure access button on the budget detail page overview"
156+
/>
157+
</Button>
158+
</Link>
159+
</div>
156160
</div>
157-
</div>;
161+
);
158162
}
163+
159164
return (
160165
<div className="h-100 d-flex align-items-center pt-4 pt-lg-0">
161166
<div>

src/components/learner-credit-management/MultipleBudgetsPicker.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ const MultipleBudgetsPicker = ({
8585
description: 'Header for the status column in the budget picker page.',
8686
}),
8787
accessor: 'status',
88+
filter: 'includesValue',
8889
Filter: CheckboxFilter,
8990
filterChoices: reducedChoices,
9091
},

src/components/learner-credit-management/tests/MultipleBudgetsPage.test.jsx

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
render,
1010
} from '@testing-library/react';
1111
import '@testing-library/jest-dom/extend-expect';
12+
import userEvent from '@testing-library/user-event';
1213

1314
import { IntlProvider } from '@edx/frontend-platform/i18n';
1415

@@ -36,14 +37,34 @@ jest.mock('../../EnterpriseSubsidiesContext/data/hooks', () => ({
3637
...jest.requireActual('../../EnterpriseSubsidiesContext/data/hooks'),
3738
useEnterpriseBudgets: jest.fn().mockReturnValue({
3839
data: {
39-
budgets: [{
40-
source: 'subsidy',
41-
id: '392f1fe1-ee91-4f44-b174-13ecf59866eb',
42-
name: 'Subsidy 2 for Executive Education (2U) Integration QA',
43-
start: '2023-06-07T15:38:29Z',
44-
end: '2024-06-07T15:38:30Z',
45-
isCurrent: true,
46-
},
40+
budgets: [
41+
{
42+
source: 'subsidy',
43+
id: '392f1fe1-ee91-4f44-b174-13ecf59866eb',
44+
name: 'Subsidy 2 for Executive Education (2U) Integration QA',
45+
start: '2023-06-07T15:38:29Z',
46+
end: '2024-06-07T15:38:30Z',
47+
isCurrent: true,
48+
isRetired: false,
49+
},
50+
{
51+
source: 'subsidy',
52+
id: '392f1fe1-ee91-4f44-b174-13ecf59866e3',
53+
name: 'Subsidy 3',
54+
start: '2023-06-07T15:38:29Z',
55+
end: '2024-06-07T15:38:30Z',
56+
isCurrent: true,
57+
isRetired: true,
58+
},
59+
{
60+
source: 'subsidy',
61+
id: '392f1fe1-ee91-4f44-b174-13ecf59866ef',
62+
name: 'Subsidy 4',
63+
start: '2023-06-07T15:38:29Z',
64+
end: '2024-06-07T15:38:30Z',
65+
isCurrent: true,
66+
isRetired: false,
67+
},
4768
],
4869
},
4970
}),
@@ -88,6 +109,13 @@ describe('<MultipleBudgetsPage />', () => {
88109
it('budgets for your organization', () => {
89110
render(<MultipleBudgetsPageWrapper enterpriseUUID={enterpriseUUID} enterpriseSlug={enterpriseId} />);
90111
expect(screen.getByText('Budgets'));
112+
const filterButton = screen.getByText('Filters');
113+
userEvent.click(filterButton);
114+
const checkboxes = screen.queryAllByRole('checkbox');
115+
checkboxes.forEach(checkbox => {
116+
userEvent.click(checkbox);
117+
});
118+
expect(screen.getByText('Showing 3 of 3.')).toBeInTheDocument();
91119
});
92120
it('Shows loading spinner', () => {
93121
const enterpriseSubsidiesContextValue = {

0 commit comments

Comments
 (0)