Repository navigation
Expand file tree
/
Copy pathNav.unit.test.jsx
More file actions
78 lines (66 loc) · 2.11 KB
/
Copy pathNav.unit.test.jsx
File metadata and controls
78 lines (66 loc) · 2.11 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/* eslint-disable react/prop-types */
import React from 'react';
import { reduxRender } from '../../../../test-utils';
import Nav from './Nav';
jest.mock('../../../../utils/generateRandomName');
// Mock the editor version so the snapshot stays stable across releases.
// The component reads the real version from package.json at runtime (it bumps
// every release), which would otherwise break these snapshots each release day.
jest.mock('../../../../../package.json', () => ({ version: '1.2.3' }));
// mock Menubar
jest.mock('../../../../components/Menubar/Menubar', () => ({
Menubar: ({ children, className = 'nav__menubar' }) => (
<ul className={className} role="menubar">
{children}
</ul>
)
}));
// mock MenubarSubmenu
jest.mock('../../../../components/Menubar/MenubarSubmenu', () => {
const MenubarSubmenu = ({ children, title }) => (
<li className="nav__item">
<span role="menuitem">{title}</span>
<ul role="menu" aria-label={`${title} menu`}>
{children}
</ul>
</li>
);
const useMenuProps = () => ({
isOpen: false,
handlers: {}
});
return {
__esModule: true,
MenubarSubmenu,
useMenuProps
};
});
// mock MenubarItem
jest.mock('../../../../components/Menubar/MenubarItem', () => ({
MenubarItem: ({ children, hideIf }) => {
if (hideIf) return null;
return <li>{children}</li>;
}
}));
describe('Nav', () => {
it('renders editor version for desktop', () => {
const { asFragment } = reduxRender(<Nav />, { mobile: false });
expect(asFragment()).toMatchSnapshot();
});
it('renders editor version for mobile', () => {
const { asFragment } = reduxRender(<Nav />, { mobile: true });
expect(asFragment()).toMatchSnapshot();
});
it('renders dashboard version for desktop', () => {
const { asFragment } = reduxRender(<Nav layout="dashboard" />, {
mobile: false
});
expect(asFragment()).toMatchSnapshot();
});
it('renders dashboard version for mobile', () => {
const { asFragment } = reduxRender(<Nav layout="dashboard" />, {
mobile: true
});
expect(asFragment()).toMatchSnapshot();
});
});