1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- /* eslint-disable max-len */
3
- import { BlockFrostAPI , Responses } from '@blockfrost/blockfrost-js' ;
4
- import { BlockfrostNetworkInfoProvider } from '../../../src' ;
1
+ import { BlockfrostClient , BlockfrostNetworkInfoProvider } from '../../src' ;
5
2
import { Cardano , EraSummary , Milliseconds , StakeSummary , SupplySummary } from '@cardano-sdk/core' ;
3
+ import { Responses } from '@blockfrost/blockfrost-js' ;
6
4
import { logger } from '@cardano-sdk/util-dev' ;
5
+ import { mockResponses } from '../AssetInfoProvider/util' ;
7
6
8
7
jest . mock ( '@blockfrost/blockfrost-js' ) ;
9
8
@@ -38,74 +37,36 @@ const mockedNetworkResponse = {
38
37
}
39
38
} as Responses [ 'network' ] ;
40
39
41
- const mockedError = {
42
- error : 'Forbidden' ,
43
- message : 'Invalid project token.' ,
44
- status_code : 403 ,
45
- url : 'test'
46
- } ;
40
+ describe ( 'BlockfrostNetworkInfoProvider' , ( ) => {
41
+ let request : jest . Mock ;
42
+ let provider : BlockfrostNetworkInfoProvider ;
47
43
48
- const mockedErrorMethod = jest . fn ( ) . mockRejectedValue ( mockedError ) ;
49
- // const mockedProviderError = new ProviderError(ProviderFailure.Unknown, {}, 'testing');
50
- const apiKey = 'someapikey' ;
51
- const apiUrl = 'http://testnet.endpoint' ;
52
-
53
- describe ( 'blockfrostNetworkInfoProvider' , ( ) => {
54
44
beforeEach ( async ( ) => {
55
- mockedErrorMethod . mockClear ( ) ;
45
+ request = jest . fn ( ) ;
46
+ const client = { request } as unknown as BlockfrostClient ;
47
+ provider = new BlockfrostNetworkInfoProvider ( client , logger ) ;
56
48
} ) ;
57
- test ( 'stake' , async ( ) => {
58
- BlockFrostAPI . prototype . network = jest . fn ( ) . mockResolvedValue ( mockedNetworkResponse ) ;
59
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
60
49
61
- const blockfrost = new BlockFrostAPI ( { network : 'preprod ', projectId : apiKey } ) ;
62
- const client = new BlockfrostNetworkInfoProvider ( { blockfrost , logger } ) ;
63
- const response = await client . stake ( ) ;
50
+ test ( 'stake ', async ( ) => {
51
+ mockResponses ( request , [ [ 'network' , mockedNetworkResponse ] ] ) ;
52
+ const response = await provider . stake ( ) ;
64
53
65
54
expect ( response ) . toMatchObject < StakeSummary > ( {
66
55
active : 1_060_378_314_781_343n ,
67
56
live : 15_001_884_895_856_815n
68
57
} ) ;
69
58
} ) ;
70
59
71
- test ( 'stake throws' , async ( ) => {
72
- BlockFrostAPI . prototype . network = mockedErrorMethod ;
73
-
74
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
75
-
76
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
77
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
78
-
79
- await expect ( ( ) => provider . stake ( ) ) . rejects . toThrow ( ) ;
80
- expect ( mockedErrorMethod ) . toBeCalledTimes ( 1 ) ;
81
- } ) ;
82
-
83
60
test ( 'lovelaceSupply' , async ( ) => {
84
- BlockFrostAPI . prototype . network = jest . fn ( ) . mockResolvedValue ( mockedNetworkResponse ) ;
85
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
86
-
87
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
88
- const client = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
89
- const response = await client . lovelaceSupply ( ) ;
61
+ mockResponses ( request , [ [ 'network' , mockedNetworkResponse ] ] ) ;
62
+ const response = await provider . lovelaceSupply ( ) ;
90
63
91
64
expect ( response ) . toMatchObject < SupplySummary > ( {
92
65
circulating : 42_064_399_450_423_723n ,
93
66
total : 40_267_211_394_073_980n
94
67
} ) ;
95
68
} ) ;
96
69
97
- test ( 'lovelace throws' , async ( ) => {
98
- BlockFrostAPI . prototype . network = mockedErrorMethod ;
99
-
100
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
101
-
102
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
103
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
104
-
105
- await expect ( ( ) => provider . lovelaceSupply ( ) ) . rejects . toThrow ( ) ;
106
- expect ( mockedErrorMethod ) . toBeCalledTimes ( 1 ) ;
107
- } ) ;
108
-
109
70
test ( 'eraSummaries' , async ( ) => {
110
71
const genesis = {
111
72
activeSlotsCoefficient : 0.05 ,
@@ -286,30 +247,13 @@ describe('blockfrostNetworkInfoProvider', () => {
286
247
}
287
248
] ;
288
249
289
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
290
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
291
-
250
+ mockResponses ( request , [ [ 'network/eras' , blockfrostResponseBody ] ] ) ;
251
+ // mockResponses(request, [['genesis', genesis]])
292
252
provider . genesisParameters = jest . fn ( ) . mockResolvedValue ( genesis ) ;
293
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
294
- // @ts -ignore
295
- provider . fetchEraSummaries = jest . fn ( ) . mockResolvedValue ( blockfrostResponseBody ) ;
296
-
297
253
const response = await provider . eraSummaries ( ) ;
298
-
299
254
expect ( response ) . toMatchObject < EraSummary [ ] > ( expected ) ;
300
255
} ) ;
301
256
302
- test ( 'eraSummaries throws' , async ( ) => {
303
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
304
-
305
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
306
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
307
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
308
- // @ts -ignore
309
- provider . fetchEraSummaries = mockedErrorMethod ;
310
- await expect ( ( ) => provider . eraSummaries ( ) ) . rejects . toThrow ( ) ;
311
- } ) ;
312
-
313
257
test ( 'genesisParameters' , async ( ) => {
314
258
const mockedResponse = {
315
259
active_slots_coefficient : 0.05 ,
@@ -323,10 +267,7 @@ describe('blockfrostNetworkInfoProvider', () => {
323
267
system_start : 1_506_203_091 ,
324
268
update_quorum : 5
325
269
} ;
326
- BlockFrostAPI . prototype . genesis = jest . fn ( ) . mockResolvedValue ( mockedResponse ) ;
327
-
328
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
329
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
270
+ mockResponses ( request , [ [ 'genesis' , mockedResponse ] ] ) ;
330
271
const response = await provider . genesisParameters ( ) ;
331
272
332
273
expect ( response ) . toMatchObject ( {
@@ -343,18 +284,6 @@ describe('blockfrostNetworkInfoProvider', () => {
343
284
} as Cardano . CompactGenesis ) ;
344
285
} ) ;
345
286
346
- test ( 'genesisParameters throws' , async ( ) => {
347
- BlockFrostAPI . prototype . genesis = mockedErrorMethod ;
348
-
349
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
350
-
351
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
352
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
353
-
354
- await expect ( ( ) => provider . genesisParameters ( ) ) . rejects . toThrow ( ) ;
355
- expect ( mockedErrorMethod ) . toBeCalledTimes ( 1 ) ;
356
- } ) ;
357
-
358
287
test ( 'protocolParameters' , async ( ) => {
359
288
const mockedResponse = {
360
289
a0 : 0.3 ,
@@ -383,12 +312,7 @@ describe('blockfrostNetworkInfoProvider', () => {
383
312
rho : 0.003 ,
384
313
tau : 0.2
385
314
} ;
386
- BlockFrostAPI . prototype . epochsLatestParameters = jest . fn ( ) . mockResolvedValue ( mockedResponse ) as any ;
387
-
388
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
389
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
390
-
391
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
315
+ mockResponses ( request , [ [ 'epochs/latest/parameters' , mockedResponse ] ] ) ;
392
316
const response = await provider . protocolParameters ( ) ;
393
317
394
318
expect ( response ) . toMatchObject ( {
@@ -405,23 +329,8 @@ describe('blockfrostNetworkInfoProvider', () => {
405
329
} ) ;
406
330
} ) ;
407
331
408
- test ( 'protocolParameters throws' , async ( ) => {
409
- BlockFrostAPI . prototype . epochsLatestParameters = mockedErrorMethod ;
410
-
411
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
412
-
413
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
414
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
415
-
416
- await expect ( ( ) => provider . protocolParameters ( ) ) . rejects . toThrow ( ) ;
417
- expect ( mockedErrorMethod ) . toBeCalledTimes ( 1 ) ;
418
- } ) ;
419
-
420
332
test ( 'ledgerTip' , async ( ) => {
421
- BlockFrostAPI . prototype . blocksLatest = jest . fn ( ) . mockResolvedValue ( blockResponse ) ;
422
-
423
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
424
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
333
+ mockResponses ( request , [ [ 'blocks/latest' , blockResponse ] ] ) ;
425
334
const response = await provider . ledgerTip ( ) ;
426
335
427
336
expect ( response ) . toMatchObject ( {
@@ -430,16 +339,4 @@ describe('blockfrostNetworkInfoProvider', () => {
430
339
slot : 37_767_194
431
340
} ) ;
432
341
} ) ;
433
-
434
- test ( 'ledgerTip throws' , async ( ) => {
435
- BlockFrostAPI . prototype . blocksLatest = mockedErrorMethod ;
436
-
437
- BlockFrostAPI . prototype . apiUrl = apiUrl ;
438
-
439
- const blockfrost = new BlockFrostAPI ( { network : 'preprod' , projectId : apiKey } ) ;
440
- const provider = new BlockfrostNetworkInfoProvider ( { blockfrost, logger } ) ;
441
-
442
- await expect ( ( ) => provider . ledgerTip ( ) ) . rejects . toThrow ( ) ;
443
- expect ( mockedErrorMethod ) . toBeCalledTimes ( 1 ) ;
444
- } ) ;
445
342
} ) ;
0 commit comments