@moda/om 16.0.0 → 16.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dist/index.cjs.js +159 -18
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +159 -18
- package/dist/index.esm.js.map +1 -1
- package/dist/{__mocks__ → src/__mocks__}/Icon.d.ts +0 -0
- package/dist/{components → src/components}/AspectRatioBox/AspectRatioBox.d.ts +0 -0
- package/dist/{components → src/components}/AspectRatioBox/AspectRatioBox.stories.d.ts +0 -0
- package/dist/{components → src/components}/AspectRatioBox/AspectRatioBox.test.d.ts +0 -0
- package/dist/{components → src/components}/AspectRatioBox/index.d.ts +0 -0
- package/dist/{components → src/components}/Badge/Badge.d.ts +0 -0
- package/dist/{components → src/components}/Badge/Badge.stories.d.ts +0 -0
- package/dist/{components → src/components}/Badge/Badge.test.d.ts +0 -0
- package/dist/{components → src/components}/Badge/index.d.ts +0 -0
- package/dist/{components → src/components}/Breadcrumbs/Breadcrumb/Breadcrumb.d.ts +0 -0
- package/dist/{components → src/components}/Breadcrumbs/Breadcrumb/index.d.ts +0 -0
- package/dist/{components → src/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
- package/dist/{components → src/components}/Breadcrumbs/Breadcrumbs.stories.d.ts +0 -0
- package/dist/{components → src/components}/Breadcrumbs/Breadcrumbs.test.d.ts +0 -0
- package/dist/{components → src/components}/Breadcrumbs/index.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/Breakpoint.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/Breakpoint.stories.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/Breakpoint.test.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/BreakpointProvider.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/generateMediaQuery.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/generateMediaQuery.test.d.ts +0 -0
- package/dist/{components → src/components}/Breakpoint/index.d.ts +0 -0
- package/dist/{components → src/components}/Button/Button.d.ts +0 -0
- package/dist/{components → src/components}/Button/Button.stories.d.ts +0 -0
- package/dist/{components → src/components}/Button/Button.test.d.ts +0 -0
- package/dist/{components → src/components}/Button/index.d.ts +0 -0
- package/dist/{components → src/components}/Checkbox/Checkbox.d.ts +2 -0
- package/dist/{components → src/components}/Checkbox/Checkbox.stories.d.ts +0 -0
- package/dist/{components → src/components}/Checkbox/Checkbox.test.d.ts +0 -0
- package/dist/{components → src/components}/Checkbox/index.d.ts +0 -0
- package/dist/{components → src/components}/Clickable/Clickable.d.ts +0 -0
- package/dist/{components → src/components}/Clickable/Clickable.stories.d.ts +0 -0
- package/dist/{components → src/components}/Clickable/Clickable.test.d.ts +0 -0
- package/dist/{components → src/components}/Clickable/index.d.ts +0 -0
- package/dist/{components → src/components}/ColorSwatch/ColorSwatch.d.ts +0 -0
- package/dist/{components → src/components}/ColorSwatch/ColorSwatch.stories.d.ts +0 -0
- package/dist/{components → src/components}/ColorSwatch/ColorSwatch.test.d.ts +0 -0
- package/dist/{components → src/components}/ColorSwatch/index.d.ts +0 -0
- package/dist/{components → src/components}/ColorSwatch/skuColors.d.ts +0 -0
- package/dist/{components → src/components}/Constrain/Constrain.d.ts +0 -0
- package/dist/{components → src/components}/Constrain/Constrain.stories.d.ts +0 -0
- package/dist/{components → src/components}/Constrain/Constrain.test.d.ts +0 -0
- package/dist/{components → src/components}/Constrain/ExceedConstrain.d.ts +0 -0
- package/dist/{components → src/components}/Constrain/ExceedConstrain.stories.d.ts +0 -0
- package/dist/{components → src/components}/Constrain/index.d.ts +0 -0
- package/dist/{components → src/components}/ControlLink/ControlLink.d.ts +0 -0
- package/dist/{components → src/components}/ControlLink/ControlLink.stories.d.ts +0 -0
- package/dist/{components → src/components}/ControlLink/ControlLink.test.d.ts +0 -0
- package/dist/{components → src/components}/ControlLink/index.d.ts +0 -0
- package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInput.d.ts +0 -0
- package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInput.stories.d.ts +0 -0
- package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInput.test.d.ts +0 -0
- package/dist/{components → src/components}/CreditCardNumberInput/CreditCardNumberInputField.d.ts +0 -0
- package/dist/{components → src/components}/CreditCardNumberInput/index.d.ts +0 -0
- package/dist/{components → src/components}/DefinitionList/DefinitionList.d.ts +0 -0
- package/dist/{components → src/components}/DefinitionList/DefinitionList.stories.d.ts +0 -0
- package/dist/{components → src/components}/DefinitionList/DefinitionList.test.d.ts +0 -0
- package/dist/{components → src/components}/DefinitionList/index.d.ts +0 -0
- package/dist/{components → src/components}/Divider/Divider.d.ts +0 -0
- package/dist/{components → src/components}/Divider/Divider.stories.d.ts +0 -0
- package/dist/{components → src/components}/Divider/Divider.test.d.ts +0 -0
- package/dist/{components → src/components}/Divider/NoLineDivider.d.ts +0 -0
- package/dist/{components → src/components}/Divider/TwoLineDivider.d.ts +0 -0
- package/dist/{components → src/components}/Divider/index.d.ts +0 -0
- package/dist/{components → src/components}/Expandable/Expandable.d.ts +0 -0
- package/dist/{components → src/components}/Expandable/Expandable.stories.d.ts +0 -0
- package/dist/{components → src/components}/Expandable/Expandable.test.d.ts +0 -0
- package/dist/{components → src/components}/Expandable/index.d.ts +0 -0
- package/dist/{components → src/components}/Field/Field.d.ts +0 -0
- package/dist/{components → src/components}/Field/Field.stories.d.ts +0 -0
- package/dist/{components → src/components}/Field/Field.test.d.ts +0 -0
- package/dist/{components → src/components}/Field/index.d.ts +0 -0
- package/dist/{components → src/components}/Label/Label.d.ts +0 -0
- package/dist/{components → src/components}/Label/Label.stories.d.ts +0 -0
- package/dist/{components → src/components}/Label/Label.test.d.ts +0 -0
- package/dist/{components → src/components}/Label/index.d.ts +0 -0
- package/dist/{components → src/components}/Loading/Loading.d.ts +0 -0
- package/dist/{components → src/components}/Loading/Loading.stories.d.ts +0 -0
- package/dist/{components → src/components}/Loading/Loading.test.d.ts +0 -0
- package/dist/{components → src/components}/Loading/index.d.ts +0 -0
- package/dist/{components → src/components}/LoadingBalls/LoadingBalls.d.ts +0 -0
- package/dist/{components → src/components}/LoadingBalls/LoadingBalls.stories.d.ts +0 -0
- package/dist/{components → src/components}/LoadingBalls/index.d.ts +0 -0
- package/dist/{components → src/components}/Modal/Modal.d.ts +0 -0
- package/dist/{components → src/components}/Modal/Modal.stories.d.ts +0 -0
- package/dist/{components → src/components}/Modal/Modal.test.d.ts +0 -0
- package/dist/{components → src/components}/Modal/index.d.ts +0 -0
- package/dist/{components → src/components}/ModalOverlay/ModalOverlay.d.ts +0 -0
- package/dist/{components → src/components}/ModalOverlay/ModalOverlay.stories.d.ts +0 -0
- package/dist/{components → src/components}/ModalOverlay/ModalOverlay.test.d.ts +0 -0
- package/dist/{components → src/components}/ModalOverlay/index.d.ts +0 -0
- package/dist/{components → src/components}/Overlay/Overlay.d.ts +0 -0
- package/dist/{components → src/components}/Overlay/Overlay.stories.d.ts +0 -0
- package/dist/{components → src/components}/Overlay/Overlay.test.d.ts +0 -0
- package/dist/{components → src/components}/Overlay/index.d.ts +0 -0
- package/dist/{components → src/components}/Paginator/Paginator.d.ts +0 -0
- package/dist/{components → src/components}/Paginator/Paginator.stories.d.ts +0 -0
- package/dist/{components → src/components}/Paginator/index.d.ts +0 -0
- package/dist/{components → src/components}/PasswordInput/PasswordInput.d.ts +0 -0
- package/dist/{components → src/components}/PasswordInput/PasswordInput.stories.d.ts +0 -0
- package/dist/{components → src/components}/PasswordInput/index.d.ts +0 -0
- package/dist/{components → src/components}/Popover/Popover.d.ts +0 -0
- package/dist/{components → src/components}/Popover/Popover.stories.d.ts +0 -0
- package/dist/{components → src/components}/Popover/Popover.test.d.ts +0 -0
- package/dist/{components → src/components}/Popover/index.d.ts +0 -0
- package/dist/{components → src/components}/PromoBanner/PromoBanner.d.ts +0 -0
- package/dist/{components → src/components}/PromoBanner/PromoBanner.stories.d.ts +0 -0
- package/dist/{components → src/components}/PromoBanner/PromoBanner.test.d.ts +0 -0
- package/dist/{components → src/components}/PromoBanner/index.d.ts +0 -0
- package/dist/{components → src/components}/RadioButton/RadioButton.d.ts +0 -0
- package/dist/{components → src/components}/RadioButton/RadioButton.stories.d.ts +0 -0
- package/dist/{components → src/components}/RadioButton/RadioButton.test.d.ts +0 -0
- package/dist/{components → src/components}/RadioButton/index.d.ts +0 -0
- package/dist/{components → src/components}/SearchInput/SearchInput.d.ts +0 -0
- package/dist/{components → src/components}/SearchInput/SearchInput.stories.d.ts +0 -0
- package/dist/{components → src/components}/SearchInput/SearchInput.test.d.ts +0 -0
- package/dist/{components → src/components}/SearchInput/index.d.ts +0 -0
- package/dist/{components → src/components}/Select/MultiSelect.d.ts +0 -0
- package/dist/{components → src/components}/Select/Select.d.ts +0 -0
- package/dist/{components → src/components}/Select/Select.stories.d.ts +0 -0
- package/dist/{components → src/components}/Select/Select.test.d.ts +0 -0
- package/dist/{components → src/components}/Select/SelectLabel.d.ts +0 -0
- package/dist/{components → src/components}/Select/SelectOption.d.ts +0 -0
- package/dist/{components → src/components}/Select/SelectOptions.d.ts +0 -0
- package/dist/{components → src/components}/Select/index.d.ts +0 -0
- package/dist/{components → src/components}/Select/useSelect.d.ts +0 -0
- package/dist/{components → src/components}/SelectableButton/SelectableButton.d.ts +0 -0
- package/dist/{components → src/components}/SelectableButton/SelectableButton.stories.d.ts +0 -0
- package/dist/{components → src/components}/SelectableButton/SelectableButton.test.d.ts +0 -0
- package/dist/{components → src/components}/SelectableButton/index.d.ts +0 -0
- package/dist/{components → src/components}/Shape/ArcWindow.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Bradley.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Brancusi.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Circle.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Diamond.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Keyhole.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Mirror.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Oval.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Shape.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Shape.stories.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Triangle.d.ts +0 -0
- package/dist/{components → src/components}/Shape/Window.d.ts +0 -0
- package/dist/{components → src/components}/Shape/index.d.ts +0 -0
- package/dist/{components → src/components}/Stack/Stack.d.ts +0 -0
- package/dist/{components → src/components}/Stack/Stack.stories.d.ts +0 -0
- package/dist/{components → src/components}/Stack/Stack.test.d.ts +0 -0
- package/dist/{components → src/components}/Stack/index.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/Tab.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/TabList.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/TabPanel.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/TabPanels.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/Tabs.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/Tabs.stories.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/Tabs.test.d.ts +0 -0
- package/dist/{components → src/components}/Tabs/index.d.ts +0 -0
- package/dist/{components → src/components}/Tag/Tag.d.ts +0 -0
- package/dist/{components → src/components}/Tag/Tag.stories.d.ts +0 -0
- package/dist/{components → src/components}/Tag/Tag.test.d.ts +0 -0
- package/dist/{components → src/components}/Tag/index.d.ts +0 -0
- package/dist/{components → src/components}/Text/Text.d.ts +0 -0
- package/dist/{components → src/components}/Text/Text.stories.d.ts +0 -0
- package/dist/{components → src/components}/Text/Text.test.d.ts +0 -0
- package/dist/{components → src/components}/Text/index.d.ts +0 -0
- package/dist/{components → src/components}/TextInput/TextInput.d.ts +0 -0
- package/dist/{components → src/components}/TextInput/TextInput.stories.d.ts +0 -0
- package/dist/{components → src/components}/TextInput/TextInput.test.d.ts +0 -0
- package/dist/{components → src/components}/TextInput/index.d.ts +0 -0
- package/dist/{components → src/components}/Textarea/Textarea.d.ts +0 -0
- package/dist/{components → src/components}/Textarea/Textarea.stories.d.ts +0 -0
- package/dist/{components → src/components}/Textarea/Textarea.test.d.ts +0 -0
- package/dist/{components → src/components}/Textarea/index.d.ts +0 -0
- package/dist/{components → src/components}/Toast/Toast.d.ts +0 -0
- package/dist/{components → src/components}/Toast/Toast.stories.d.ts +0 -0
- package/dist/{components → src/components}/Toast/Toast.test.d.ts +0 -0
- package/dist/{components → src/components}/Toast/index.d.ts +0 -0
- package/dist/{components → src/components}/VerticalDivider/VerticalDivider.d.ts +0 -0
- package/dist/{components → src/components}/VerticalDivider/VerticalDivider.stories.d.ts +0 -0
- package/dist/{components → src/components}/VerticalDivider/VerticalDivider.test.d.ts +0 -0
- package/dist/{components → src/components}/VerticalDivider/index.d.ts +0 -0
- package/dist/{components → src/components}/index.d.ts +0 -0
- package/dist/{hooks → src/hooks}/index.d.ts +0 -0
- package/dist/{hooks → src/hooks}/useBreakpoint.d.ts +0 -0
- package/dist/{hooks → src/hooks}/useClickOutside.d.ts +0 -0
- package/dist/{hooks → src/hooks}/useKeyboardListNavigation.d.ts +0 -0
- package/dist/{hooks → src/hooks}/useKeyboardListNavigation.spec.d.ts +0 -0
- package/dist/{hooks → src/hooks}/useUpdateEffect.d.ts +0 -0
- package/dist/{index.d.ts → src/index.d.ts} +0 -0
- package/dist/{mixins → src/mixins}/font-smoothing/font-smoothing.stories.d.ts +0 -0
- package/dist/{mixins → src/mixins}/overflow-scroll/overflow-scroll.stories.d.ts +0 -0
- package/dist/{mixins → src/mixins}/stack/stack.stories.d.ts +0 -0
- package/dist/{mixins → src/mixins}/thin-underline/thin-underline.stories.d.ts +0 -0
- package/dist/{mixins → src/mixins}/visually-hidden/visually-hidden.stories.d.ts +0 -0
- package/dist/{utilities → src/utilities}/States/State.d.ts +0 -0
- package/dist/{utilities → src/utilities}/States/States.d.ts +0 -0
- package/dist/{utilities → src/utilities}/States/StatesProps.d.ts +0 -0
- package/dist/{utilities → src/utilities}/States/index.d.ts +0 -0
- package/dist/{utilities → src/utilities}/States/isRenderProps.d.ts +0 -0
- package/dist/{utilities → src/utilities}/States/stringifyProps.d.ts +0 -0
- package/dist/{utilities → src/utilities}/index.d.ts +0 -0
- package/dist/{utilities → src/utilities}/omit.d.ts +0 -0
- package/dist/{utilities → src/utilities}/sample.d.ts +0 -0
- package/dist/styles.css +1 -1
- package/dist/test/mocks/matchMedia.d.ts +1 -0
- package/dist/test/setupTests.d.ts +3 -0
- package/package.json +20 -19
- package/src/components/AspectRatioBox/AspectRatioBox.test.tsx +3 -3
- package/src/components/Badge/Badge.test.tsx +5 -12
- package/src/components/Breadcrumbs/Breadcrumbs.test.tsx +5 -5
- package/src/components/Breakpoint/Breakpoint.test.tsx +7 -8
- package/src/components/Button/Button.test.tsx +14 -3
- package/src/components/Checkbox/Checkbox.scss +4 -14
- package/src/components/Checkbox/Checkbox.stories.tsx +2 -0
- package/src/components/Checkbox/Checkbox.test.tsx +10 -12
- package/src/components/Checkbox/Checkbox.tsx +22 -4
- package/src/components/Clickable/Clickable.test.tsx +3 -3
- package/src/components/ColorSwatch/ColorSwatch.test.tsx +3 -5
- package/src/components/Constrain/Constrain.test.tsx +4 -4
- package/src/components/ControlLink/ControlLink.test.tsx +10 -12
- package/src/components/CreditCardNumberInput/CreditCardNumberInput.test.tsx +16 -16
- package/src/components/DefinitionList/DefinitionList.test.tsx +4 -3
- package/src/components/Divider/Divider.test.tsx +5 -4
- package/src/components/Expandable/Expandable.test.tsx +17 -6
- package/src/components/Field/Field.test.tsx +21 -30
- package/src/components/Label/Label.test.tsx +3 -3
- package/src/components/Loading/Loading.test.tsx +3 -5
- package/src/components/Modal/Modal.test.tsx +6 -7
- package/src/components/ModalOverlay/ModalOverlay.test.tsx +9 -9
- package/src/components/Overlay/Overlay.test.tsx +3 -3
- package/src/components/Popover/Popover.test.tsx +9 -6
- package/src/components/PromoBanner/PromoBanner.test.tsx +3 -3
- package/src/components/RadioButton/RadioButton.test.tsx +6 -10
- package/src/components/SearchInput/SearchInput.test.tsx +10 -6
- package/src/components/Select/Select.stories.tsx +2 -1
- package/src/components/Select/Select.test.tsx +8 -8
- package/src/components/Select/Select.tsx +6 -1
- package/src/components/SelectableButton/SelectableButton.test.tsx +3 -3
- package/src/components/Stack/Stack.test.tsx +6 -4
- package/src/components/Tabs/Tabs.test.tsx +4 -5
- package/src/components/Tag/Tag.test.tsx +1 -1
- package/src/components/Text/Text.test.tsx +3 -5
- package/src/components/TextInput/TextInput.test.tsx +4 -5
- package/src/components/Textarea/Textarea.test.tsx +10 -15
- package/src/components/Toast/Toast.test.tsx +1 -1
- package/src/components/VerticalDivider/VerticalDivider.test.tsx +6 -7
- package/src/hooks/useKeyboardListNavigation.spec.ts +24 -63
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { ControlLink } from './ControlLink';
|
|
5
5
|
|
|
6
6
|
describe('ControlLink', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
10
|
-
|
|
11
|
-
);
|
|
8
|
+
render(<ControlLink> click me! </ControlLink>);
|
|
9
|
+
expect(screen.getByRole('button', { name: 'click me!' })).toBeVisible();
|
|
10
|
+
expect(screen.getByRole('button', { name: 'click me!' })).toBeEnabled();
|
|
12
11
|
});
|
|
13
12
|
|
|
14
13
|
it('renders correctly while disabled', () => {
|
|
15
|
-
|
|
16
|
-
expect(
|
|
17
|
-
'<button class="Clickable Clickable--disabled ControlLink ControlLink--underlined ControlLink--disabled" disabled=""> do not click me! </button>'
|
|
18
|
-
);
|
|
14
|
+
render(<ControlLink disabled> do not click me! </ControlLink>);
|
|
15
|
+
expect(screen.getByRole('button', { name: 'do not click me!' })).toBeDisabled();
|
|
19
16
|
});
|
|
20
17
|
|
|
21
18
|
it('renders correctly while underlined', () => {
|
|
22
|
-
|
|
23
|
-
expect(
|
|
24
|
-
|
|
19
|
+
render(<ControlLink underlined> click me! </ControlLink>);
|
|
20
|
+
expect(screen.getByRole('button', { name: 'click me!' })).toBeVisible();
|
|
21
|
+
expect(screen.getByRole('button', { name: 'click me!' })).toHaveClass(
|
|
22
|
+
'ControlLink--underlined'
|
|
25
23
|
);
|
|
26
24
|
});
|
|
27
25
|
});
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
4
|
import { CreditCardNumberInput } from './CreditCardNumberInput';
|
|
5
5
|
|
|
6
6
|
describe('credit card number input', () => {
|
|
7
7
|
it('renders without errors', () => {
|
|
8
|
-
|
|
9
|
-
const input = getByLabelText('Card Number');
|
|
10
|
-
expect(input).
|
|
8
|
+
render(<CreditCardNumberInput label='Card Number' />);
|
|
9
|
+
const input = screen.getByLabelText('Card Number');
|
|
10
|
+
expect(input).toBeInTheDocument();
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
// TODO: userEvent.type does not work here for some reason
|
|
14
|
-
xit('does not allow non-numeric characters', () => {
|
|
15
|
-
|
|
16
|
-
const input = getByLabelText('Card Number') as HTMLInputElement;
|
|
14
|
+
xit('does not allow non-numeric characters', async () => {
|
|
15
|
+
render(<CreditCardNumberInput label='Card Number' />);
|
|
16
|
+
const input = screen.getByLabelText('Card Number') as HTMLInputElement;
|
|
17
17
|
|
|
18
|
-
userEvent.type(input, 'foo1234');
|
|
18
|
+
await userEvent.type(input, 'foo1234');
|
|
19
19
|
|
|
20
20
|
expect(input.value).toBe('1234 ____ ____ ____');
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
// TODO: userEvent.type does not work here for some reason
|
|
24
|
-
xit('puts spaces between the numbers', () => {
|
|
25
|
-
|
|
26
|
-
const input = getByLabelText('Card Number') as HTMLInputElement;
|
|
24
|
+
xit('puts spaces between the numbers', async () => {
|
|
25
|
+
render(<CreditCardNumberInput label='Card Number' />);
|
|
26
|
+
const input = screen.getByLabelText('Card Number') as HTMLInputElement;
|
|
27
27
|
|
|
28
|
-
userEvent.type(input, '5510000000000000');
|
|
28
|
+
await userEvent.type(input, '5510000000000000');
|
|
29
29
|
|
|
30
30
|
expect(input.value).toBe('5510 0000 0000 0000');
|
|
31
31
|
});
|
|
32
32
|
|
|
33
33
|
// TODO: userEvent.type does not work here for some reason
|
|
34
|
-
xit('does not allow more characters than required', () => {
|
|
35
|
-
|
|
36
|
-
const input = getByLabelText('Card Number') as HTMLInputElement;
|
|
34
|
+
xit('does not allow more characters than required', async () => {
|
|
35
|
+
render(<CreditCardNumberInput label='Card Number' />);
|
|
36
|
+
const input = screen.getByLabelText('Card Number') as HTMLInputElement;
|
|
37
37
|
|
|
38
|
-
userEvent.type(input, '5510000000000000251');
|
|
38
|
+
await userEvent.type(input, '5510000000000000251');
|
|
39
39
|
|
|
40
40
|
expect(input.value).toBe('5510 0000 0000 0000');
|
|
41
41
|
});
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { DefinitionList } from './DefinitionList';
|
|
5
5
|
|
|
6
6
|
describe('DefinitionList', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
8
|
+
render(<DefinitionList term='Foo'>Bar</DefinitionList>);
|
|
9
|
+
expect(screen.getByText('Foo')).toBeVisible();
|
|
10
|
+
expect(screen.getByText('Bar')).toBeVisible();
|
|
10
11
|
});
|
|
11
12
|
});
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { Divider } from './Divider';
|
|
5
5
|
|
|
6
6
|
describe('Divider', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
10
|
-
|
|
8
|
+
render(<Divider style={{ padding: '30px 0' }} text='Hello' />);
|
|
9
|
+
expect(screen.getByText('Hello')).toBeVisible();
|
|
10
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
11
|
+
expect(screen.getByText('Hello').parentNode).toHaveStyle('padding: 30px 0px;');
|
|
11
12
|
});
|
|
12
13
|
});
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
3
4
|
|
|
4
5
|
import { Expandable } from './Expandable';
|
|
5
6
|
|
|
6
7
|
describe('Expandable', () => {
|
|
7
|
-
it('expands when clicked', () => {
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
it('expands when clicked', async () => {
|
|
9
|
+
const user = userEvent.setup();
|
|
10
|
+
|
|
11
|
+
render(
|
|
12
|
+
<Expandable virtual name='Hello'>
|
|
13
|
+
Goodbye
|
|
14
|
+
</Expandable>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
expect(screen.getByText('Hello')).toBeVisible();
|
|
18
|
+
expect(screen.queryByText('Goodbye')).not.toBeInTheDocument();
|
|
19
|
+
|
|
20
|
+
await user.click(screen.getByRole('button'));
|
|
21
|
+
|
|
22
|
+
expect(screen.getByText('Goodbye')).toBeVisible();
|
|
12
23
|
});
|
|
13
24
|
});
|
|
@@ -1,75 +1,66 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { Field } from './Field';
|
|
5
5
|
import { Select } from '../Select';
|
|
6
6
|
|
|
7
7
|
describe('Field', () => {
|
|
8
8
|
it('renders correctly', () => {
|
|
9
|
-
|
|
9
|
+
render(<Field placeholder='Placeholder' defaultValue='Hello' />);
|
|
10
10
|
|
|
11
|
-
expect(
|
|
12
|
-
|
|
13
|
-
);
|
|
11
|
+
expect(screen.getByRole('textbox')).toBeVisible();
|
|
12
|
+
expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Placeholder');
|
|
14
13
|
});
|
|
15
14
|
|
|
16
15
|
it('renders with a label', () => {
|
|
17
|
-
|
|
18
|
-
<Field placeholder='Placeholder' defaultValue='Hello' label='Label' />
|
|
19
|
-
);
|
|
16
|
+
render(<Field placeholder='Placeholder' defaultValue='Hello' label='Label' />);
|
|
20
17
|
|
|
21
|
-
expect(
|
|
22
|
-
|
|
23
|
-
);
|
|
18
|
+
expect(screen.getByRole('textbox')).toBeVisible();
|
|
19
|
+
expect(screen.getByRole('textbox')).toHaveAttribute('placeholder', 'Placeholder');
|
|
20
|
+
expect(screen.getByText('Label')).toBeVisible();
|
|
24
21
|
});
|
|
25
22
|
|
|
26
23
|
it('renders with an error', () => {
|
|
27
|
-
|
|
28
|
-
<Field placeholder='Placeholder' defaultValue='Hello' label='Label' error='Error' />
|
|
29
|
-
);
|
|
24
|
+
render(<Field placeholder='Placeholder' defaultValue='Hello' label='Label' error='Error' />);
|
|
30
25
|
|
|
31
|
-
expect(
|
|
32
|
-
|
|
33
|
-
);
|
|
26
|
+
expect(screen.getByRole('textbox')).toBeVisible();
|
|
27
|
+
expect(screen.getByRole('textbox')).toHaveClass('TextInput--error');
|
|
28
|
+
expect(screen.getByText('Error')).toBeVisible();
|
|
34
29
|
});
|
|
35
30
|
|
|
36
|
-
it('renders with
|
|
31
|
+
it('renders with <Select/> child', () => {
|
|
37
32
|
const options = [
|
|
38
33
|
{ value: 'foo', label: 'Foo' },
|
|
39
34
|
{ value: 'bar', label: 'Bar' },
|
|
40
35
|
{ value: 'baz', label: 'Baz', disabled: true }
|
|
41
36
|
];
|
|
42
37
|
|
|
43
|
-
|
|
38
|
+
render(
|
|
44
39
|
<Field>
|
|
45
40
|
<Select idRef='1' name='name-1' label='Sort by' options={options} />
|
|
46
41
|
</Field>
|
|
47
42
|
);
|
|
48
43
|
|
|
49
|
-
expect(
|
|
50
|
-
'<label class="Field"><span class="Field__context"><div id="Select--1" class="Select"><input id="1" name="name-1" type="hidden"/><button id="Select__value--1" aria-haspopup="listbox" aria-expanded="false" aria-labelledby="Select__label--1 Select__value--1" type="button" title="Select" class="Clickable Select__value"><label id="Select__label--1">Sort by</label><span class="Select__icon"></span></button></div></span></label>'
|
|
51
|
-
);
|
|
44
|
+
expect(screen.getByRole('button', { name: /Sort by/ })).toBeVisible();
|
|
52
45
|
});
|
|
53
46
|
|
|
54
47
|
it('renders with a className', () => {
|
|
55
|
-
|
|
48
|
+
render(
|
|
56
49
|
<Field className='Custom' placeholder='Placeholder' defaultValue='Hello' label='Label' />
|
|
57
50
|
);
|
|
58
51
|
|
|
59
|
-
expect(
|
|
60
|
-
|
|
61
|
-
);
|
|
52
|
+
expect(screen.getByRole('textbox')).toBeVisible();
|
|
53
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
54
|
+
expect(screen.getByRole('textbox').parentNode?.parentNode).toHaveClass('Custom');
|
|
62
55
|
});
|
|
63
56
|
|
|
64
57
|
it('supports custom children', () => {
|
|
65
|
-
|
|
58
|
+
render(
|
|
66
59
|
<Field placeholder='Placeholder' defaultValue='Hello' label='Label'>
|
|
67
60
|
<textarea />
|
|
68
61
|
</Field>
|
|
69
62
|
);
|
|
70
63
|
|
|
71
|
-
expect(
|
|
72
|
-
'<label class="Field"><span class="Field__label">Label</span><span class="Field__context"><textarea placeholder="Placeholder" label="Label">Hello</textarea></span></label>'
|
|
73
|
-
);
|
|
64
|
+
expect(screen.getByRole('textbox')).toBeVisible();
|
|
74
65
|
});
|
|
75
66
|
});
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { Label } from './Label';
|
|
5
5
|
|
|
6
6
|
describe('Label', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
8
|
+
render(<Label>Hello</Label>);
|
|
9
|
+
expect(screen.getByText('Hello')).toBeVisible();
|
|
10
10
|
});
|
|
11
11
|
});
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { Loading } from './Loading';
|
|
5
5
|
|
|
6
6
|
describe('Loading', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
10
|
-
'<div class="Loading"><svg class="Triangle" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.9986 0L0 24H24L11.9986 0Z" fill="#D56B27"></path></svg></div>'
|
|
11
|
-
);
|
|
8
|
+
render(<Loading aria-label='Loading' />);
|
|
9
|
+
expect(screen.getByLabelText('Loading')).toBeVisible();
|
|
12
10
|
});
|
|
13
11
|
});
|
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { render } from '@testing-library/react';
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
|
-
import { shallow } from 'enzyme';
|
|
5
4
|
|
|
6
5
|
import { Modal } from './Modal';
|
|
7
6
|
|
|
8
7
|
describe('Modal', () => {
|
|
9
8
|
it('renders correctly', () => {
|
|
10
|
-
|
|
11
|
-
expect(
|
|
9
|
+
render(<Modal onClose={() => {}}>Hello</Modal>);
|
|
10
|
+
expect(screen.getByText('Hello')).toBeVisible();
|
|
12
11
|
});
|
|
13
12
|
|
|
14
13
|
it('should only close when the modal wrapper is clicked', async () => {
|
|
15
14
|
const onClose = jest.fn();
|
|
16
15
|
const onClickButton = jest.fn();
|
|
17
|
-
|
|
16
|
+
render(
|
|
18
17
|
<Modal data-testid='modal' onClose={onClose}>
|
|
19
18
|
<button data-testid='button' onClick={onClickButton}>
|
|
20
19
|
Click Me
|
|
21
20
|
</button>
|
|
22
21
|
</Modal>
|
|
23
22
|
);
|
|
24
|
-
const modal = getByTestId('modal');
|
|
25
|
-
const button = getByTestId('button');
|
|
23
|
+
const modal = screen.getByTestId('modal');
|
|
24
|
+
const button = screen.getByTestId('button');
|
|
26
25
|
|
|
27
26
|
await userEvent.click(button);
|
|
28
27
|
expect(onClose).toBeCalledTimes(0);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useState } from 'react';
|
|
2
|
-
import { render, waitFor } from '@testing-library/react';
|
|
2
|
+
import { render, screen, waitFor } from '@testing-library/react';
|
|
3
3
|
import userEvent from '@testing-library/user-event';
|
|
4
4
|
|
|
5
5
|
import { ModalOverlay } from './ModalOverlay';
|
|
@@ -20,23 +20,23 @@ const ModalComponent: React.FC = () => {
|
|
|
20
20
|
|
|
21
21
|
describe('ModalOverlay', () => {
|
|
22
22
|
it('renders correctly', () => {
|
|
23
|
-
|
|
23
|
+
render(<ModalOverlay onClose={() => {}}>Hello</ModalOverlay>);
|
|
24
24
|
|
|
25
|
-
expect(
|
|
25
|
+
expect(screen.getByText('Hello')).toBeInTheDocument();
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
it('should open and close the modal', async () => {
|
|
29
|
-
|
|
29
|
+
render(<ModalComponent />);
|
|
30
30
|
|
|
31
31
|
// Should not show by default
|
|
32
|
-
expect(queryByText('Modal Content')).
|
|
32
|
+
expect(screen.queryByText('Modal Content')).not.toBeInTheDocument();
|
|
33
33
|
|
|
34
34
|
// Should show after clicking button
|
|
35
|
-
userEvent.click(getByTestId('button'));
|
|
36
|
-
await
|
|
35
|
+
userEvent.click(screen.getByTestId('button'));
|
|
36
|
+
await screen.findByText('Modal Content');
|
|
37
37
|
|
|
38
38
|
// Should hide after clicking wrapper
|
|
39
|
-
userEvent.click(getByTestId('modal'));
|
|
40
|
-
await waitFor(() => expect(queryByText('Modal Content')).
|
|
39
|
+
userEvent.click(screen.getByTestId('modal'));
|
|
40
|
+
await waitFor(() => expect(screen.queryByText('Modal Content')).not.toBeInTheDocument());
|
|
41
41
|
});
|
|
42
42
|
});
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { Overlay } from './Overlay';
|
|
5
5
|
|
|
6
6
|
describe('Overlay', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
8
|
const text = 'test-Text';
|
|
9
|
-
|
|
10
|
-
expect(
|
|
9
|
+
render(<Overlay>{text}</Overlay>);
|
|
10
|
+
expect(screen.getByText(text)).toBeVisible();
|
|
11
11
|
});
|
|
12
12
|
});
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
3
4
|
|
|
4
5
|
import { Popover } from './Popover';
|
|
5
6
|
|
|
6
7
|
describe('Popover', () => {
|
|
7
|
-
it('renders correctly', () => {
|
|
8
|
-
|
|
8
|
+
it('renders correctly', async () => {
|
|
9
|
+
render(
|
|
9
10
|
<Popover content={<div>Secret</div>}>
|
|
10
11
|
<span>Hover</span>
|
|
11
12
|
</Popover>
|
|
12
13
|
);
|
|
13
14
|
|
|
14
|
-
expect(
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
expect(screen.queryByText('Secret')).not.toBeInTheDocument();
|
|
16
|
+
|
|
17
|
+
await userEvent.hover(screen.getByText('Hover'));
|
|
18
|
+
|
|
19
|
+
expect(screen.getByText('Secret')).toBeVisible();
|
|
17
20
|
});
|
|
18
21
|
});
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { PromoBanner } from './PromoBanner';
|
|
5
5
|
|
|
6
6
|
describe('PromoBanner', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
8
|
+
render(
|
|
9
9
|
<PromoBanner>
|
|
10
10
|
<span>Hello</span>
|
|
11
11
|
</PromoBanner>
|
|
12
12
|
);
|
|
13
|
-
expect(
|
|
13
|
+
expect(screen.getByText('Hello')).toBeVisible();
|
|
14
14
|
});
|
|
15
15
|
});
|
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
4
3
|
import { RadioButton } from './RadioButton';
|
|
5
4
|
|
|
6
5
|
describe('RadioButton', () => {
|
|
7
6
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
10
|
-
'<label tabindex="0" class="RadioButton"><span tabindex="-1" class="RadioButton__indicator RadioButton__indicator--unchecked"></span><input tabindex="-1" class="RadioButton__input" type="radio" role="radio" value=""></label>'
|
|
11
|
-
);
|
|
7
|
+
render(<RadioButton />);
|
|
8
|
+
expect(screen.getByRole('radio')).toBeVisible();
|
|
12
9
|
});
|
|
13
10
|
|
|
14
11
|
it('supports checked', () => {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
expect(
|
|
18
|
-
expect(html).toContain('readonly="" value="" checked=""');
|
|
12
|
+
render(<RadioButton checked readOnly />);
|
|
13
|
+
expect(screen.getByRole('radio')).toBeVisible();
|
|
14
|
+
expect(screen.getByRole('radio')).toBeChecked();
|
|
19
15
|
});
|
|
20
16
|
});
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
|
+
import userEvent from '@testing-library/user-event';
|
|
3
4
|
|
|
4
5
|
import { SearchInput } from './SearchInput';
|
|
5
6
|
|
|
6
7
|
describe('SearchInput', () => {
|
|
7
|
-
it('clears the input when the button is clicked', () => {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
it('clears the input when the button is clicked', async () => {
|
|
9
|
+
render(<SearchInput value='Hello' />);
|
|
10
|
+
|
|
11
|
+
expect(screen.getByRole('textbox')).toHaveValue('Hello');
|
|
12
|
+
|
|
13
|
+
await userEvent.click(screen.getByRole('button'));
|
|
14
|
+
|
|
15
|
+
expect(screen.getByRole('textbox')).toHaveValue('');
|
|
12
16
|
});
|
|
13
17
|
});
|
|
@@ -34,7 +34,8 @@ export const Default = () => (
|
|
|
34
34
|
{ disabled: true, idRef: '4', label: 'Sort' },
|
|
35
35
|
{ idRef: '5', label: '' },
|
|
36
36
|
{ idRef: '5', label: '', error: 'Error' },
|
|
37
|
-
{ idRef: '6', label: '', dropDirection: 'up' }
|
|
37
|
+
{ idRef: '6', label: '', dropDirection: 'up' },
|
|
38
|
+
{ idRef: '7', label: undefined, placeholder: 'Placeholder' }
|
|
38
39
|
]}
|
|
39
40
|
>
|
|
40
41
|
<Select label='Sort by' options={OPTIONS} onChange={action('onChange')} />
|
|
@@ -24,7 +24,7 @@ describe('Select', () => {
|
|
|
24
24
|
const { container } = render(
|
|
25
25
|
<Select idRef='1' name='name-1' label='Sort by' options={options} />
|
|
26
26
|
);
|
|
27
|
-
const button =
|
|
27
|
+
const button = screen.getByRole('button', { name: /Sort by/ });
|
|
28
28
|
await userEvent.click(button);
|
|
29
29
|
expect(container.innerHTML).toEqual(
|
|
30
30
|
'<div id="Select--1" class="Select"><input id="1" name="name-1" type="hidden" value=""><button id="Select__value--1" aria-haspopup="listbox" aria-expanded="true" aria-labelledby="Select__label--1 Select__value--1" type="button" title="Select" class="Clickable Select__value"><label id="Select__label--1">Sort by</label><span class="Select__icon"></span></button><div class="SelectOptions Select__options Select__options--down"><ul class="SelectOptions__list" tabindex="-1" role="listbox" aria-labelledby="Select__label--1" aria-activedescendant="SelectOption--foo-1"><li class="SelectOption SelectOption--active" aria-label="Foo" aria-selected="false" role="option">Foo</li><li class="SelectOption" aria-label="Bar" aria-selected="false" role="option">Bar</li><li class="SelectOption SelectOption--disabled" aria-label="Baz" aria-selected="false" role="option">Baz</li></ul></div></div>'
|
|
@@ -42,7 +42,7 @@ describe('Select', () => {
|
|
|
42
42
|
options={options}
|
|
43
43
|
/>
|
|
44
44
|
);
|
|
45
|
-
const button =
|
|
45
|
+
const button = screen.getByRole('button', { name: /Sort by/ });
|
|
46
46
|
await userEvent.click(button);
|
|
47
47
|
expect(container.innerHTML).toEqual(
|
|
48
48
|
'<div id="Select--1" class="Select Select--disabled"><input id="1" name="name-1" type="hidden" value=""><button id="Select__value--1" aria-haspopup="listbox" aria-expanded="false" aria-labelledby="Select__label--1 Select__value--1" type="button" title="Select" class="Clickable Clickable--disabled Select__value" disabled=""><label id="Select__label--1">Sort by</label><span class="Select__icon"></span></button></div>'
|
|
@@ -51,7 +51,7 @@ describe('Select', () => {
|
|
|
51
51
|
|
|
52
52
|
it('calls onChange when selecting an option', async () => {
|
|
53
53
|
const onChange = jest.fn();
|
|
54
|
-
|
|
54
|
+
render(
|
|
55
55
|
<Select
|
|
56
56
|
defaultValue={undefined}
|
|
57
57
|
idRef='1'
|
|
@@ -61,7 +61,7 @@ describe('Select', () => {
|
|
|
61
61
|
onChange={onChange}
|
|
62
62
|
/>
|
|
63
63
|
);
|
|
64
|
-
const button =
|
|
64
|
+
const button = screen.getByRole('button', { name: /Sort by/ });
|
|
65
65
|
await userEvent.click(button);
|
|
66
66
|
const option = screen.getByLabelText('Bar');
|
|
67
67
|
await userEvent.click(option);
|
|
@@ -70,7 +70,7 @@ describe('Select', () => {
|
|
|
70
70
|
|
|
71
71
|
it('does not call onChange when selecting a disabled option', async () => {
|
|
72
72
|
const onChange = jest.fn();
|
|
73
|
-
|
|
73
|
+
render(
|
|
74
74
|
<Select
|
|
75
75
|
defaultValue={undefined}
|
|
76
76
|
idRef='1'
|
|
@@ -80,7 +80,7 @@ describe('Select', () => {
|
|
|
80
80
|
onChange={onChange}
|
|
81
81
|
/>
|
|
82
82
|
);
|
|
83
|
-
const button =
|
|
83
|
+
const button = screen.getByRole('button', { name: /Sort by/ });
|
|
84
84
|
await userEvent.click(button);
|
|
85
85
|
const option = screen.getByLabelText('Baz');
|
|
86
86
|
await userEvent.click(option);
|
|
@@ -91,7 +91,7 @@ describe('Select', () => {
|
|
|
91
91
|
const { container } = render(
|
|
92
92
|
<Select idRef='1' name='name-1' label='Sort by' options={options} />
|
|
93
93
|
);
|
|
94
|
-
const button =
|
|
94
|
+
const button = screen.getByRole('button', { name: /Sort by/ });
|
|
95
95
|
await userEvent.click(button);
|
|
96
96
|
const option = screen.getByLabelText('Bar');
|
|
97
97
|
await userEvent.click(option);
|
|
@@ -102,7 +102,7 @@ describe('Select', () => {
|
|
|
102
102
|
|
|
103
103
|
it('renders correctly when there is no label', async () => {
|
|
104
104
|
const { container } = render(<Select idRef='1' name='name-1' options={options} />);
|
|
105
|
-
const button =
|
|
105
|
+
const button = screen.getByRole('button', { name: 'Select' });
|
|
106
106
|
await userEvent.click(button);
|
|
107
107
|
const option = screen.getByLabelText('Bar');
|
|
108
108
|
await userEvent.click(option);
|
|
@@ -44,6 +44,7 @@ export const Select: React.FC<SelectProps> = ({
|
|
|
44
44
|
name,
|
|
45
45
|
onChange,
|
|
46
46
|
options,
|
|
47
|
+
placeholder,
|
|
47
48
|
searchable,
|
|
48
49
|
shiftIconLeftwards = false,
|
|
49
50
|
value,
|
|
@@ -116,7 +117,11 @@ export const Select: React.FC<SelectProps> = ({
|
|
|
116
117
|
type='button'
|
|
117
118
|
title='Select'
|
|
118
119
|
>
|
|
119
|
-
<SelectLabel
|
|
120
|
+
<SelectLabel
|
|
121
|
+
idRef={idRef}
|
|
122
|
+
label={label || (selected === undefined ? placeholder : undefined)}
|
|
123
|
+
hasValue={focused != null || selected != null}
|
|
124
|
+
/>
|
|
120
125
|
|
|
121
126
|
{(focused ?? selected)?.label}
|
|
122
127
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { render, screen } from '@testing-library/react';
|
|
3
3
|
|
|
4
4
|
import { SelectableButton } from './SelectableButton';
|
|
5
5
|
|
|
6
6
|
describe('SelectableButton', () => {
|
|
7
7
|
it('renders correctly', () => {
|
|
8
|
-
|
|
9
|
-
expect(
|
|
8
|
+
render(<SelectableButton>Click me</SelectableButton>);
|
|
9
|
+
expect(screen.getByText('Click me')).toBeVisible();
|
|
10
10
|
});
|
|
11
11
|
});
|