-
Notifications
You must be signed in to change notification settings - Fork 6.5k
Expand file tree
/
Copy pathindex.test.jsx
More file actions
52 lines (40 loc) · 1.53 KB
/
index.test.jsx
File metadata and controls
52 lines (40 loc) · 1.53 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
import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import * as TabsPrimitive from '@radix-ui/react-tabs';
import { render, screen } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import Tabs from '../index';
const Sut = ({ addons }) => {
const tabs = [
{ key: 'package', label: 'Package Manager' },
{ key: 'prebuilt', label: 'Prebuilt Installer' },
{ key: 'source', label: 'Source Code' },
];
return (
<Tabs tabs={tabs} defaultValue="package" addons={addons}>
<TabsPrimitive.Content value="package">
Package Manager
</TabsPrimitive.Content>
<TabsPrimitive.Content value="prebuilt">
Prebuilt Installer
</TabsPrimitive.Content>
<TabsPrimitive.Content value="source">Source Code</TabsPrimitive.Content>
</Tabs>
);
};
describe('Tabs', () => {
it('should render the correct number of tabs', async () => {
render(<Sut />);
assert.strictEqual(screen.getAllByRole('tab').length, 3);
});
it('should render the correct tab content when clicked', async () => {
render(<Sut />);
assert.equal(screen.getByRole('tabpanel').textContent, 'Package Manager');
await userEvent.click(screen.getByRole('tab', { name: 'Source Code' }));
assert.equal(screen.getByRole('tabpanel').textContent, 'Source Code');
});
it('should render the given addons', async () => {
render(<Sut addons={<a href="/">addon</a>} />);
assert.ok(screen.getByRole('link', { name: 'addon' }).ownerDocument);
});
});