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' ;
52import { Cardano , EraSummary , Milliseconds , StakeSummary , SupplySummary } from '@cardano-sdk/core' ;
3+ import { Responses } from '@blockfrost/blockfrost-js' ;
64import { logger } from '@cardano-sdk/util-dev' ;
5+ import { mockResponses } from '../AssetInfoProvider/util' ;
76
87jest . mock ( '@blockfrost/blockfrost-js' ) ;
98
@@ -38,74 +37,36 @@ const mockedNetworkResponse = {
3837 }
3938} as Responses [ 'network' ] ;
4039
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 ;
4743
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' , ( ) => {
5444 beforeEach ( async ( ) => {
55- mockedErrorMethod . mockClear ( ) ;
45+ request = jest . fn ( ) ;
46+ const client = { request } as unknown as BlockfrostClient ;
47+ provider = new BlockfrostNetworkInfoProvider ( client , logger ) ;
5648 } ) ;
57- test ( 'stake' , async ( ) => {
58- BlockFrostAPI . prototype . network = jest . fn ( ) . mockResolvedValue ( mockedNetworkResponse ) ;
59- BlockFrostAPI . prototype . apiUrl = apiUrl ;
6049
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 ( ) ;
6453
6554 expect ( response ) . toMatchObject < StakeSummary > ( {
6655 active : 1_060_378_314_781_343n ,
6756 live : 15_001_884_895_856_815n
6857 } ) ;
6958 } ) ;
7059
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-
8360 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 ( ) ;
9063
9164 expect ( response ) . toMatchObject < SupplySummary > ( {
9265 circulating : 42_064_399_450_423_723n ,
9366 total : 40_267_211_394_073_980n
9467 } ) ;
9568 } ) ;
9669
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-
10970 test ( 'eraSummaries' , async ( ) => {
11071 const genesis = {
11172 activeSlotsCoefficient : 0.05 ,
@@ -286,30 +247,13 @@ describe('blockfrostNetworkInfoProvider', () => {
286247 }
287248 ] ;
288249
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]])
292252 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-
297253 const response = await provider . eraSummaries ( ) ;
298-
299254 expect ( response ) . toMatchObject < EraSummary [ ] > ( expected ) ;
300255 } ) ;
301256
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-
313257 test ( 'genesisParameters' , async ( ) => {
314258 const mockedResponse = {
315259 active_slots_coefficient : 0.05 ,
@@ -323,10 +267,7 @@ describe('blockfrostNetworkInfoProvider', () => {
323267 system_start : 1_506_203_091 ,
324268 update_quorum : 5
325269 } ;
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 ] ] ) ;
330271 const response = await provider . genesisParameters ( ) ;
331272
332273 expect ( response ) . toMatchObject ( {
@@ -343,18 +284,6 @@ describe('blockfrostNetworkInfoProvider', () => {
343284 } as Cardano . CompactGenesis ) ;
344285 } ) ;
345286
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-
358287 test ( 'protocolParameters' , async ( ) => {
359288 const mockedResponse = {
360289 a0 : 0.3 ,
@@ -383,12 +312,7 @@ describe('blockfrostNetworkInfoProvider', () => {
383312 rho : 0.003 ,
384313 tau : 0.2
385314 } ;
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 ] ] ) ;
392316 const response = await provider . protocolParameters ( ) ;
393317
394318 expect ( response ) . toMatchObject ( {
@@ -405,23 +329,8 @@ describe('blockfrostNetworkInfoProvider', () => {
405329 } ) ;
406330 } ) ;
407331
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-
420332 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 ] ] ) ;
425334 const response = await provider . ledgerTip ( ) ;
426335
427336 expect ( response ) . toMatchObject ( {
@@ -430,16 +339,4 @@ describe('blockfrostNetworkInfoProvider', () => {
430339 slot : 37_767_194
431340 } ) ;
432341 } ) ;
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- } ) ;
445342} ) ;
0 commit comments