Skip to content

Commit 95320ff

Browse files
unit tests
1 parent 1d8263e commit 95320ff

File tree

8 files changed

+1303
-33
lines changed

8 files changed

+1303
-33
lines changed
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
import { Text } from 'react-native';
2+
import { render, screen } from '@testing-library/react-native';
3+
4+
import { Avatar } from '../../../media/Avatar';
5+
import { ProgressBar } from '../../../visualizations/ProgressBar';
6+
import { Tag } from '../../../tag/Tag';
7+
import { DefaultThemeProvider } from '../../../utils/testHelpers';
8+
import { DataCard } from '../DataCard';
9+
10+
const exampleProps = {
11+
title: 'Test Title',
12+
layout: 'vertical' as const,
13+
testID: 'data-card-test',
14+
};
15+
16+
describe('DataCard', () => {
17+
it('passes accessibility for vertical layout', () => {
18+
render(
19+
<DefaultThemeProvider>
20+
<DataCard {...exampleProps} layout="vertical" />
21+
</DefaultThemeProvider>,
22+
);
23+
expect(screen.getByTestId(exampleProps.testID)).toBeAccessible();
24+
});
25+
26+
it('passes accessibility for horizontal layout', () => {
27+
render(
28+
<DefaultThemeProvider>
29+
<DataCard {...exampleProps} layout="horizontal" />
30+
</DefaultThemeProvider>,
31+
);
32+
expect(screen.getByTestId(exampleProps.testID)).toBeAccessible();
33+
});
34+
35+
it('passes accessibility with all props', () => {
36+
render(
37+
<DefaultThemeProvider>
38+
<DataCard
39+
{...exampleProps}
40+
subtitle="Test Subtitle"
41+
thumbnail={<Avatar name="Test" />}
42+
titleAccessory={<Tag>New</Tag>}
43+
>
44+
<ProgressBar accessibilityLabel="Progress" progress={0.5} />
45+
</DataCard>
46+
</DefaultThemeProvider>,
47+
);
48+
expect(screen.getByTestId(exampleProps.testID)).toBeAccessible();
49+
});
50+
51+
it('renders the card with the correct title', () => {
52+
render(
53+
<DefaultThemeProvider>
54+
<DataCard {...exampleProps} />
55+
</DefaultThemeProvider>,
56+
);
57+
expect(screen.getByText(exampleProps.title)).toBeTruthy();
58+
});
59+
60+
it('renders the card with the correct subtitle', () => {
61+
render(
62+
<DefaultThemeProvider>
63+
<DataCard {...exampleProps} subtitle="Test Subtitle" />
64+
</DefaultThemeProvider>,
65+
);
66+
expect(screen.getByText('Test Subtitle')).toBeTruthy();
67+
});
68+
69+
it('renders thumbnail content', () => {
70+
render(
71+
<DefaultThemeProvider>
72+
<DataCard {...exampleProps} thumbnail={<Text testID="test-thumbnail">Thumb</Text>} />
73+
</DefaultThemeProvider>,
74+
);
75+
expect(screen.getByTestId('test-thumbnail')).toBeTruthy();
76+
});
77+
78+
it('renders titleAccessory content', () => {
79+
render(
80+
<DefaultThemeProvider>
81+
<DataCard
82+
{...exampleProps}
83+
titleAccessory={<Text testID="test-accessory">Accessory</Text>}
84+
/>
85+
</DefaultThemeProvider>,
86+
);
87+
expect(screen.getByTestId('test-accessory')).toBeTruthy();
88+
});
89+
90+
it('renders children (visualization)', () => {
91+
render(
92+
<DefaultThemeProvider>
93+
<DataCard {...exampleProps}>
94+
<Text testID="test-visualization">Visualization</Text>
95+
</DataCard>
96+
</DefaultThemeProvider>,
97+
);
98+
expect(screen.getByTestId('test-visualization')).toBeTruthy();
99+
});
100+
101+
it('renders custom title node', () => {
102+
render(
103+
<DefaultThemeProvider>
104+
<DataCard {...exampleProps} title={<Text testID="custom-title">Custom Title</Text>} />
105+
</DefaultThemeProvider>,
106+
);
107+
expect(screen.getByTestId('custom-title')).toBeTruthy();
108+
});
109+
110+
it('renders custom subtitle node', () => {
111+
render(
112+
<DefaultThemeProvider>
113+
<DataCard
114+
{...exampleProps}
115+
subtitle={<Text testID="custom-subtitle">Custom Subtitle</Text>}
116+
/>
117+
</DefaultThemeProvider>,
118+
);
119+
expect(screen.getByTestId('custom-subtitle')).toBeTruthy();
120+
});
121+
122+
it('renders with horizontal layout', () => {
123+
render(
124+
<DefaultThemeProvider>
125+
<DataCard {...exampleProps} layout="horizontal">
126+
<Text testID="test-visualization">Visualization</Text>
127+
</DataCard>
128+
</DefaultThemeProvider>,
129+
);
130+
expect(screen.getByText(exampleProps.title)).toBeTruthy();
131+
expect(screen.getByTestId('test-visualization')).toBeTruthy();
132+
});
133+
});

0 commit comments

Comments
 (0)