@@ -124,13 +124,21 @@ describe("response", () => {
124
124
}
125
125
} ) ;
126
126
127
- test ( "fallback on empty response" , async ( ) => {
127
+ test ( "fallback on null response" , async ( ) => {
128
128
const client = createObservedClient < paths > ( { } , async ( ) => new Response ( undefined , { status : 200 } ) ) ;
129
129
130
130
const { data, error } = await client . GET ( "/error-empty-response" ) ;
131
131
expect ( data ) . toBe ( undefined ) ;
132
132
expect ( error ) . toBe ( undefined ) ;
133
133
} ) ;
134
+
135
+ test ( "fallback on empty body steam" , async ( ) => {
136
+ const client = createObservedClient < paths > ( { } , async ( ) => new Response ( "" , { status : 200 } ) ) ;
137
+
138
+ const { data, error } = await client . GET ( "/error-empty-response" ) ;
139
+ expect ( data ) . toBe ( undefined ) ;
140
+ expect ( error ) . toBe ( undefined ) ;
141
+ } ) ;
134
142
} ) ;
135
143
136
144
describe ( "response object" , ( ) => {
@@ -143,7 +151,7 @@ describe("response", () => {
143
151
} ) ;
144
152
} ) ;
145
153
146
- describe ( "parseAs" , ( ) => {
154
+ describe ( "data parseAs" , ( ) => {
147
155
const client = createObservedClient < paths > ( { } , async ( ) => Response . json ( { } ) ) ;
148
156
149
157
test ( "text" , async ( ) => {
@@ -200,4 +208,64 @@ describe("response", () => {
200
208
}
201
209
} ) ;
202
210
} ) ;
211
+
212
+ describe ( "error parseAs" , ( ) => {
213
+ const client = createObservedClient < paths > ( { } , async ( ) => Response . json ( { } , { status : 500 } ) ) ;
214
+
215
+ test ( "text" , async ( ) => {
216
+ const { data, error } = ( await client . GET ( "/resources" , {
217
+ parseAs : "text" ,
218
+ } ) ) satisfies { error ?: string } ;
219
+ if ( data ) {
220
+ throw new Error ( "parseAs text: error" ) ;
221
+ }
222
+ expect ( error ) . toBe ( "{}" ) ;
223
+ } ) ;
224
+
225
+ test ( "arrayBuffer" , async ( ) => {
226
+ const { data, error } = ( await client . GET ( "/resources" , {
227
+ parseAs : "arrayBuffer" ,
228
+ } ) ) satisfies { error ?: ArrayBuffer } ;
229
+ if ( data ) {
230
+ throw new Error ( "parseAs arrayBuffer: error" ) ;
231
+ }
232
+ expect ( error . byteLength ) . toBe ( "{}" . length ) ;
233
+ } ) ;
234
+
235
+ test ( "blob" , async ( ) => {
236
+ const { data, error } = ( await client . GET ( "/resources" , {
237
+ parseAs : "blob" ,
238
+ } ) ) satisfies { error ?: Blob } ;
239
+ if ( data ) {
240
+ throw new Error ( "parseAs blob: error" ) ;
241
+ }
242
+ expect ( error . constructor . name ) . toBe ( "Blob" ) ;
243
+ } ) ;
244
+
245
+ test ( "stream" , async ( ) => {
246
+ const { error } = ( await client . GET ( "/resources" , {
247
+ parseAs : "stream" ,
248
+ } ) ) satisfies { error ?: ReadableStream < Uint8Array > | null } ;
249
+ if ( ! error ) {
250
+ throw new Error ( "parseAs stream: error" ) ;
251
+ }
252
+
253
+ expect ( error ) . toBeInstanceOf ( ReadableStream ) ;
254
+ const reader = error . getReader ( ) ;
255
+ const result = await reader . read ( ) ;
256
+ expect ( result . value ?. length ) . toBe ( 2 ) ;
257
+ } ) ;
258
+
259
+ test ( "use the selected content" , async ( ) => {
260
+ const client = createObservedClient < paths , "application/ld+json" > ( { } , async ( ) =>
261
+ Response . json ( { bar : "bar" } , { status : 500 } ) ,
262
+ ) ;
263
+ const { error } = await client . GET ( "/media-multiple" , {
264
+ headers : { Accept : "application/ld+json" } ,
265
+ } ) ;
266
+ if ( error ) {
267
+ assertType < { bar : string } > ( error ) ;
268
+ }
269
+ } ) ;
270
+ } ) ;
203
271
} ) ;
0 commit comments