1
1
import nock from 'nock' ;
2
2
import { NetworksChainId } from '../network/NetworkController' ;
3
- import { fetchTokenList , fetchTokenMetadata } from './token-service' ;
3
+ import {
4
+ fetchTokenList ,
5
+ fetchTokenMetadata ,
6
+ FETCH_TOKEN_METADATA_ERROR ,
7
+ } from './token-service' ;
4
8
5
9
const TOKEN_END_POINT_API = 'https://token-api.metaswap.codefi.network' ;
6
10
@@ -233,7 +237,7 @@ describe('Token service', () => {
233
237
expect ( token ) . toStrictEqual ( sampleToken ) ;
234
238
} ) ;
235
239
236
- it ( 'should return undefined if the fetch is aborted' , async ( ) => {
240
+ it ( 'should throw error if the fetch is aborted' , async ( ) => {
237
241
const abortController = new AbortController ( ) ;
238
242
nock ( TOKEN_END_POINT_API )
239
243
. get ( `/tokens/${ NetworksChainId . mainnet } ` )
@@ -242,49 +246,49 @@ describe('Token service', () => {
242
246
. reply ( 200 , sampleTokenList )
243
247
. persist ( ) ;
244
248
245
- const fetchPromise = fetchTokenMetadata (
246
- NetworksChainId . mainnet ,
247
- '0x514910771af9ca656af840dff83e8264ecf986ca' ,
248
- abortController . signal ,
249
- ) ;
250
- abortController . abort ( ) ;
251
-
252
- expect ( await fetchPromise ) . toBeUndefined ( ) ;
249
+ await expect ( async ( ) => {
250
+ await fetchTokenMetadata (
251
+ NetworksChainId . mainnet ,
252
+ '0x514910771af9ca656af840dff83e8264ecf986ca' ,
253
+ abortController . signal ,
254
+ ) ;
255
+ abortController . abort ( ) ;
256
+ } ) . rejects . toThrow ( FETCH_TOKEN_METADATA_ERROR ) ;
253
257
} ) ;
254
258
255
- it ( 'should return undefined if the fetch fails with a network error' , async ( ) => {
259
+ it ( 'should throw error if the fetch fails with a network error' , async ( ) => {
256
260
const { signal } = new AbortController ( ) ;
257
261
nock ( TOKEN_END_POINT_API )
258
262
. get ( `/tokens/${ NetworksChainId . mainnet } ` )
259
263
. replyWithError ( 'Example network error' )
260
264
. persist ( ) ;
261
265
262
- const result = await fetchTokenMetadata (
263
- NetworksChainId . mainnet ,
264
- '0x514910771af9ca656af840dff83e8264ecf986ca' ,
265
- signal ,
266
- ) ;
267
-
268
- expect ( result ) . toBeUndefined ( ) ;
266
+ await expect ( async ( ) => {
267
+ await fetchTokenMetadata (
268
+ NetworksChainId . mainnet ,
269
+ '0x514910771af9ca656af840dff83e8264ecf986ca' ,
270
+ signal ,
271
+ ) ;
272
+ } ) . rejects . toThrow ( FETCH_TOKEN_METADATA_ERROR ) ;
269
273
} ) ;
270
274
271
- it ( 'should return undefined if the fetch fails with an unsuccessful status code' , async ( ) => {
275
+ it ( 'should throw error if the fetch fails with an unsuccessful status code' , async ( ) => {
272
276
const { signal } = new AbortController ( ) ;
273
277
nock ( TOKEN_END_POINT_API )
274
278
. get ( `/tokens/${ NetworksChainId . mainnet } ` )
275
279
. reply ( 500 )
276
280
. persist ( ) ;
277
281
278
- const result = await fetchTokenMetadata (
279
- NetworksChainId . mainnet ,
280
- '0x514910771af9ca656af840dff83e8264ecf986ca' ,
281
- signal ,
282
- ) ;
283
-
284
- expect ( result ) . toBeUndefined ( ) ;
282
+ await expect ( async ( ) => {
283
+ await fetchTokenMetadata (
284
+ NetworksChainId . mainnet ,
285
+ '0x514910771af9ca656af840dff83e8264ecf986ca' ,
286
+ signal ,
287
+ ) ;
288
+ } ) . rejects . toThrow ( FETCH_TOKEN_METADATA_ERROR ) ;
285
289
} ) ;
286
290
287
- it ( 'should return undefined if the fetch fails with a timeout' , async ( ) => {
291
+ it ( 'should throw error if the fetch fails with a timeout' , async ( ) => {
288
292
const { signal } = new AbortController ( ) ;
289
293
nock ( TOKEN_END_POINT_API )
290
294
. get ( `/tokens/${ NetworksChainId . mainnet } ` )
@@ -293,14 +297,26 @@ describe('Token service', () => {
293
297
. reply ( 200 , sampleTokenList )
294
298
. persist ( ) ;
295
299
296
- const result = await fetchTokenMetadata (
297
- NetworksChainId . mainnet ,
298
- '0x514910771af9ca656af840dff83e8264ecf986ca' ,
299
- signal ,
300
- { timeout : ONE_MILLISECOND } ,
301
- ) ;
302
-
303
- expect ( result ) . toBeUndefined ( ) ;
300
+ await expect ( async ( ) => {
301
+ await fetchTokenMetadata (
302
+ NetworksChainId . mainnet ,
303
+ '0x514910771af9ca656af840dff83e8264ecf986ca' ,
304
+ signal ,
305
+ { timeout : ONE_MILLISECOND } ,
306
+ ) ;
307
+ } ) . rejects . toThrow ( FETCH_TOKEN_METADATA_ERROR ) ;
304
308
} ) ;
305
309
} ) ;
310
+
311
+ it ( 'should call the tokens api and return undefined' , async ( ) => {
312
+ const { signal } = new AbortController ( ) ;
313
+ nock ( TOKEN_END_POINT_API )
314
+ . get ( `/tokens/${ NetworksChainId . mainnet } ` )
315
+ . reply ( 404 , undefined )
316
+ . persist ( ) ;
317
+
318
+ const tokens = await fetchTokenList ( NetworksChainId . mainnet , signal ) ;
319
+
320
+ expect ( tokens ) . toBeUndefined ( ) ;
321
+ } ) ;
306
322
} ) ;
0 commit comments