forked from openedx/frontend-app-learner-dashboard
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathExploreProgramsCTA.test.tsx
More file actions
64 lines (49 loc) · 2.08 KB
/
ExploreProgramsCTA.test.tsx
File metadata and controls
64 lines (49 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import { render, screen } from '@testing-library/react';
import { getConfig } from '@edx/frontend-platform';
import { IntlProvider } from '@edx/frontend-platform/i18n';
import ExploreProgramsCTA from './ExploreProgramsCTA';
import messages from './messages';
jest.mock('@edx/frontend-platform', () => ({
getConfig: jest.fn(() => ({
LMS_BASE_URL: 'https://courses.example.com',
EXPLORE_PROGRAMS_URL: null,
})),
}));
describe('ExploreProgramsCTA', () => {
beforeEach(() => {
jest.clearAllMocks();
});
const renderComponent = (props = {}) => render(
<IntlProvider locale="en">
<ExploreProgramsCTA {...props} />
</IntlProvider>,
);
it('renders the expected CTA text when there are enrollments', () => {
renderComponent();
expect(screen.getByText(messages.exploreProgramsCTAText.defaultMessage)).toBeInTheDocument();
});
it('renders the expected CTA when there are no enrollments', () => {
renderComponent({ hasEnrollments: false });
expect(screen.getByText(messages.hasNoEnrollmentsText.defaultMessage)).toBeInTheDocument();
});
it('renders the button with the expected text', () => {
renderComponent();
expect(screen.getByRole('link', { name: messages.exploreProgramsCTAButtonText.defaultMessage })).toBeInTheDocument();
});
it('uses EXPLORE_PROGRAMS_URL when it is defined', () => {
const customUrl = 'https://custom.explore.url/programs';
getConfig.mockReturnValueOnce({
LMS_BASE_URL: 'https://courses.example.com',
EXPLORE_PROGRAMS_URL: customUrl,
});
renderComponent();
const button = screen.getByRole('link', { name: messages.exploreProgramsCTAButtonText.defaultMessage });
expect(button).toHaveAttribute('href', customUrl);
});
it('falls back to LMS_BASE_URL/courses when EXPLORE_PROGRAMS_URL is not defined', () => {
renderComponent();
const button = screen.getByRole('link', { name: messages.exploreProgramsCTAButtonText.defaultMessage });
const expectedFallbackUrl = `${getConfig().LMS_BASE_URL}/courses`;
expect(button).toHaveAttribute('href', expectedFallbackUrl);
});
});