@telus-uds/components-base 1.8.0 → 1.8.1
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 +13 -2
- package/package.json +4 -4
- package/.storybook/main.js +0 -11
- package/.storybook/preview.js +0 -37
- package/.turbo/turbo-build.log +0 -8
- package/.turbo/turbo-lint.log +0 -3
- package/CHANGELOG.json +0 -311
- package/__fixtures__/Accessible.js +0 -34
- package/__fixtures__/Accessible.native.js +0 -34
- package/__fixtures__/Theme.jsx +0 -13
- package/__fixtures__/Viewport.jsx +0 -17
- package/__fixtures__/test-utils.js +0 -25
- package/__fixtures__/testTheme.js +0 -1830
- package/__tests__/A11yText/A11yText.test.jsx +0 -34
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
- package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
- package/__tests__/Box/Box.test.jsx +0 -111
- package/__tests__/Button/Button.test.jsx +0 -86
- package/__tests__/Button/ButtonBase.test.jsx +0 -82
- package/__tests__/Button/ButtonGroup.test.jsx +0 -347
- package/__tests__/Button/ButtonLink.test.jsx +0 -61
- package/__tests__/Card/Card.test.jsx +0 -63
- package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
- package/__tests__/Divider/Divider.test.jsx +0 -91
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
- package/__tests__/Feedback/Feedback.test.jsx +0 -42
- package/__tests__/FlexGrid/Col.test.jsx +0 -261
- package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
- package/__tests__/FlexGrid/Row.test.jsx +0 -273
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
- package/__tests__/Icon/Icon.test.jsx +0 -61
- package/__tests__/IconButton/IconButton.test.jsx +0 -52
- package/__tests__/InputLabel/InputLabel.test.jsx +0 -28
- package/__tests__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
- package/__tests__/InputSupports/InputSupports.test.jsx +0 -60
- package/__tests__/Link/Link.test.jsx +0 -63
- package/__tests__/Link/TextButton.test.jsx +0 -35
- package/__tests__/List/List.test.jsx +0 -60
- package/__tests__/Modal/Modal.test.jsx +0 -47
- package/__tests__/Notification/Notification.test.jsx +0 -20
- package/__tests__/Pagination/Pagination.test.jsx +0 -160
- package/__tests__/Progress/Progress.test.jsx +0 -79
- package/__tests__/Radio/Radio.test.jsx +0 -87
- package/__tests__/Radio/RadioGroup.test.jsx +0 -220
- package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
- package/__tests__/Search/Search.test.jsx +0 -73
- package/__tests__/Select/Select.test.jsx +0 -94
- package/__tests__/SideNav/SideNav.test.jsx +0 -110
- package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
- package/__tests__/Spacer/Spacer.test.jsx +0 -63
- package/__tests__/StackView/StackView.test.jsx +0 -216
- package/__tests__/StackView/StackWrap.test.jsx +0 -47
- package/__tests__/StackView/getStackedContent.test.jsx +0 -295
- package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
- package/__tests__/Tabs/Tabs.test.jsx +0 -40
- package/__tests__/Tags/Tags.test.jsx +0 -327
- package/__tests__/TextInput/TextArea.test.jsx +0 -35
- package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
- package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
- package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
- package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
- package/__tests__/Typography/typography.test.jsx +0 -90
- package/__tests__/utils/children.test.jsx +0 -128
- package/__tests__/utils/containUniqueFields.test.js +0 -25
- package/__tests__/utils/input.test.js +0 -375
- package/__tests__/utils/props.test.js +0 -36
- package/__tests__/utils/semantics.test.jsx +0 -34
- package/__tests__/utils/useCopy.test.js +0 -42
- package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
- package/__tests__/utils/useSpacingScale.test.jsx +0 -273
- package/__tests__/utils/useUniqueId.test.js +0 -31
- package/babel.config.js +0 -35
- package/generate-component-docs.js +0 -72
- package/jest.config.js +0 -32
- package/stories/A11yText/A11yText.stories.jsx +0 -71
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
- package/stories/Box/Box.stories.jsx +0 -143
- package/stories/Button/Button.stories.jsx +0 -72
- package/stories/Button/ButtonGroup.stories.jsx +0 -81
- package/stories/Button/ButtonLink.stories.jsx +0 -30
- package/stories/Card/Card.stories.jsx +0 -62
- package/stories/Checkbox/Checkbox.stories.jsx +0 -94
- package/stories/Divider/Divider.stories.jsx +0 -68
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
- package/stories/Feedback/Feedback.stories.jsx +0 -96
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
- package/stories/FlexGrid/02 Row.stories.jsx +0 -41
- package/stories/FlexGrid/03 Col.stories.jsx +0 -141
- package/stories/Icon/Icon.stories.jsx +0 -79
- package/stories/IconButton/IconButton.stories.jsx +0 -50
- package/stories/InputLabel/InputLabel.stories.jsx +0 -39
- package/stories/Link/ChevronLink.stories.jsx +0 -48
- package/stories/Link/Link.stories.jsx +0 -90
- package/stories/Link/TextButton.stories.jsx +0 -79
- package/stories/List/List.stories.jsx +0 -117
- package/stories/Modal/Modal.stories.jsx +0 -54
- package/stories/Notification/Notification.stories.jsx +0 -82
- package/stories/Pagination/Pagination.stories.jsx +0 -64
- package/stories/Progress/Progress.stories.jsx +0 -93
- package/stories/Radio/Radio.stories.jsx +0 -100
- package/stories/RadioCard/RadioCard.stories.jsx +0 -98
- package/stories/Search/Search.stories.jsx +0 -66
- package/stories/Select/Select.stories.jsx +0 -55
- package/stories/SideNav/SideNav.stories.jsx +0 -42
- package/stories/SideNav/SideNavItem.stories.jsx +0 -9
- package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
- package/stories/Skeleton/Skeleton.stories.jsx +0 -36
- package/stories/Spacer/Spacer.stories.jsx +0 -38
- package/stories/StackView/StackView.stories.jsx +0 -75
- package/stories/StackView/StackWrap.stories.jsx +0 -64
- package/stories/StepTracker/StepTracker.stories.jsx +0 -71
- package/stories/Tabs/Tabs.stories.jsx +0 -98
- package/stories/Tags/Tags.stories.jsx +0 -69
- package/stories/TextInput/TextArea.stories.jsx +0 -101
- package/stories/TextInput/TextInput.stories.jsx +0 -141
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
- package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
- package/stories/Tooltip/Tooltip.stories.jsx +0 -81
- package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
- package/stories/Typography/Typography.stories.jsx +0 -49
- package/stories/platform-supports.jsx +0 -32
- package/stories/platform-supports.native.jsx +0 -3
- package/stories/supports.jsx +0 -236
|
@@ -1,246 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { render, fireEvent } from '@testing-library/react-native'
|
|
3
|
-
import { toHaveTextContent } from '@testing-library/jest-native'
|
|
4
|
-
|
|
5
|
-
import Theme from '../../__fixtures__/Theme'
|
|
6
|
-
import CheckboxGroup from '../../src/Checkbox/CheckboxGroup'
|
|
7
|
-
|
|
8
|
-
const items = [
|
|
9
|
-
{ label: 'One', id: 'one' },
|
|
10
|
-
{ label: 'Two', id: 'two' },
|
|
11
|
-
{ label: 'Three', id: 'three' },
|
|
12
|
-
{ label: 'Four', id: 'four' }
|
|
13
|
-
]
|
|
14
|
-
const checked = { checked: true }
|
|
15
|
-
|
|
16
|
-
// expect().toHaveTextContent doesn't work on arrays, expect().toContain etc doesn't match elements
|
|
17
|
-
const containsText = (queryResult, text) =>
|
|
18
|
-
queryResult.some((testInstance) => toHaveTextContent(testInstance, text).pass)
|
|
19
|
-
|
|
20
|
-
describe('CheckboxGroup', () => {
|
|
21
|
-
// eslint-disable-next-line no-console
|
|
22
|
-
const consoleError = console.error
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
// eslint-disable-next-line no-console
|
|
25
|
-
console.error = () => {}
|
|
26
|
-
})
|
|
27
|
-
afterEach(() => {
|
|
28
|
-
// eslint-disable-next-line no-console
|
|
29
|
-
console.error = consoleError
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
it('Throws if has `checkedIds` without `onChange`', () => {
|
|
33
|
-
expect(() =>
|
|
34
|
-
render(
|
|
35
|
-
<Theme>
|
|
36
|
-
<CheckboxGroup items={items} checkedIds={['one']} />
|
|
37
|
-
</Theme>
|
|
38
|
-
)
|
|
39
|
-
).toThrow(/values.+without.+onChange/)
|
|
40
|
-
})
|
|
41
|
-
it("Doesn't throw if has `checkedIds` without `onChange` and is read only", () => {
|
|
42
|
-
expect(() =>
|
|
43
|
-
render(
|
|
44
|
-
<Theme>
|
|
45
|
-
<CheckboxGroup items={items} checkedIds={['one']} readOnly />
|
|
46
|
-
</Theme>
|
|
47
|
-
)
|
|
48
|
-
).not.toThrow()
|
|
49
|
-
})
|
|
50
|
-
it('Throws if has both `checkedIds` and `initialCheckedIds`', () => {
|
|
51
|
-
expect(() =>
|
|
52
|
-
render(
|
|
53
|
-
<Theme>
|
|
54
|
-
<CheckboxGroup
|
|
55
|
-
items={items}
|
|
56
|
-
checkedIds={['one']}
|
|
57
|
-
initialCheckedIds={['one']}
|
|
58
|
-
onChange={() => {}}
|
|
59
|
-
/>
|
|
60
|
-
</Theme>
|
|
61
|
-
)
|
|
62
|
-
).toThrow(/both(?=.*initialValues)(?=.*values){2}/)
|
|
63
|
-
})
|
|
64
|
-
})
|
|
65
|
-
|
|
66
|
-
describe('CheckboxGroup (uncontrolled)', () => {
|
|
67
|
-
it('Selects unlimited items', async () => {
|
|
68
|
-
const { getByText, queryAllByA11yState } = render(
|
|
69
|
-
<Theme>
|
|
70
|
-
<CheckboxGroup items={items} />
|
|
71
|
-
</Theme>
|
|
72
|
-
)
|
|
73
|
-
|
|
74
|
-
expect(queryAllByA11yState(checked)).toHaveLength(0)
|
|
75
|
-
|
|
76
|
-
const one = getByText('One')
|
|
77
|
-
await fireEvent.press(one)
|
|
78
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
79
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
80
|
-
|
|
81
|
-
const two = getByText('Two')
|
|
82
|
-
await fireEvent.press(two)
|
|
83
|
-
expect(queryAllByA11yState(checked)).toHaveLength(2)
|
|
84
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).toBeTruthy()
|
|
85
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
86
|
-
|
|
87
|
-
const three = getByText('Three')
|
|
88
|
-
await fireEvent.press(three)
|
|
89
|
-
expect(queryAllByA11yState(checked)).toHaveLength(3)
|
|
90
|
-
expect(containsText(queryAllByA11yState(checked), 'Three')).toBeTruthy()
|
|
91
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).toBeTruthy()
|
|
92
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
93
|
-
|
|
94
|
-
const four = getByText('Four')
|
|
95
|
-
await fireEvent.press(four)
|
|
96
|
-
expect(queryAllByA11yState(checked)).toHaveLength(4)
|
|
97
|
-
expect(containsText(queryAllByA11yState(checked), 'Four')).toBeTruthy()
|
|
98
|
-
expect(containsText(queryAllByA11yState(checked), 'Three')).toBeTruthy()
|
|
99
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).toBeTruthy()
|
|
100
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
101
|
-
})
|
|
102
|
-
|
|
103
|
-
it('Deselects if the selected item is pressed', async () => {
|
|
104
|
-
const { getByText, queryAllByA11yState } = render(
|
|
105
|
-
<Theme>
|
|
106
|
-
<CheckboxGroup items={items} />
|
|
107
|
-
</Theme>
|
|
108
|
-
)
|
|
109
|
-
|
|
110
|
-
expect(queryAllByA11yState(checked)).toHaveLength(0)
|
|
111
|
-
|
|
112
|
-
const three = getByText('Three')
|
|
113
|
-
await fireEvent.press(three)
|
|
114
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
115
|
-
expect(containsText(queryAllByA11yState(checked), 'Three')).toBeTruthy()
|
|
116
|
-
|
|
117
|
-
await fireEvent.press(three)
|
|
118
|
-
expect(queryAllByA11yState(checked)).toHaveLength(0)
|
|
119
|
-
expect(containsText(queryAllByA11yState(checked), 'Three')).not.toBeTruthy()
|
|
120
|
-
})
|
|
121
|
-
|
|
122
|
-
it('Is accessible as checkboxes button', async () => {
|
|
123
|
-
const { queryAllByA11yRole, queryAllByA11yState } = render(
|
|
124
|
-
<Theme>
|
|
125
|
-
<CheckboxGroup items={items} />
|
|
126
|
-
</Theme>
|
|
127
|
-
)
|
|
128
|
-
|
|
129
|
-
expect(queryAllByA11yRole('radiogroup')).toHaveLength(0)
|
|
130
|
-
expect(queryAllByA11yRole('radio')).toHaveLength(0)
|
|
131
|
-
|
|
132
|
-
const checks = queryAllByA11yRole('checkbox')
|
|
133
|
-
expect(checks).toHaveLength(4)
|
|
134
|
-
|
|
135
|
-
expect(queryAllByA11yState(checked)).toHaveLength(0)
|
|
136
|
-
await fireEvent.press(checks[0])
|
|
137
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
138
|
-
})
|
|
139
|
-
|
|
140
|
-
it('Auto-selects any provided initialCheckedIds', async () => {
|
|
141
|
-
const { getByText, queryAllByA11yState } = render(
|
|
142
|
-
<Theme>
|
|
143
|
-
<CheckboxGroup items={items} initialCheckedIds={['one', 'two']} />
|
|
144
|
-
</Theme>
|
|
145
|
-
)
|
|
146
|
-
expect(queryAllByA11yState(checked)).toHaveLength(2)
|
|
147
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
148
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).toBeTruthy()
|
|
149
|
-
|
|
150
|
-
const three = getByText('Three')
|
|
151
|
-
await fireEvent.press(three)
|
|
152
|
-
|
|
153
|
-
expect(queryAllByA11yState(checked)).toHaveLength(3)
|
|
154
|
-
expect(containsText(queryAllByA11yState(checked), 'Three')).toBeTruthy()
|
|
155
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).toBeTruthy()
|
|
156
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
157
|
-
})
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
describe('CheckboxGroup (controlled)', () => {
|
|
161
|
-
it('Calls onChange handler on press in controlled mode, providing pressed id', async () => {
|
|
162
|
-
const handleChange = jest.fn((arg) => arg)
|
|
163
|
-
const { getByText } = render(
|
|
164
|
-
<Theme>
|
|
165
|
-
<CheckboxGroup items={items} checkedIds={[]} onChange={handleChange} />
|
|
166
|
-
</Theme>
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
expect(handleChange).toHaveBeenCalledTimes(0)
|
|
170
|
-
|
|
171
|
-
const one = getByText('One')
|
|
172
|
-
await fireEvent(one, 'press', { nativeEvent: 'example' })
|
|
173
|
-
expect(handleChange).toHaveBeenCalledTimes(1)
|
|
174
|
-
expect(handleChange).toHaveBeenLastCalledWith(['one'], { nativeEvent: 'example' })
|
|
175
|
-
|
|
176
|
-
const two = getByText('Two')
|
|
177
|
-
await fireEvent(two, 'press', { nativeEvent: 'example2' })
|
|
178
|
-
expect(handleChange).toHaveBeenCalledTimes(2)
|
|
179
|
-
expect(handleChange).toHaveBeenLastCalledWith(['two'], { nativeEvent: 'example2' })
|
|
180
|
-
})
|
|
181
|
-
|
|
182
|
-
it("Doesn't change its own selection if `checkedIds` is passed", async () => {
|
|
183
|
-
const { getByText, queryAllByA11yState } = render(
|
|
184
|
-
<Theme>
|
|
185
|
-
<CheckboxGroup items={items} checkedIds={['one']} onChange={() => {}} />
|
|
186
|
-
</Theme>
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
190
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
191
|
-
|
|
192
|
-
const one = getByText('One')
|
|
193
|
-
await fireEvent.press(one)
|
|
194
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
195
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
196
|
-
|
|
197
|
-
const two = getByText('Two')
|
|
198
|
-
await fireEvent.press(two)
|
|
199
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
200
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).not.toBeTruthy()
|
|
201
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
202
|
-
})
|
|
203
|
-
})
|
|
204
|
-
|
|
205
|
-
describe('CheckboxGroup (read-only)', () => {
|
|
206
|
-
it("Doesn't call onChange handler when read-only", async () => {
|
|
207
|
-
const handleChange = jest.fn((arg) => arg)
|
|
208
|
-
const { getByText } = render(
|
|
209
|
-
<Theme>
|
|
210
|
-
<CheckboxGroup items={items} checkedIds={[]} onChange={handleChange} readOnly />
|
|
211
|
-
</Theme>
|
|
212
|
-
)
|
|
213
|
-
|
|
214
|
-
expect(handleChange).toHaveBeenCalledTimes(0)
|
|
215
|
-
|
|
216
|
-
const one = getByText('One')
|
|
217
|
-
await fireEvent.press(one)
|
|
218
|
-
expect(handleChange).toHaveBeenCalledTimes(0)
|
|
219
|
-
|
|
220
|
-
const two = getByText('Two')
|
|
221
|
-
await fireEvent.press(two)
|
|
222
|
-
expect(handleChange).toHaveBeenCalledTimes(0)
|
|
223
|
-
})
|
|
224
|
-
|
|
225
|
-
it("Doesn't change its selection on press", async () => {
|
|
226
|
-
const { getByText, queryAllByA11yState } = render(
|
|
227
|
-
<Theme>
|
|
228
|
-
<CheckboxGroup items={items} checkedIds={['one']} readOnly />
|
|
229
|
-
</Theme>
|
|
230
|
-
)
|
|
231
|
-
|
|
232
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
233
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
234
|
-
|
|
235
|
-
const one = getByText('One')
|
|
236
|
-
await fireEvent.press(one)
|
|
237
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
238
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
239
|
-
|
|
240
|
-
const two = getByText('Two')
|
|
241
|
-
await fireEvent.press(two)
|
|
242
|
-
expect(queryAllByA11yState(checked)).toHaveLength(1)
|
|
243
|
-
expect(containsText(queryAllByA11yState(checked), 'Two')).not.toBeTruthy()
|
|
244
|
-
expect(containsText(queryAllByA11yState(checked), 'One')).toBeTruthy()
|
|
245
|
-
})
|
|
246
|
-
})
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { render } from '@testing-library/react-native'
|
|
3
|
-
import { Text } from 'react-native'
|
|
4
|
-
|
|
5
|
-
import Divider from '../../src/Divider'
|
|
6
|
-
import Theme from '../../__fixtures__/Theme'
|
|
7
|
-
import testTheme from '../../__fixtures__/testTheme'
|
|
8
|
-
|
|
9
|
-
describe('Divider', () => {
|
|
10
|
-
const testID = 'testID'
|
|
11
|
-
const { width, color } = testTheme.components.Divider.tokens
|
|
12
|
-
const { width: thickWidth } = testTheme.components.Divider.rules.find(
|
|
13
|
-
(rule) => rule.if.weight === 'thick'
|
|
14
|
-
).tokens
|
|
15
|
-
|
|
16
|
-
const horizontalStyles = {
|
|
17
|
-
borderBottomColor: color,
|
|
18
|
-
borderBottomWidth: width
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const verticalStyles = {
|
|
22
|
-
borderRightColor: color,
|
|
23
|
-
borderRightWidth: width
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const thickStyles = {
|
|
27
|
-
borderBottomColor: color,
|
|
28
|
-
borderBottomWidth: thickWidth
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
it('renders a horizontal line by default', () => {
|
|
32
|
-
const { getByTestId } = render(
|
|
33
|
-
<Theme>
|
|
34
|
-
<Text>Before</Text>
|
|
35
|
-
<Divider testID={testID} />
|
|
36
|
-
<Text>After</Text>
|
|
37
|
-
</Theme>
|
|
38
|
-
)
|
|
39
|
-
const divider = getByTestId(testID)
|
|
40
|
-
expect(divider).toHaveStyle(horizontalStyles)
|
|
41
|
-
expect(divider).not.toHaveStyle(verticalStyles)
|
|
42
|
-
})
|
|
43
|
-
|
|
44
|
-
it('renders space above and below a horizontal line if space prop is passed', () => {
|
|
45
|
-
const expectedSize = 8 // from testTheme.js
|
|
46
|
-
|
|
47
|
-
const { getByTestId } = render(
|
|
48
|
-
<Theme>
|
|
49
|
-
<Text>Before</Text>
|
|
50
|
-
<Divider testID={testID} space={2} />
|
|
51
|
-
<Text>After</Text>
|
|
52
|
-
</Theme>
|
|
53
|
-
)
|
|
54
|
-
const before = getByTestId(`${testID}-Spacer-before`)
|
|
55
|
-
expect(before).toHaveStyle({ height: expectedSize })
|
|
56
|
-
|
|
57
|
-
const after = getByTestId(`${testID}-Spacer-after`)
|
|
58
|
-
expect(after).toHaveStyle({ height: expectedSize })
|
|
59
|
-
})
|
|
60
|
-
|
|
61
|
-
it('renders space left and right of a vertical line if space prop is passed', () => {
|
|
62
|
-
const expectedSize = 8 // from testTheme.js
|
|
63
|
-
|
|
64
|
-
const { getByTestId } = render(
|
|
65
|
-
<Theme>
|
|
66
|
-
<Text>Before</Text>
|
|
67
|
-
<Divider vertical testID={testID} space={2} />
|
|
68
|
-
<Text>After</Text>
|
|
69
|
-
</Theme>
|
|
70
|
-
)
|
|
71
|
-
const before = getByTestId(`${testID}-Spacer-before`)
|
|
72
|
-
expect(before).toHaveStyle({ width: expectedSize })
|
|
73
|
-
|
|
74
|
-
const after = getByTestId(`${testID}-Spacer-after`)
|
|
75
|
-
expect(after).toHaveStyle({ width: expectedSize })
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
it('renders the correct styles for a given variant', () => {
|
|
79
|
-
const { getByTestId } = render(
|
|
80
|
-
<Theme>
|
|
81
|
-
<Text>Before</Text>
|
|
82
|
-
<Divider testID={testID} variant={{ weight: 'thick' }} />
|
|
83
|
-
<Text>After</Text>
|
|
84
|
-
</Theme>
|
|
85
|
-
)
|
|
86
|
-
const divider = getByTestId(testID)
|
|
87
|
-
expect(divider).toHaveStyle(thickStyles)
|
|
88
|
-
expect(divider).not.toHaveStyle(verticalStyles)
|
|
89
|
-
expect(divider).not.toHaveStyle(horizontalStyles)
|
|
90
|
-
})
|
|
91
|
-
})
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { render, fireEvent } from '@testing-library/react-native'
|
|
3
|
-
|
|
4
|
-
import { Accordion, ExpandCollapse, Typography } from '../../src'
|
|
5
|
-
import Theme from '../../__fixtures__/Theme'
|
|
6
|
-
|
|
7
|
-
describe('ExpandCollapse', () => {
|
|
8
|
-
it('expands multiple groups when accordion = false', async () => {
|
|
9
|
-
const { queryAllByA11yState, getByText } = render(
|
|
10
|
-
<ExpandCollapse>
|
|
11
|
-
{(expandProps) => (
|
|
12
|
-
<>
|
|
13
|
-
<ExpandCollapse.Panel
|
|
14
|
-
{...expandProps}
|
|
15
|
-
panelId="first"
|
|
16
|
-
control={<Typography>First control</Typography>}
|
|
17
|
-
>
|
|
18
|
-
<Typography>First content</Typography>
|
|
19
|
-
</ExpandCollapse.Panel>
|
|
20
|
-
<ExpandCollapse.Panel
|
|
21
|
-
{...expandProps}
|
|
22
|
-
panelId="second"
|
|
23
|
-
control={<Typography>Second control</Typography>}
|
|
24
|
-
>
|
|
25
|
-
<Typography>Second content</Typography>
|
|
26
|
-
</ExpandCollapse.Panel>
|
|
27
|
-
</>
|
|
28
|
-
)}
|
|
29
|
-
</ExpandCollapse>,
|
|
30
|
-
{
|
|
31
|
-
wrapper: Theme
|
|
32
|
-
}
|
|
33
|
-
)
|
|
34
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(0)
|
|
35
|
-
await fireEvent.press(getByText('First control'))
|
|
36
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(1)
|
|
37
|
-
await fireEvent.press(getByText('Second control'))
|
|
38
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(2)
|
|
39
|
-
await fireEvent.press(getByText('Second control'))
|
|
40
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(1)
|
|
41
|
-
})
|
|
42
|
-
|
|
43
|
-
it("calls a panel's provided onPress function in addition to open/close", async () => {
|
|
44
|
-
const panelId = 'group-id'
|
|
45
|
-
const onPress = jest.fn()
|
|
46
|
-
|
|
47
|
-
const { queryAllByA11yState, getByText } = render(
|
|
48
|
-
<ExpandCollapse>
|
|
49
|
-
{(expandProps) => (
|
|
50
|
-
<ExpandCollapse.Panel
|
|
51
|
-
{...expandProps}
|
|
52
|
-
onPress={onPress}
|
|
53
|
-
panelId={panelId}
|
|
54
|
-
control={<Typography>First control</Typography>}
|
|
55
|
-
>
|
|
56
|
-
<Typography>First content</Typography>
|
|
57
|
-
</ExpandCollapse.Panel>
|
|
58
|
-
)}
|
|
59
|
-
</ExpandCollapse>,
|
|
60
|
-
{
|
|
61
|
-
wrapper: Theme
|
|
62
|
-
}
|
|
63
|
-
)
|
|
64
|
-
expect(onPress).toHaveBeenCalledTimes(0)
|
|
65
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(0)
|
|
66
|
-
|
|
67
|
-
await fireEvent(getByText('First control'), 'press', { nativeEvent: 'example' })
|
|
68
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(1)
|
|
69
|
-
expect(onPress).toHaveBeenCalledTimes(1)
|
|
70
|
-
expect(onPress).toHaveBeenLastCalledWith(panelId, { nativeEvent: 'example' })
|
|
71
|
-
})
|
|
72
|
-
})
|
|
73
|
-
|
|
74
|
-
describe('Accordion', () => {
|
|
75
|
-
it('expands only one group', async () => {
|
|
76
|
-
const { queryAllByA11yState, getByText } = render(
|
|
77
|
-
<Accordion>
|
|
78
|
-
{(expandProps) => (
|
|
79
|
-
<>
|
|
80
|
-
<Accordion.Panel
|
|
81
|
-
{...expandProps}
|
|
82
|
-
panelId="first"
|
|
83
|
-
control={<Typography>First control</Typography>}
|
|
84
|
-
>
|
|
85
|
-
<Typography>First content</Typography>
|
|
86
|
-
</Accordion.Panel>
|
|
87
|
-
<Accordion.Panel
|
|
88
|
-
{...expandProps}
|
|
89
|
-
panelId="second"
|
|
90
|
-
control={<Typography>Second control</Typography>}
|
|
91
|
-
>
|
|
92
|
-
<Typography>Second content</Typography>
|
|
93
|
-
</Accordion.Panel>
|
|
94
|
-
</>
|
|
95
|
-
)}
|
|
96
|
-
</Accordion>,
|
|
97
|
-
{
|
|
98
|
-
wrapper: Theme
|
|
99
|
-
}
|
|
100
|
-
)
|
|
101
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(0)
|
|
102
|
-
await fireEvent.press(getByText('First control'))
|
|
103
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(1)
|
|
104
|
-
await fireEvent.press(getByText('Second control'))
|
|
105
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(1)
|
|
106
|
-
await fireEvent.press(getByText('Second control'))
|
|
107
|
-
expect(queryAllByA11yState({ expanded: true }).length).toBe(0)
|
|
108
|
-
})
|
|
109
|
-
})
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import React from 'react'
|
|
2
|
-
import { Text } from 'react-native'
|
|
3
|
-
import { render } from '@testing-library/react-native'
|
|
4
|
-
|
|
5
|
-
import Feedback from '../../src/Feedback'
|
|
6
|
-
import Theme from '../../__fixtures__/Theme'
|
|
7
|
-
|
|
8
|
-
describe('Feedback', () => {
|
|
9
|
-
it('renders title', () => {
|
|
10
|
-
const { queryByText } = render(<Feedback title="Test title" />, { wrapper: Theme })
|
|
11
|
-
|
|
12
|
-
expect(queryByText('Test title')).toBeTruthy()
|
|
13
|
-
})
|
|
14
|
-
|
|
15
|
-
it('renders content when passed a string', () => {
|
|
16
|
-
const { queryByText } = render(<Feedback>Test content</Feedback>, { wrapper: Theme })
|
|
17
|
-
|
|
18
|
-
expect(queryByText('Test content')).toBeTruthy()
|
|
19
|
-
})
|
|
20
|
-
|
|
21
|
-
it('renders content when passed a React element', () => {
|
|
22
|
-
const { queryByText } = render(
|
|
23
|
-
<Feedback>
|
|
24
|
-
<Text>Test content</Text>
|
|
25
|
-
</Feedback>,
|
|
26
|
-
{ wrapper: Theme }
|
|
27
|
-
)
|
|
28
|
-
|
|
29
|
-
expect(queryByText('Test content')).toBeTruthy()
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
it("renders content with theme's style prop when passed a function", () => {
|
|
33
|
-
const { getByText } = render(
|
|
34
|
-
<Feedback>{({ textStyles }) => <Text style={textStyles}>Test content</Text>}</Feedback>,
|
|
35
|
-
{
|
|
36
|
-
wrapper: Theme
|
|
37
|
-
}
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
expect(getByText('Test content')).toHaveStyle({ fontSize: 14 })
|
|
41
|
-
})
|
|
42
|
-
})
|