Skip to content

Commit c121111

Browse files
test: edit unit tests
1 parent e6a5c27 commit c121111

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

src/dateExtensions/DateExtensionsPage.test.tsx

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { render, screen } from '@testing-library/react';
2+
import userEvent from '@testing-library/user-event';
23
import { IntlProvider } from '@openedx/frontend-base';
34
import { MemoryRouter, Route, Routes } from 'react-router-dom';
45
import DateExtensionsPage from './DateExtensionsPage';
5-
import { useDateExtensions } from '../data/apiHook';
6+
import { useDateExtensions, useResetDateExtensionMutation } from '../data/apiHook';
67

78
jest.mock('../data/apiHook', () => ({
89
useDateExtensions: jest.fn(),
10+
useResetDateExtensionMutation: jest.fn(),
911
}));
1012

1113
const mockDateExtensions = [
@@ -25,6 +27,9 @@ describe('DateExtensionsPage', () => {
2527
data: mockDateExtensions,
2628
isLoading: false,
2729
});
30+
(useResetDateExtensionMutation as jest.Mock).mockReturnValue({
31+
mutate: jest.fn(),
32+
});
2833
});
2934

3035
const RenderWithRouter = () => (
@@ -67,4 +72,37 @@ describe('DateExtensionsPage', () => {
6772
const resetLinks = screen.getAllByRole('button', { name: 'Reset Extensions' });
6873
expect(resetLinks).toHaveLength(mockDateExtensions.length);
6974
});
75+
76+
it('opens reset modal when reset button is clicked', async () => {
77+
render(<RenderWithRouter />);
78+
const user = userEvent.setup();
79+
const resetButton = screen.getByRole('button', { name: 'Reset Extensions' });
80+
await user.click(resetButton);
81+
expect(screen.getByRole('dialog')).toBeInTheDocument();
82+
expect(screen.getByText(/reset extensions for/i)).toBeInTheDocument();
83+
const confirmButton = screen.getByRole('button', { name: /reset due date/i });
84+
expect(confirmButton).toBeInTheDocument();
85+
});
86+
87+
it('calls reset mutation when confirm reset is clicked', async () => {
88+
const mutateMock = jest.fn();
89+
(useResetDateExtensionMutation as jest.Mock).mockReturnValue({ mutate: mutateMock });
90+
render(<RenderWithRouter />);
91+
const user = userEvent.setup();
92+
const resetButton = screen.getByRole('button', { name: 'Reset Extensions' });
93+
await user.click(resetButton);
94+
const confirmButton = screen.getByRole('button', { name: /reset due date/i });
95+
await user.click(confirmButton);
96+
expect(mutateMock).toHaveBeenCalled();
97+
});
98+
99+
it('closes reset modal when cancel is clicked', async () => {
100+
render(<RenderWithRouter />);
101+
const user = userEvent.setup();
102+
const resetButton = screen.getByRole('button', { name: 'Reset Extensions' });
103+
await user.click(resetButton);
104+
const cancelButton = screen.getByRole('button', { name: /cancel/i });
105+
await user.click(cancelButton);
106+
expect(screen.queryByRole('dialog')).not.toBeInTheDocument();
107+
});
70108
});

0 commit comments

Comments
 (0)