|
3 | 3 | import * as React from 'react'; |
4 | 4 | import { render } from '@testing-library/react'; |
5 | 5 |
|
| 6 | +import { warnOnce } from '@cloudscape-design/component-toolkit/internal'; |
| 7 | + |
6 | 8 | import Icon from '../../../lib/components/icon'; |
7 | 9 | import KeyValuePairs from '../../../lib/components/key-value-pairs'; |
8 | 10 | import Link from '../../../lib/components/link'; |
9 | 11 | import SpaceBetween from '../../../lib/components/space-between'; |
10 | 12 | import createWrapper, { IconWrapper } from '../../../lib/components/test-utils/dom'; |
11 | 13 |
|
| 14 | +jest.mock('@cloudscape-design/component-toolkit/internal', () => ({ |
| 15 | + ...jest.requireActual('@cloudscape-design/component-toolkit/internal'), |
| 16 | + warnOnce: jest.fn(), |
| 17 | +})); |
| 18 | + |
12 | 19 | function renderKeyValuePairs(jsx: React.ReactElement) { |
13 | 20 | const { container, ...rest } = render(jsx); |
14 | 21 | return { wrapper: createWrapper(container).findKeyValuePairs()!, ...rest }; |
15 | 22 | } |
16 | 23 |
|
17 | 24 | describe('KeyValuePairs', () => { |
| 25 | + afterEach(() => { |
| 26 | + (warnOnce as jest.Mock).mockReset(); |
| 27 | + }); |
| 28 | + |
18 | 29 | describe('item rendering', () => { |
19 | 30 | test('renders correctly', () => { |
20 | 31 | const { wrapper } = renderKeyValuePairs( |
@@ -95,6 +106,25 @@ describe('KeyValuePairs', () => { |
95 | 106 | }); |
96 | 107 | }); |
97 | 108 |
|
| 109 | + describe('warnOnce when columns property exceeds max', () => { |
| 110 | + test.each([ |
| 111 | + { columns: 1, warnOnceMessage: false }, |
| 112 | + { columns: 2, warnOnceCalled: false }, |
| 113 | + { |
| 114 | + columns: 3, |
| 115 | + warnOnceCalled: false, |
| 116 | + }, |
| 117 | + { columns: 4, warnOnceCalled: false }, |
| 118 | + { |
| 119 | + columns: 5, |
| 120 | + warnOnceCalled: true, |
| 121 | + }, |
| 122 | + ])(`warnOnce called = $warnOnceCalled when columns is set to $columns`, ({ columns, warnOnceCalled }) => { |
| 123 | + renderKeyValuePairs(<KeyValuePairs items={[]} columns={columns} />); |
| 124 | + expect(warnOnce).toHaveBeenCalledTimes(warnOnceCalled ? 1 : 0); |
| 125 | + }); |
| 126 | + }); |
| 127 | + |
98 | 128 | describe('column layout', () => { |
99 | 129 | test('renders correctly', () => { |
100 | 130 | const { wrapper } = renderKeyValuePairs( |
|
0 commit comments