11import * as React from 'react' ;
22import { View , Text } from 'react-native' ;
3- import { render } from './renderer' ;
3+ import { createRenderer } from './renderer' ;
44
55function Passthrough ( { children } : { children : React . ReactNode } ) {
66 return children ;
77}
88
99test ( 'renders View' , ( ) => {
10- render ( < View /> ) ;
11- expect ( true ) . toBe ( true ) ;
10+ const renderer = createRenderer ( ) ;
11+ renderer . render ( < View /> ) ;
12+ expect ( renderer . toJSON ( ) ) . toMatchInlineSnapshot ( `<View />` ) ;
1213} ) ;
1314
1415test ( 'renders Text' , ( ) => {
15- render ( < Text > Hello world</ Text > ) ;
16- expect ( true ) . toBe ( true ) ;
17- } ) ;
18-
19- test ( 'throws when rendering string outside of Text' , ( ) => {
20- jest . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } ) ;
21-
22- expect ( ( ) => render ( < View > Hello</ View > ) ) . toThrowErrorMatchingInlineSnapshot (
23- `"Invariant Violation: Text strings must be rendered within a <Text> component. Detected attempt to render "Hello" string within a <View> component."` ,
24- ) ;
25-
26- expect ( ( ) => render ( < Passthrough > Hello</ Passthrough > ) ) . toThrowErrorMatchingInlineSnapshot (
27- `"Invariant Violation: Text strings must be rendered within a <Text> component. Detected attempt to render "Hello" string within a <ROOT> component."` ,
28- ) ;
29-
30- expect ( ( ) => render ( < > Hello</ > ) ) . toThrowErrorMatchingInlineSnapshot (
31- `"Invariant Violation: Text strings must be rendered within a <Text> component. Detected attempt to render "Hello" string within a <ROOT> component."` ,
32- ) ;
33-
34- jest . restoreAllMocks ( ) ;
16+ const renderer = createRenderer ( ) ;
17+ renderer . render ( < Text > Hello RNTL!</ Text > ) ;
18+ expect ( renderer . toJSON ( ) ) . toMatchInlineSnapshot ( `
19+ <Text>
20+ Hello RNTL!
21+ </Text>
22+ ` ) ;
3523} ) ;
3624
37- test ( 'implements update()' , ( ) => {
38- const result = render ( < View testID = "view" /> ) ;
39- expect ( result . toJSON ( ) ) . toMatchInlineSnapshot ( `
25+ test ( 'can update rendered element' , ( ) => {
26+ const renderer = createRenderer ( ) ;
27+ renderer . render ( < View testID = "view" /> ) ;
28+ expect ( renderer . toJSON ( ) ) . toMatchInlineSnapshot ( `
4029 <View
4130 testID="view"
4231 />
4332 ` ) ;
4433
45- result . update (
34+ renderer . render (
4635 < View testID = "view" >
4736 < Text > Hello</ Text >
4837 </ View > ,
4938 ) ;
50- expect ( result . toJSON ( ) ) . toMatchInlineSnapshot ( `
39+ expect ( renderer . toJSON ( ) ) . toMatchInlineSnapshot ( `
5140 <View
5241 testID="view"
5342 >
@@ -58,46 +47,57 @@ test('implements update()', () => {
5847 ` ) ;
5948} ) ;
6049
61- test ( 'implements unmount()' , ( ) => {
62- const result = render ( < View testID = "view" /> ) ;
63- expect ( result . toJSON ( ) ) . toMatchInlineSnapshot ( `
50+ test ( 'can unmount renderer element' , ( ) => {
51+ const renderer = createRenderer ( ) ;
52+ renderer . render ( < View testID = "view" /> ) ;
53+ expect ( renderer . toJSON ( ) ) . toMatchInlineSnapshot ( `
6454 <View
6555 testID="view"
6656 />
6757 ` ) ;
6858
69- result . unmount ( ) ;
70- expect ( result . toJSON ( ) ) . toBeNull ( ) ;
59+ renderer . unmount ( ) ;
60+ expect ( renderer . toJSON ( ) ) . toBeNull ( ) ;
7161} ) ;
7262
73- test ( 'implements get root()' , ( ) => {
74- const result = render ( < View testID = "view" /> ) ;
75- expect ( result . root ) . toMatchInlineSnapshot ( `
63+ test ( 'returns root view' , ( ) => {
64+ const renderer = createRenderer ( ) ;
65+ renderer . render ( < View testID = "view" /> ) ;
66+ expect ( renderer . root ) . toMatchInlineSnapshot ( `
7667 <View
7768 testID="view"
7869 />
7970 ` ) ;
8071} ) ;
8172
82- test ( 'implements toJSON()' , ( ) => {
83- const result = render (
84- < View testID = "view" >
85- < Text style = { { color : 'blue' } } > Hello</ Text >
86- </ View > ,
87- ) ;
88- expect ( result . toJSON ( ) ) . toMatchInlineSnapshot ( `
89- <View
90- testID="view"
91- >
92- <Text
93- style={
94- {
95- "color": "blue",
96- }
97- }
98- >
99- Hello
100- </Text>
101- </View>
73+ test ( 'returns container view' , ( ) => {
74+ const renderer = createRenderer ( ) ;
75+ renderer . render ( < View testID = "view" /> ) ;
76+ expect ( renderer . container ) . toMatchInlineSnapshot ( `
77+ <CONTAINER>
78+ <View
79+ testID="view"
80+ />
81+ </CONTAINER>
10282 ` ) ;
10383} ) ;
84+
85+ test ( 'throws when rendering string outside of Text' , ( ) => {
86+ jest . spyOn ( console , 'error' ) . mockImplementation ( ( ) => { } ) ;
87+
88+ expect ( ( ) => createRenderer ( ) . render ( < View > Hello</ View > ) ) . toThrowErrorMatchingInlineSnapshot (
89+ `"Invariant Violation: Text strings must be rendered within a <Text> component. Detected attempt to render "Hello" string within a <View> component."` ,
90+ ) ;
91+
92+ expect ( ( ) =>
93+ createRenderer ( ) . render ( < Passthrough > Hello</ Passthrough > ) ,
94+ ) . toThrowErrorMatchingInlineSnapshot (
95+ `"Invariant Violation: Text strings must be rendered within a <Text> component. Detected attempt to render "Hello" string within a <ROOT> component."` ,
96+ ) ;
97+
98+ expect ( ( ) => createRenderer ( ) . render ( < > Hello</ > ) ) . toThrowErrorMatchingInlineSnapshot (
99+ `"Invariant Violation: Text strings must be rendered within a <Text> component. Detected attempt to render "Hello" string within a <ROOT> component."` ,
100+ ) ;
101+
102+ jest . restoreAllMocks ( ) ;
103+ } ) ;
0 commit comments