|
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