UNPKG

@yoroi/claim

Version:

The Claim (proof-of-onboarding) package of Yoroi SDK

117 lines (116 loc) 5.23 kB
"use strict"; var _types = require("@yoroi/types"); var _portfolio = require("@yoroi/portfolio"); var _transformers = require("./transformers"); var _apiFaucet = require("./api-faucet.mocks"); var _manager = require("./manager.mocks"); var _common = require("@yoroi/common"); const tokenManagerMock = (0, _portfolio.createTokenManagerMock)(); describe('asClaimApiError', () => { afterEach(() => { jest.clearAllMocks(); }); it('should throw specific claim API error when status matches', () => { const error = { status: _types.Api.HttpStatusCode.BadRequest, message: 'Bad Request', responseData: {} }; expect(() => (0, _transformers.asClaimApiError)(error)).toThrow(_types.Claim.Api.Errors.InvalidRequest); }); it('should throw generic API error when status does not match', () => { const error = { status: _types.Api.HttpStatusCode.Forbidden, message: 'Forbidden', responseData: {} }; expect(() => (0, _transformers.asClaimApiError)(error)).toThrow(_types.Api.Errors.Forbidden); }); }); describe('asClaimToken', () => { const primaryTokenInfo = _portfolio.tokenMocks.primaryETH.info; beforeEach(() => { jest.clearAllMocks(); }); it('should return a "claimed" status with correct token amounts', async () => { const claimResponse = _apiFaucet.claimFaucetResponses.claimTokens.success.claimed; tokenManagerMock.sync.mockResolvedValue(new Map([[_portfolio.tokenMocks.nftCryptoKitty.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.nftCryptoKitty.info)], [_portfolio.tokenMocks.rnftWhatever.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.rnftWhatever.info)]])); const result = await (0, _transformers.asClaimToken)(claimResponse, primaryTokenInfo, tokenManagerMock); expect(result).toEqual({ status: 'done', amounts: [{ info: primaryTokenInfo, quantity: BigInt(2000000) }, { info: _portfolio.tokenMocks.nftCryptoKitty.info, quantity: BigInt(44) }, { info: _portfolio.tokenMocks.rnftWhatever.info, quantity: BigInt(410) }], txHash: 'tx_hash' }); }); it('should return a "queued" status with correct token amounts', async () => { const claimResponse = _apiFaucet.claimFaucetResponses.claimTokens.success.queued; tokenManagerMock.sync.mockResolvedValue(new Map([[_portfolio.tokenMocks.nftCryptoKitty.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.nftCryptoKitty.info)], [_portfolio.tokenMocks.rnftWhatever.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.rnftWhatever.info)]])); const result = await (0, _transformers.asClaimToken)(claimResponse, primaryTokenInfo, tokenManagerMock); expect(result).toEqual(_manager.claimApiMockResponses.claimTokens.processing); }); it('should return an "accepted" status with correct token amounts', async () => { const claimResponse = _apiFaucet.claimFaucetResponses.claimTokens.success.accepted; tokenManagerMock.sync.mockResolvedValue(new Map([[_portfolio.tokenMocks.nftCryptoKitty.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.nftCryptoKitty.info)], [_portfolio.tokenMocks.rnftWhatever.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.rnftWhatever.info)]])); const result = await (0, _transformers.asClaimToken)(claimResponse, primaryTokenInfo, tokenManagerMock); expect(result).toEqual(_manager.claimApiMockResponses.claimTokens.accepted); }); it('should filter out invalid tokens or not requested tokens', async () => { const claimResponse = { ..._apiFaucet.claimFaucetResponses.claimTokens.success.accepted, lovelaces: null, tokens: { 'invalid.id': null, 'dead.': null, ..._apiFaucet.claimFaucetResponses.claimTokens.success.accepted.tokens } }; tokenManagerMock.sync.mockResolvedValue(new Map([[_portfolio.tokenMocks.nftCryptoKitty.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.nftCryptoKitty.info)], [_portfolio.tokenMocks.rnftWhatever.info.id, (0, _common.cacheRecordMaker)({ expires: Date.now() + 3_600_000, hash: 'hash3' }, _portfolio.tokenMocks.rnftWhatever.info)], ['invalid.', undefined], ['dead.', { record: _portfolio.tokenMocks.rnftWhatever.info }]])); const result = await (0, _transformers.asClaimToken)(claimResponse, primaryTokenInfo, tokenManagerMock); expect(result).toEqual({ status: 'accepted', amounts: [{ info: _portfolio.tokenMocks.nftCryptoKitty.info, quantity: BigInt(44) }, { info: _portfolio.tokenMocks.rnftWhatever.info, quantity: BigInt(410) }] }); }); }); //# sourceMappingURL=transformers.test.js.map