Skip to content

Commit d000c5a

Browse files
Niloofar/ Added tests for MobileMenu component (#141)
* test: added test cases for mobile menu component * fix: review comments
1 parent 53f0c71 commit d000c5a

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import { BrowserRouter } from 'react-router-dom';
2+
import { QueryParamProvider } from 'use-query-params';
3+
import { ReactRouter5Adapter } from 'use-query-params/adapters/react-router-5';
4+
import { useModalManager } from '@/hooks';
5+
import { useDevice } from '@deriv-com/ui';
6+
import { render, screen } from '@testing-library/react';
7+
import userEvent from '@testing-library/user-event';
8+
import MobileMenu from '../MobileMenu';
9+
10+
jest.mock('@/hooks', () => ({
11+
useModalManager: jest.fn().mockReturnValue({
12+
hideModal: jest.fn(),
13+
isModalOpenFor: jest.fn().mockReturnValue(false),
14+
showModal: jest.fn(),
15+
}),
16+
useNetworkStatus: jest.fn().mockReturnValue('online'),
17+
useSyncedTime: jest.fn(),
18+
}));
19+
20+
jest.mock('@deriv-com/ui', () => ({
21+
...jest.requireActual('@deriv-com/ui'),
22+
useDevice: jest.fn(),
23+
}));
24+
25+
jest.mock('@deriv-com/api-hooks', () => ({
26+
useAuthData: jest.fn().mockReturnValue({
27+
isAuthorized: true,
28+
}),
29+
}));
30+
31+
jest.mock('@deriv-com/translations', () => ({
32+
useTranslations: jest.fn().mockReturnValue({
33+
currentLang: 'EN',
34+
localize: jest.fn(text => text),
35+
}),
36+
}));
37+
38+
const MobileMenuComponent = () => (
39+
<BrowserRouter>
40+
<QueryParamProvider adapter={ReactRouter5Adapter}>
41+
<MobileMenu />
42+
</QueryParamProvider>
43+
</BrowserRouter>
44+
);
45+
46+
describe('MobileMenu component', () => {
47+
it('should not render when isDesktop is true', () => {
48+
(useDevice as jest.Mock).mockReturnValue({ isDesktop: true });
49+
render(<MobileMenuComponent />);
50+
expect(screen.queryByText('Menu')).not.toBeInTheDocument();
51+
});
52+
53+
it('should render toggle button and handle click', async () => {
54+
(useDevice as jest.Mock).mockReturnValue({ isDesktop: false });
55+
render(<MobileMenuComponent />);
56+
expect(screen.queryByText('Menu')).not.toBeInTheDocument();
57+
await userEvent.click(screen.getByRole('button'));
58+
expect(screen.getByText('Menu')).toBeInTheDocument();
59+
});
60+
61+
it('should open the language settings', async () => {
62+
(useDevice as jest.Mock).mockReturnValue({ isDesktop: false });
63+
const { isModalOpenFor, showModal } = useModalManager();
64+
65+
render(<MobileMenuComponent />);
66+
await userEvent.click(screen.getByRole('button'));
67+
expect(screen.getByText('EN')).toBeInTheDocument();
68+
69+
await userEvent.click(screen.getByText('EN'));
70+
71+
expect(showModal).toHaveBeenCalledWith('MobileLanguagesDrawer');
72+
expect(isModalOpenFor).toHaveBeenCalledWith('MobileLanguagesDrawer');
73+
});
74+
});

0 commit comments

Comments
 (0)