|
1 | 1 | /* eslint-disable react/jsx-no-bind */ |
2 | 2 | import React from 'react'; |
3 | 3 | import { Text, View } from 'react-native'; |
4 | | -import { INode } from '../node-view'; |
| 4 | +import { Node } from '../node-view'; |
5 | 5 | import { render, waitFor, fireEvent } from '@testing-library/react-native'; |
6 | 6 | import { NestedListView } from './nested-list-view'; |
7 | 7 | import { NestedRow } from '../nested-row'; |
8 | 8 |
|
9 | | -const renderNode = (node: INode) => ( |
| 9 | +const renderNode = (node: Node) => ( |
10 | 10 | <View> |
11 | 11 | <Text>{node.title}</Text> |
12 | 12 | </View> |
@@ -39,6 +39,28 @@ describe('NestedListView', () => { |
39 | 39 | }); |
40 | 40 | }); |
41 | 41 |
|
| 42 | + test('renders with an empty array', async () => { |
| 43 | + const data = [] as any; |
| 44 | + const { queryByText } = render( |
| 45 | + <NestedListView |
| 46 | + getChildrenName={() => 'items'} |
| 47 | + renderNode={(node: any) => ( |
| 48 | + <View> |
| 49 | + <Text>{node.title}</Text> |
| 50 | + </View> |
| 51 | + )} |
| 52 | + data={data} |
| 53 | + />, |
| 54 | + ); |
| 55 | + |
| 56 | + await waitFor(() => { |
| 57 | + [1, 2, 3].forEach((item: number) => { |
| 58 | + const component = queryByText(`child${item}`); |
| 59 | + expect(component).toBeDefined(); |
| 60 | + }); |
| 61 | + }); |
| 62 | + }); |
| 63 | + |
42 | 64 | test('renders with nested arrays', async () => { |
43 | 65 | const data = [ |
44 | 66 | { |
@@ -123,13 +145,13 @@ describe('NestedListView', () => { |
123 | 145 |
|
124 | 146 | const { queryByText } = render( |
125 | 147 | <NestedListView |
126 | | - getChildrenName={(node: INode) => { |
| 148 | + getChildrenName={(node: Node) => { |
127 | 149 | if (node.title === 'child2') { |
128 | 150 | return 'descendants'; |
129 | 151 | } |
130 | 152 | return 'items'; |
131 | 153 | }} |
132 | | - renderNode={(node: INode) => ( |
| 154 | + renderNode={(node: Node) => ( |
133 | 155 | <View> |
134 | 156 | <Text>{node.title}</Text> |
135 | 157 | </View> |
@@ -165,13 +187,13 @@ describe('NestedListView', () => { |
165 | 187 |
|
166 | 188 | const { queryByText } = render( |
167 | 189 | <NestedListView |
168 | | - getChildrenName={(node: INode) => { |
| 190 | + getChildrenName={(node: Node) => { |
169 | 191 | if (node.title === 'child2') { |
170 | 192 | return 'children'; |
171 | 193 | } |
172 | 194 | return 'items'; |
173 | 195 | }} |
174 | | - renderNode={(node: INode) => ( |
| 196 | + renderNode={(node: Node) => ( |
175 | 197 | <View> |
176 | 198 | <Text>{node.title}</Text> |
177 | 199 | </View> |
@@ -234,7 +256,7 @@ describe('NestedListView', () => { |
234 | 256 | const { queryByText } = render( |
235 | 257 | <NestedListView |
236 | 258 | getChildrenName={() => 'children'} |
237 | | - renderNode={(node: INode) => ( |
| 259 | + renderNode={(node: Node) => ( |
238 | 260 | <View> |
239 | 261 | <Text>{node.name}</Text> |
240 | 262 | </View> |
@@ -274,7 +296,7 @@ describe('NestedListView', () => { |
274 | 296 | const { queryByText } = render( |
275 | 297 | <NestedListView |
276 | 298 | onNodePressed={mockOnNodePressed} |
277 | | - renderNode={(node: INode) => ( |
| 299 | + renderNode={(node: Node) => ( |
278 | 300 | <View> |
279 | 301 | <Text>{node.title}</Text> |
280 | 302 | </View> |
@@ -306,7 +328,7 @@ describe('NestedListView', () => { |
306 | 328 | <NestedListView |
307 | 329 | keepOpenedState |
308 | 330 | onNodePressed={mockOnNodePressed} |
309 | | - renderNode={(node: INode) => ( |
| 331 | + renderNode={(node: Node) => ( |
310 | 332 | <View> |
311 | 333 | <Text>{node.title}</Text> |
312 | 334 | </View> |
@@ -337,7 +359,7 @@ describe('NestedListView', () => { |
337 | 359 | const { queryByText } = render( |
338 | 360 | <NestedListView |
339 | 361 | onNodePressed={mockOnNodePressed} |
340 | | - renderNode={(node: INode, level?: number) => ( |
| 362 | + renderNode={(node: Node, level?: number) => ( |
341 | 363 | <NestedRow level={level}> |
342 | 364 | <Text>{node.title}</Text> |
343 | 365 | </NestedRow> |
@@ -395,7 +417,7 @@ describe('NestedListView', () => { |
395 | 417 |
|
396 | 418 | const { getByText } = render( |
397 | 419 | <NestedListView |
398 | | - renderNode={(item: INode, level: number, isLastItem: boolean) => { |
| 420 | + renderNode={(item: Node, level: number, isLastItem: boolean) => { |
399 | 421 | mockIsTheLast(isLastItem); |
400 | 422 |
|
401 | 423 | return ( |
|
0 commit comments