@@ -3,125 +3,130 @@ import * as React from 'react';
3
3
4
4
import ShowAsync from './' ;
5
5
6
- const timeout = 100 ;
7
-
8
- const resolvable = resolved =>
6
+ const resolve = ( ) =>
9
7
new Promise ( resolve => {
10
8
setTimeout ( ( ) => {
11
- resolve ( resolved ) ;
12
- } , timeout ) ;
9
+ resolve ( 'resolve' ) ;
10
+ } , 10 ) ;
13
11
} ) ;
14
-
15
- const rejectable = rejected =>
12
+ const reject = ( ) =>
16
13
new Promise ( ( _ , reject ) => {
17
14
setTimeout ( ( ) => {
18
- reject ( rejected ) ;
19
- } , timeout ) ;
15
+ reject ( 'reject' ) ;
16
+ } , 10 ) ;
20
17
} ) ;
21
-
22
- const getPromiseStatus = wrapper => wrapper . state ( 'status' ) ;
23
-
24
- describe ( 'resolve' , ( ) => {
25
- test ( 'no pending, resolve, reject' , ( ) => {
26
- const wrapper = mount ( < ShowAsync when = { resolvable ( 'resolved' ) } /> ) ;
27
- expect ( wrapper . html ( ) ) . toEqual ( null ) ;
18
+ const waitForResult = ( ) =>
19
+ new Promise ( resolve => {
20
+ setTimeout ( resolve , 11 ) ;
28
21
} ) ;
22
+ const getPromise = wrapper => wrapper . prop ( 'when' ) ;
23
+ const pendingResult = '<div>pending</div>' ;
24
+ const resolveResult = '<div>resolve</div>' ;
25
+ const rejectResult = '<div>reject</div>' ;
26
+
27
+ describe ( 'render tests' , ( ) => {
28
+ test ( 'resolve with nothing' , async ( ) => {
29
+ const element = < ShowAsync when = { resolve ( ) } /> ;
30
+ const wrapper = mount ( element ) ;
29
31
30
- test ( 'pending' , ( ) => {
31
- const pending = ( ) => < p > horse</ p > ;
32
- const result = '<p>horse</p>' ;
33
- const wrapper = mount ( < ShowAsync when = { resolvable ( 'resolved' ) } pending = { pending } /> ) ;
34
- expect ( wrapper . html ( ) ) . toEqual ( result ) ;
32
+ await expect ( wrapper . html ( ) ) . toEqual ( null ) ;
33
+ await waitForResult ( ) ;
34
+ await expect ( wrapper . html ( ) ) . toEqual ( null ) ;
35
35
} ) ;
36
36
37
- test ( 'resolve with render' , done => {
38
- const resolved = value => < p > { value } </ p > ;
39
- const result = '<p>resolved</p>' ;
40
- const wrapper = mount ( < ShowAsync when = { resolvable ( 'resolved' ) } render = { resolved } /> ) ;
41
- setTimeout ( ( ) => {
42
- expect ( wrapper . html ( ) ) . toEqual ( result ) ;
43
- done ( ) ;
44
- } , timeout + 50 ) ;
37
+ test ( 'reject with nothing' , async ( ) => {
38
+ const element = < ShowAsync when = { reject ( ) } /> ;
39
+ const wrapper = mount ( element ) ;
40
+
41
+ await expect ( wrapper . html ( ) ) . toEqual ( null ) ;
42
+ await waitForResult ( ) ;
43
+ await expect ( wrapper . html ( ) ) . toEqual ( null ) ;
45
44
} ) ;
46
45
47
- test ( 'resolve with children' , done => {
48
- const result = '<p>resolved</p>' ;
49
- const wrapper = mount (
50
- < ShowAsync when = { resolvable ( 'resolved' ) } > { value => < p > { value } </ p > } </ ShowAsync > ,
46
+ test ( 'pending then resolve' , async ( ) => {
47
+ const element = (
48
+ < ShowAsync when = { resolve ( ) } pending = { ( ) => < div > pending</ div > } >
49
+ { value => < div > { value } </ div > }
50
+ </ ShowAsync >
51
51
) ;
52
- setTimeout ( ( ) => {
53
- expect ( wrapper . html ( ) ) . toEqual ( result ) ;
54
- done ( ) ;
55
- } , timeout + 50 ) ;
52
+ const wrapper = mount ( element ) ;
53
+
54
+ await expect ( wrapper . html ( ) ) . toEqual ( pendingResult ) ;
55
+ await waitForResult ( ) ;
56
+ await expect ( wrapper . html ( ) ) . toEqual ( resolveResult ) ;
56
57
} ) ;
57
58
58
- test ( 'resolve' , done => {
59
- const rejected = value => < p > { value } </ p > ;
60
- const result = '<p>rejected</p>' ;
61
- const wrapper = mount (
62
- < ShowAsync when = { rejectable ( 'rejected' ) } rejected = { rejected } /> ,
59
+ test ( 'no pending then resolve' , async ( ) => {
60
+ const element = (
61
+ < ShowAsync when = { resolve ( ) } > { value => < div > { value } </ div > } </ ShowAsync >
63
62
) ;
64
- setTimeout ( ( ) => {
65
- expect ( wrapper . html ( ) ) . toEqual ( result ) ;
66
- done ( ) ;
67
- } , timeout + 50 ) ;
63
+ const wrapper = mount ( element ) ;
64
+
65
+ await expect ( wrapper . html ( ) ) . toEqual ( null ) ;
66
+ await waitForResult ( ) ;
67
+ await expect ( wrapper . html ( ) ) . toEqual ( resolveResult ) ;
68
68
} ) ;
69
69
70
- test ( 'lifecycle' , ( ) => {
70
+ test ( 'pending then reject' , async ( ) => {
71
71
const element = (
72
72
< ShowAsync
73
- when = { resolvable ( 'result' ) }
73
+ when = { reject ( ) }
74
74
pending = { ( ) => < div > pending</ div > }
75
- rejected = { ( ) => < div > rejected</ div > }
76
- >
77
- { value => < div > { value } </ div > }
78
- </ ShowAsync >
75
+ rejected = { ( ) => < div > reject</ div > }
76
+ />
79
77
) ;
80
78
const wrapper = mount ( element ) ;
81
79
82
- if ( getPromiseStatus ( wrapper ) === 'pending' ) {
83
- expect ( wrapper . html ( ) ) . toEqual ( '<div>pending</div>' ) ;
84
- }
80
+ await expect ( wrapper . html ( ) ) . toEqual ( pendingResult ) ;
81
+ await waitForResult ( ) ;
82
+ await expect ( wrapper . html ( ) ) . toEqual ( rejectResult ) ;
83
+ } ) ;
85
84
86
- if ( getPromiseStatus ( wrapper ) === 'resolved' ) {
87
- expect ( wrapper . html ( ) ) . toEqual ( ' <div>result </div>' ) ;
88
- }
85
+ test ( 'no pending then reject' , async ( ) => {
86
+ const element = < ShowAsync when = { reject ( ) } rejected = { ( ) => < div > reject </ div > } /> ;
87
+ const wrapper = mount ( element ) ;
89
88
90
- wrapper . setProps ( { when : rejectable ( 'rejected' ) } ) ;
89
+ await expect ( wrapper . html ( ) ) . toEqual ( null ) ;
90
+ await waitForResult ( ) ;
91
+ await expect ( wrapper . html ( ) ) . toEqual ( rejectResult ) ;
92
+ } ) ;
93
+ } ) ;
91
94
92
- if ( getPromiseStatus ( wrapper ) === 'pending' ) {
93
- expect ( wrapper . html ( ) ) . toEqual ( '<div>pending</div>' ) ;
94
- }
95
+ describe ( 'promise tests' , ( ) => {
96
+ test ( 'reject without rejected' , async ( ) => {
97
+ const element = < ShowAsync when = { reject ( ) } /> ;
98
+ const wrapper = mount ( element ) ;
95
99
96
- if ( getPromiseStatus ( wrapper ) === 'rejected' ) {
97
- expect ( wrapper . html ( ) ) . toEqual ( '<div>rejected</div>' ) ;
98
- }
100
+ await expect ( getPromise ( wrapper ) ) . rejects . toEqual ( 'reject' ) ;
101
+ } ) ;
99
102
100
- wrapper . unmount ( ) ;
103
+ test ( 'reject with rejected' , async ( ) => {
104
+ const element = < ShowAsync when = { reject ( ) } rejected = { error => < div > { error } </ div > } /> ;
105
+ const wrapper = mount ( element ) ;
101
106
102
- expect ( wrapper . html ( ) ) . toEqual ( null ) ;
107
+ await expect ( getPromise ( wrapper ) ) . rejects . toEqual ( 'reject' ) ;
108
+ } ) ;
103
109
104
- wrapper . mount ( ) ;
110
+ test ( 'resolve without children/render' , async ( ) => {
111
+ const element = < ShowAsync when = { resolve ( ) } /> ;
112
+ const wrapper = mount ( element ) ;
105
113
106
- wrapper . setProps ( { when : rejectable ( 'rejected' ) , rejected : undefined } ) ;
107
- if ( getPromiseStatus ( wrapper ) === 'rejected' ) {
108
- expect ( wrapper . html ( ) ) . toEqual ( null ) ;
109
- }
114
+ await expect ( getPromise ( wrapper ) ) . resolves . toEqual ( 'resolve' ) ;
115
+ } ) ;
110
116
111
- wrapper . setProps ( {
112
- when : resolvable ( 'result' ) ,
113
- render : undefined ,
114
- children : undefined ,
115
- } ) ;
116
- if ( getPromiseStatus ( wrapper ) === 'resolved' ) {
117
- expect ( wrapper . html ( ) ) . toEqual ( null ) ;
118
- }
117
+ test ( 'resolve with children' , async ( ) => {
118
+ const element = (
119
+ < ShowAsync when = { resolve ( ) } > { value => < div > { value } </ div > } </ ShowAsync >
120
+ ) ;
121
+ const wrapper = mount ( element ) ;
122
+
123
+ await expect ( getPromise ( wrapper ) ) . resolves . toEqual ( 'resolve' ) ;
124
+ } ) ;
125
+
126
+ test ( 'resolve with render' , async ( ) => {
127
+ const element = < ShowAsync when = { resolve ( ) } render = { value => < div > { value } </ div > } /> ;
128
+ const wrapper = mount ( element ) ;
119
129
120
- wrapper . unmount ( ) ;
121
- wrapper . mount ( ) ;
122
- wrapper . setProps ( { pending : undefined } ) ;
123
- if ( getPromiseStatus ( wrapper ) === 'pending' ) {
124
- expect ( wrapper . html ( ) ) . toEqual ( null ) ;
125
- }
130
+ await expect ( getPromise ( wrapper ) ) . resolves . toEqual ( 'resolve' ) ;
126
131
} ) ;
127
132
} ) ;
0 commit comments