Skip to content

Commit c6491a7

Browse files
committed
Add test
1 parent 1ee660a commit c6491a7

File tree

6 files changed

+2352
-1
lines changed

6 files changed

+2352
-1
lines changed

.babelrc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"presets": ["react-native"]
3+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
import 'react-native';
2+
import React from 'react';
3+
import Header from '../../../Components/Widgets/Header';
4+
import Button from '../../../Components/Widgets/Button';
5+
import Icon from '../../../Components/Widgets/Icon';
6+
import Title from '../../../Components/Widgets/Title';
7+
import Subtitle from '../../../Components/Widgets/Subtitle';
8+
9+
// Note: test renderer must be required after react-native.
10+
import renderer from 'react-test-renderer';
11+
12+
jest.mock('Platform', () => {
13+
const Platform = require.requireActual('Platform');
14+
Platform.OS = 'android';
15+
return Platform;
16+
});
17+
jest.mock('ScrollView', () => 'ScrollView');
18+
19+
it('renders correctly', () => {
20+
const tree = renderer.create(
21+
<Header />
22+
).toJSON();
23+
expect(tree).toMatchSnapshot();
24+
});
25+
26+
it('renders header with buttons', () => {
27+
const tree = renderer.create(
28+
<Header>
29+
<Button transparent>
30+
<Icon name='ios-arrow-back' />
31+
</Button>
32+
33+
<Title>Header</Title>
34+
35+
<Button transparent>
36+
<Icon name='ios-menu' />
37+
</Button>
38+
</Header>
39+
).toJSON();
40+
expect(tree).toMatchSnapshot();
41+
});
42+
43+
it('renders header with buttons and subtitle', () => {
44+
const tree = renderer.create(
45+
<Header>
46+
<Button transparent>
47+
<Icon name='ios-arrow-back' />
48+
</Button>
49+
50+
<Title>Header</Title>
51+
<Subtitle>Subtitle</Subtitle>
52+
53+
<Button transparent>
54+
<Icon name='ios-menu' />
55+
</Button>
56+
</Header>
57+
).toJSON();
58+
expect(tree).toMatchSnapshot();
59+
});
60+
61+
it('renders header with just one button', () => {
62+
const tree = renderer.create(
63+
<Header>
64+
<Button transparent>
65+
<Icon name='ios-arrow-back' />
66+
</Button>
67+
68+
<Title>Header</Title>
69+
</Header>
70+
).toJSON();
71+
expect(tree).toMatchSnapshot();
72+
});
73+
74+
it('renders header with just one button and subtitle', () => {
75+
const tree = renderer.create(
76+
<Header>
77+
<Button transparent>
78+
<Icon name='ios-arrow-back' />
79+
</Button>
80+
81+
<Title>Header</Title>
82+
<Subtitle>Subtitle</Subtitle>
83+
</Header>
84+
).toJSON();
85+
expect(tree).toMatchSnapshot();
86+
});
87+
88+
it('renders header with just one button and iconRight', () => {
89+
const tree = renderer.create(
90+
<Header iconRight>
91+
<Button transparent>
92+
<Icon name='ios-arrow-back' />
93+
</Button>
94+
95+
<Title>Header</Title>
96+
</Header>
97+
).toJSON();
98+
expect(tree).toMatchSnapshot();
99+
});
100+
101+
it('renders header with just one button, iconRight and a subtitle', () => {
102+
const tree = renderer.create(
103+
<Header iconRight>
104+
<Button transparent>
105+
<Icon name='ios-arrow-back' />
106+
</Button>
107+
108+
<Title>Header</Title>
109+
<Subtitle>SubTitle</Subtitle>
110+
</Header>
111+
).toJSON();
112+
expect(tree).toMatchSnapshot();
113+
});
114+
115+
// jest-react-native doesn't work yet with that and mocking didn't work either.
116+
/*
117+
it('renders header with searchbar', () => {
118+
const tree = renderer.create(
119+
<Header searchBar rounded>
120+
<InputGroup>
121+
<Icon name='ios-search' />
122+
<Input placeholder='Search' />
123+
<Icon name='ios-people' />
124+
</InputGroup>
125+
<Button transparent>
126+
Search
127+
</Button>
128+
</Header>
129+
).toJSON();
130+
expect(tree).toMatchSnapshot();
131+
});
132+
*/
+130
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
import 'react-native';
2+
import React from 'react';
3+
import Header from '../../../Components/Widgets/Header';
4+
import Button from '../../../Components/Widgets/Button';
5+
import Icon from '../../../Components/Widgets/Icon';
6+
import Title from '../../../Components/Widgets/Title';
7+
import InputGroup from '../../../Components/Widgets/InputGroup';
8+
import Input from '../../../Components/Widgets/Input';
9+
import Subtitle from '../../../Components/Widgets/Subtitle';
10+
11+
// Note: test renderer must be required after react-native.
12+
import renderer from 'react-test-renderer';
13+
14+
jest.mock('Platform', () => {
15+
const Platform = require.requireActual('Platform');
16+
Platform.OS = 'ios';
17+
return Platform;
18+
});
19+
20+
it('renders correctly', () => {
21+
const tree = renderer.create(
22+
<Header />
23+
).toJSON();
24+
expect(tree).toMatchSnapshot();
25+
});
26+
27+
it('renders header with buttons', () => {
28+
const tree = renderer.create(
29+
<Header>
30+
<Button transparent>
31+
<Icon name='ios-arrow-back' />
32+
</Button>
33+
34+
<Title>Header</Title>
35+
36+
<Button transparent>
37+
<Icon name='ios-menu' />
38+
</Button>
39+
</Header>
40+
).toJSON();
41+
expect(tree).toMatchSnapshot();
42+
});
43+
44+
it('renders header with buttons and subtitle', () => {
45+
const tree = renderer.create(
46+
<Header>
47+
<Button transparent>
48+
<Icon name='ios-arrow-back' />
49+
</Button>
50+
51+
<Title>Header</Title>
52+
<Subtitle>Subtitle</Subtitle>
53+
54+
<Button transparent>
55+
<Icon name='ios-menu' />
56+
</Button>
57+
</Header>
58+
).toJSON();
59+
expect(tree).toMatchSnapshot();
60+
});
61+
62+
it('renders header with just one button', () => {
63+
const tree = renderer.create(
64+
<Header>
65+
<Button transparent>
66+
<Icon name='ios-arrow-back' />
67+
</Button>
68+
69+
<Title>Header</Title>
70+
</Header>
71+
).toJSON();
72+
expect(tree).toMatchSnapshot();
73+
});
74+
75+
it('renders header with just one button and subtitle', () => {
76+
const tree = renderer.create(
77+
<Header>
78+
<Button transparent>
79+
<Icon name='ios-arrow-back' />
80+
</Button>
81+
82+
<Title>Header</Title>
83+
<Subtitle>Subtitle</Subtitle>
84+
</Header>
85+
).toJSON();
86+
expect(tree).toMatchSnapshot();
87+
});
88+
89+
it('renders header with just one button and iconRight', () => {
90+
const tree = renderer.create(
91+
<Header iconRight>
92+
<Button transparent>
93+
<Icon name='ios-arrow-back' />
94+
</Button>
95+
96+
<Title>Header</Title>
97+
</Header>
98+
).toJSON();
99+
expect(tree).toMatchSnapshot();
100+
});
101+
102+
it('renders header with just one button, iconRight and a subtitle', () => {
103+
const tree = renderer.create(
104+
<Header iconRight>
105+
<Button transparent>
106+
<Icon name='ios-arrow-back' />
107+
</Button>
108+
109+
<Title>Header</Title>
110+
<Subtitle>SubTitle</Subtitle>
111+
</Header>
112+
).toJSON();
113+
expect(tree).toMatchSnapshot();
114+
});
115+
116+
it('renders header with searchbar', () => {
117+
const tree = renderer.create(
118+
<Header searchBar rounded>
119+
<InputGroup>
120+
<Icon name='ios-search' />
121+
<Input placeholder='Search' />
122+
<Icon name='ios-people' />
123+
</InputGroup>
124+
<Button transparent>
125+
Search
126+
</Button>
127+
</Header>
128+
).toJSON();
129+
expect(tree).toMatchSnapshot();
130+
});

0 commit comments

Comments
 (0)