Skip to content

Commit bd0ca4e

Browse files
committed
chore: add tests for test utils
1 parent a524549 commit bd0ca4e

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
import * as React from 'react';
5+
import { render } from '@testing-library/react';
6+
7+
import Dropdown from '../../../lib/components/dropdown/internal';
8+
import createWrapper from '../../../lib/components/test-utils/dom';
9+
10+
function renderDropdown(props?: Partial<React.ComponentProps<typeof Dropdown>>) {
11+
const { container } = render(<Dropdown trigger={<button />} open={true} {...props} />);
12+
const wrapper = createWrapper(container).findDropdown()!;
13+
return { container, wrapper };
14+
}
15+
16+
describe('test utils', () => {
17+
describe('findTrigger', () => {
18+
test('returns the trigger element', () => {
19+
const { wrapper } = renderDropdown({ trigger: <button data-testid="trigger">open</button> });
20+
expect(wrapper.findTrigger().getElement()).toContainHTML('button');
21+
});
22+
});
23+
24+
describe('findDropdown', () => {
25+
test('returns the open dropdown', () => {
26+
const { wrapper } = renderDropdown();
27+
expect(wrapper.findDropdown().findOpenDropdown()).not.toBeNull();
28+
});
29+
30+
test('returns null for closed dropdown', () => {
31+
const { wrapper } = renderDropdown({ open: false });
32+
expect(wrapper.findDropdown().findOpenDropdown()).toBeNull();
33+
});
34+
});
35+
36+
describe('findContent', () => {
37+
test('returns the dropdown content', () => {
38+
const { wrapper } = renderDropdown({ content: <div>content</div> });
39+
expect(wrapper.findContent()).not.toBeNull();
40+
});
41+
42+
test('returns null when dropdown is closed', () => {
43+
const { wrapper } = renderDropdown({ open: false, content: <div>content</div> });
44+
expect(wrapper.findContent()).toBeNull();
45+
});
46+
});
47+
48+
describe('findHeader', () => {
49+
test('returns the header when provided', () => {
50+
const { wrapper } = renderDropdown({ header: <div>header text</div> });
51+
expect(wrapper.findHeader()!.getElement()).toHaveTextContent('header text');
52+
});
53+
54+
test('returns null when no header is provided', () => {
55+
const { wrapper } = renderDropdown();
56+
expect(wrapper.findHeader()).toBeNull();
57+
});
58+
});
59+
60+
describe('findFooter', () => {
61+
test('returns the footer when provided', () => {
62+
const { wrapper } = renderDropdown({ footer: <div>footer text</div> });
63+
expect(wrapper.findFooter()!.getElement()).toHaveTextContent('footer text');
64+
});
65+
66+
test('returns null when no footer is provided', () => {
67+
const { wrapper } = renderDropdown();
68+
expect(wrapper.findFooter()).toBeNull();
69+
});
70+
});
71+
72+
describe('openDropdown', () => {
73+
test('opens the dropdown on trigger click', () => {
74+
const { wrapper } = renderDropdown({ open: false });
75+
expect(wrapper.findDropdown().findOpenDropdown()).toBeNull();
76+
wrapper.openDropdown();
77+
// openDropdown fires a click event; open state is controlled externally
78+
expect(wrapper.findTrigger().getElement()).toBeTruthy();
79+
});
80+
});
81+
});

0 commit comments

Comments
 (0)