@@ -66,8 +66,8 @@ describe('BlockfrostAssetProvider', () => {
66
66
assetId : mockedAssetId ,
67
67
decimals : 6 ,
68
68
desc : 'The Nut Coin' ,
69
- icon : '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' ,
70
- name : 'nutcoin' ,
69
+ icon : mockedAssetResponse . onchain_metadata ?. image as string ,
70
+ name : mockedAssetResponse . onchain_metadata ?. name as string ,
71
71
ticker : 'nutc' ,
72
72
url : 'https://www.stakenuts.com/'
73
73
}
@@ -214,5 +214,97 @@ describe('BlockfrostAssetProvider', () => {
214
214
215
215
expect ( response . nftMetadata ! . version ) . toBe ( '2.0' ) ;
216
216
} ) ;
217
+
218
+ describe ( 'onchain_metadata undefined values' , ( ) => {
219
+ const mockedAssetIdOnChainMetadata = Cardano . AssetId (
220
+ 'ecbe846aa1a535579d67f9480fa6173b64d7e239df0460eba36e3ad00014df1053617475726e'
221
+ ) ;
222
+
223
+ const baseResponse = {
224
+ asset : mockedAssetIdOnChainMetadata ,
225
+ asset_name : '0014df1053617475726e' ,
226
+ fingerprint : 'asset1lnu3hw2pjw8xfprg7722mh0yu2vfzvk8ta60h0' ,
227
+ initial_mint_tx_hash : 'dcdd8ed32a71523a8393caab9d657964e50648fe0277de77add22b839e6fdb88' ,
228
+ metadata : null ,
229
+ mint_or_burn_count : 1 ,
230
+ onchain_metadata : {
231
+ decimals : 6 ,
232
+ description :
233
+ 'Saturn is the governance token for the Saturn Swap protocol, a fast and simple decentralized exchange on the Cardano blockchain. https://saturnswap.io/' ,
234
+ logo : 'ipfs://Qmc2RWQxCmAaXn7YGZsXCcs2J5uwW8qQwYzmjh1gUiZBWA' ,
235
+ mediaType : '49696d6167652f706e67' ,
236
+ name : 'Saturn' ,
237
+ ticker : 'SATURN' ,
238
+ url : 'ipfs://Qmc2RWQxCmAaXn7YGZsXCcs2J5'
239
+ } ,
240
+ onchain_metadata_extra : 'd8799fff' ,
241
+ onchain_metadata_standard : 'CIP68v1' ,
242
+ policy_id : 'ecbe846aa1a535579d67f9480fa6173b64d7e239df0460eba36e3ad0' ,
243
+ quantity : '100000000000000'
244
+ } as Responses [ 'asset' ] ;
245
+
246
+ test ( 'handles undefined onchain_metadata.decimals' , async ( ) => {
247
+ const responseWithUndefinedDecimals = {
248
+ ...baseResponse ,
249
+ onchain_metadata : {
250
+ ...baseResponse . onchain_metadata ,
251
+ decimals : undefined
252
+ }
253
+ } ;
254
+
255
+ mockResponses ( request , [ [ `assets/${ mockedAssetIdOnChainMetadata } ` , responseWithUndefinedDecimals ] ] ) ;
256
+
257
+ const response = await provider . getAsset ( {
258
+ assetId : mockedAssetIdOnChainMetadata ,
259
+ extraData : { tokenMetadata : true }
260
+ } ) ;
261
+
262
+ expect ( response . tokenMetadata ! . decimals ) . toBeUndefined ( ) ;
263
+ expect ( response . tokenMetadata ! . ticker ) . toBe ( 'SATURN' ) ;
264
+ expect ( response . tokenMetadata ! . url ) . toBe ( 'ipfs://Qmc2RWQxCmAaXn7YGZsXCcs2J5' ) ;
265
+ } ) ;
266
+
267
+ test ( 'handles undefined onchain_metadata.ticker' , async ( ) => {
268
+ const responseWithUndefinedTicker = {
269
+ ...baseResponse ,
270
+ onchain_metadata : {
271
+ ...baseResponse . onchain_metadata ,
272
+ ticker : undefined
273
+ }
274
+ } ;
275
+
276
+ mockResponses ( request , [ [ `assets/${ mockedAssetIdOnChainMetadata } ` , responseWithUndefinedTicker ] ] ) ;
277
+
278
+ const response = await provider . getAsset ( {
279
+ assetId : mockedAssetIdOnChainMetadata ,
280
+ extraData : { tokenMetadata : true }
281
+ } ) ;
282
+
283
+ expect ( response . tokenMetadata ! . decimals ) . toBe ( 6 ) ;
284
+ expect ( response . tokenMetadata ! . ticker ) . toBeUndefined ( ) ;
285
+ expect ( response . tokenMetadata ! . url ) . toBe ( 'ipfs://Qmc2RWQxCmAaXn7YGZsXCcs2J5' ) ;
286
+ } ) ;
287
+
288
+ test ( 'handles undefined onchain_metadata.url' , async ( ) => {
289
+ const responseWithUndefinedUrl = {
290
+ ...baseResponse ,
291
+ onchain_metadata : {
292
+ ...baseResponse . onchain_metadata ,
293
+ url : undefined
294
+ }
295
+ } ;
296
+
297
+ mockResponses ( request , [ [ `assets/${ mockedAssetIdOnChainMetadata } ` , responseWithUndefinedUrl ] ] ) ;
298
+
299
+ const response = await provider . getAsset ( {
300
+ assetId : mockedAssetIdOnChainMetadata ,
301
+ extraData : { tokenMetadata : true }
302
+ } ) ;
303
+
304
+ expect ( response . tokenMetadata ! . decimals ) . toBe ( 6 ) ;
305
+ expect ( response . tokenMetadata ! . ticker ) . toBe ( 'SATURN' ) ;
306
+ expect ( response . tokenMetadata ! . url ) . toBeUndefined ( ) ;
307
+ } ) ;
308
+ } ) ;
217
309
} ) ;
218
310
} ) ;
0 commit comments