2
2
3
3
import "@testing-library/jest-dom/extend-expect"
4
4
import React from "react"
5
- import { render , fireEvent , cleanup , waitForElement } from "@testing-library/react"
5
+ import { render , fireEvent , cleanup } from "@testing-library/react"
6
6
import Async , { createInstance , globalScope } from "./index"
7
7
import {
8
8
resolveIn ,
@@ -59,7 +59,7 @@ describe("Async.Fulfilled", () => {
59
59
test ( "renders only after the promise is resolved" , async ( ) => {
60
60
const promiseFn = ( ) => resolveTo ( "ok" )
61
61
const deferFn = ( ) => rejectTo ( "fail" )
62
- const { getByText, queryByText } = render (
62
+ const { getByText, findByText , queryByText } = render (
63
63
< Async promiseFn = { promiseFn } deferFn = { deferFn } >
64
64
< Async . Fulfilled >
65
65
{ ( data , { run } ) => < button onClick = { run } > { data } </ button > }
@@ -68,19 +68,19 @@ describe("Async.Fulfilled", () => {
68
68
</ Async >
69
69
)
70
70
expect ( queryByText ( "ok" ) ) . toBeNull ( )
71
- await waitForElement ( ( ) => getByText ( "ok" ) )
71
+ await findByText ( "ok" )
72
72
expect ( queryByText ( "ok" ) ) . toBeInTheDocument ( )
73
73
expect ( queryByText ( "fail" ) ) . toBeNull ( )
74
74
fireEvent . click ( getByText ( "ok" ) )
75
- await waitForElement ( ( ) => getByText ( "fail" ) )
75
+ await findByText ( "fail" )
76
76
expect ( queryByText ( "ok" ) ) . toBeNull ( )
77
77
expect ( queryByText ( "fail" ) ) . toBeInTheDocument ( )
78
78
} )
79
79
80
80
test ( "with persist renders old data on error" , async ( ) => {
81
81
const promiseFn = ( ) => resolveTo ( "ok" )
82
82
const deferFn = ( ) => rejectTo ( "fail" )
83
- const { getByText, queryByText } = render (
83
+ const { getByText, findByText , queryByText } = render (
84
84
< Async promiseFn = { promiseFn } deferFn = { deferFn } >
85
85
< Async . Fulfilled persist >
86
86
{ ( data , { run } ) => < button onClick = { run } > { data } </ button > }
@@ -89,19 +89,19 @@ describe("Async.Fulfilled", () => {
89
89
</ Async >
90
90
)
91
91
expect ( queryByText ( "ok" ) ) . toBeNull ( )
92
- await waitForElement ( ( ) => getByText ( "ok" ) )
92
+ await findByText ( "ok" )
93
93
expect ( queryByText ( "ok" ) ) . toBeInTheDocument ( )
94
94
expect ( queryByText ( "fail" ) ) . toBeNull ( )
95
95
fireEvent . click ( getByText ( "ok" ) )
96
- await waitForElement ( ( ) => getByText ( "fail" ) )
96
+ await findByText ( "fail" )
97
97
expect ( queryByText ( "ok" ) ) . toBeInTheDocument ( )
98
98
expect ( queryByText ( "fail" ) ) . toBeInTheDocument ( )
99
99
} )
100
100
101
101
test ( "Async.Fulfilled works also with nested Async" , async ( ) => {
102
102
const outer = ( ) => resolveIn ( 0 ) ( "outer" )
103
103
const inner = ( ) => resolveIn ( 100 ) ( "inner" )
104
- const { getByText , queryByText } = render (
104
+ const { findByText , queryByText } = render (
105
105
< Async promiseFn = { outer } >
106
106
< Async . Fulfilled >
107
107
{ outer => (
@@ -114,32 +114,32 @@ describe("Async.Fulfilled", () => {
114
114
</ Async >
115
115
)
116
116
expect ( queryByText ( "outer pending" ) ) . toBeNull ( )
117
- await waitForElement ( ( ) => getByText ( "outer pending" ) )
117
+ await findByText ( "outer pending" )
118
118
expect ( queryByText ( "outer inner" ) ) . toBeNull ( )
119
- await waitForElement ( ( ) => getByText ( "outer inner" ) )
119
+ await findByText ( "outer inner" )
120
120
expect ( queryByText ( "outer inner" ) ) . toBeInTheDocument ( )
121
121
} )
122
122
} )
123
123
124
124
describe ( "Async.Pending" , ( ) => {
125
125
test ( "renders only while the promise is pending" , async ( ) => {
126
126
const promiseFn = ( ) => resolveTo ( "ok" )
127
- const { getByText , queryByText } = render (
127
+ const { findByText , queryByText } = render (
128
128
< Async promiseFn = { promiseFn } >
129
129
< Async . Pending > pending</ Async . Pending >
130
130
< Async . Fulfilled > done</ Async . Fulfilled >
131
131
</ Async >
132
132
)
133
133
expect ( queryByText ( "pending" ) ) . toBeInTheDocument ( )
134
- await waitForElement ( ( ) => getByText ( "done" ) )
134
+ await findByText ( "done" )
135
135
expect ( queryByText ( "pending" ) ) . toBeNull ( )
136
136
} )
137
137
} )
138
138
139
139
describe ( "Async.Initial" , ( ) => {
140
140
test ( "renders only while the deferred promise has not started yet" , async ( ) => {
141
141
const deferFn = ( ) => resolveTo ( "ok" )
142
- const { getByText, queryByText } = render (
142
+ const { getByText, findByText , queryByText } = render (
143
143
< Async deferFn = { deferFn } >
144
144
< Async . Initial > { ( { run } ) => < button onClick = { run } > initial</ button > } </ Async . Initial >
145
145
< Async . Pending > pending</ Async . Pending >
@@ -150,53 +150,53 @@ describe("Async.Initial", () => {
150
150
fireEvent . click ( getByText ( "initial" ) )
151
151
expect ( queryByText ( "initial" ) ) . toBeNull ( )
152
152
expect ( queryByText ( "pending" ) ) . toBeInTheDocument ( )
153
- await waitForElement ( ( ) => getByText ( "done" ) )
153
+ await findByText ( "done" )
154
154
expect ( queryByText ( "pending" ) ) . toBeNull ( )
155
155
} )
156
156
} )
157
157
158
158
describe ( "Async.Rejected" , ( ) => {
159
159
test ( "renders only after the promise is rejected" , async ( ) => {
160
160
const promiseFn = ( ) => rejectTo ( "err" )
161
- const { getByText , queryByText } = render (
161
+ const { findByText , queryByText } = render (
162
162
< Async promiseFn = { promiseFn } >
163
163
< Async . Rejected > { error => error . message } </ Async . Rejected >
164
164
</ Async >
165
165
)
166
166
expect ( queryByText ( "err" ) ) . toBeNull ( )
167
- await waitForElement ( ( ) => getByText ( "err" ) )
167
+ await findByText ( "err" )
168
168
expect ( queryByText ( "err" ) ) . toBeInTheDocument ( )
169
169
} )
170
170
} )
171
171
172
172
describe ( "Async.Settled" , ( ) => {
173
173
test ( "renders after the promise is fulfilled" , async ( ) => {
174
174
const promiseFn = ( ) => resolveTo ( "value" )
175
- const { getByText , queryByText } = render (
175
+ const { findByText , queryByText } = render (
176
176
< Async promiseFn = { promiseFn } >
177
177
< Async . Settled > { ( { data } ) => data } </ Async . Settled >
178
178
</ Async >
179
179
)
180
180
expect ( queryByText ( "value" ) ) . toBeNull ( )
181
- await waitForElement ( ( ) => getByText ( "value" ) )
181
+ await findByText ( "value" )
182
182
expect ( queryByText ( "value" ) ) . toBeInTheDocument ( )
183
183
} )
184
184
185
185
test ( "renders after the promise is rejected" , async ( ) => {
186
186
const promiseFn = ( ) => rejectTo ( "err" )
187
- const { getByText , queryByText } = render (
187
+ const { findByText , queryByText } = render (
188
188
< Async promiseFn = { promiseFn } >
189
189
< Async . Settled > { ( { error } ) => error . message } </ Async . Settled >
190
190
</ Async >
191
191
)
192
192
expect ( queryByText ( "err" ) ) . toBeNull ( )
193
- await waitForElement ( ( ) => getByText ( "err" ) )
193
+ await findByText ( "err" )
194
194
expect ( queryByText ( "err" ) ) . toBeInTheDocument ( )
195
195
} )
196
196
197
197
test ( "renders while loading new data and persist=true" , async ( ) => {
198
198
const promiseFn = ( ) => resolveTo ( "value" )
199
- const { getByText, queryByText } = render (
199
+ const { getByText, findByText , queryByText } = render (
200
200
< Async initialValue = "init" promiseFn = { promiseFn } >
201
201
< Async . Pending >
202
202
< Async . Settled persist > loading</ Async . Settled >
@@ -206,8 +206,7 @@ describe("Async.Settled", () => {
206
206
)
207
207
expect ( queryByText ( "loading" ) ) . toBeNull ( )
208
208
fireEvent . click ( getByText ( "reload" ) )
209
- await waitForElement ( ( ) => getByText ( "loading" ) )
210
- expect ( queryByText ( "loading" ) ) . toBeInTheDocument ( )
209
+ await findByText ( "loading" )
211
210
} )
212
211
} )
213
212
@@ -216,17 +215,17 @@ describe("createInstance", () => {
216
215
const promiseFn = ( ) => resolveTo ( "done" )
217
216
const onResolve = jest . fn ( )
218
217
const CustomAsync = createInstance ( { promiseFn, onResolve } )
219
- const { getByText } = render ( < CustomAsync > { ( { data } ) => data || null } </ CustomAsync > )
220
- await waitForElement ( ( ) => getByText ( "done" ) )
218
+ const { findByText } = render ( < CustomAsync > { ( { data } ) => data || null } </ CustomAsync > )
219
+ await findByText ( "done" )
221
220
expect ( onResolve ) . toHaveBeenCalledWith ( "done" )
222
221
} )
223
222
224
223
test ( "accepts watchFn from defaultProps and passes the defaultProps along" , async ( ) => {
225
224
const promiseFn = ( ) => resolveTo ( "done" )
226
225
const watchFn = jest . fn ( )
227
226
const CustomAsync = createInstance ( { promiseFn, watchFn } )
228
- const { getByText } = render ( < CustomAsync > { ( { data } ) => data || null } </ CustomAsync > )
229
- await waitForElement ( ( ) => getByText ( "done" ) )
227
+ const { findByText } = render ( < CustomAsync > { ( { data } ) => data || null } </ CustomAsync > )
228
+ await findByText ( "done" )
230
229
expect ( watchFn ) . toHaveBeenCalledWith (
231
230
expect . objectContaining ( { promiseFn, watchFn } ) ,
232
231
expect . objectContaining ( { promiseFn, watchFn } )
@@ -236,14 +235,14 @@ describe("createInstance", () => {
236
235
test ( "custom instances also have helper components" , async ( ) => {
237
236
const promiseFn = ( ) => resolveTo ( "done" )
238
237
const CustomAsync = createInstance ( { promiseFn } )
239
- const { getByText } = render (
238
+ const { findByText } = render (
240
239
< CustomAsync >
241
240
< CustomAsync . Pending > pending</ CustomAsync . Pending >
242
241
< CustomAsync . Fulfilled > resolved</ CustomAsync . Fulfilled >
243
242
</ CustomAsync >
244
243
)
245
- await waitForElement ( ( ) => getByText ( "pending" ) )
246
- await waitForElement ( ( ) => getByText ( "resolved" ) )
244
+ await findByText ( "pending" )
245
+ await findByText ( "resolved" )
247
246
} )
248
247
249
248
test ( "custom instance also passes defaultProps to deferFn" , async ( ) => {
0 commit comments