UNPKG

@yoroi/banxa

Version:

The Banxa integration package of Yoroi SDK

111 lines 4.56 kB
import { BanxaUnknownError, BanxaValidationError } from '../adapters/errors'; import { banxaModuleMaker } from './module'; describe('banxaModuleMaker', () => { test('should generate a correct referral link with all parameters', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: true }); const fullUrl = 'https://checkout.banxa.com/?' + 'orderType=sell' + '&' + 'fiatType=USD' + '&' + 'fiatAmount=500' + '&' + 'coinType=ADA' + '&' + 'coinAmount=800' + '&' + 'blockchain=ADA' + '&' + 'walletAddress=addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf' + '&' + 'walletAddressTag=tag'; const url = banxa.createReferralUrl({ orderType: 'sell', fiatType: 'USD', fiatAmount: 500, coinType: 'ADA', coinAmount: 800, blockchain: 'ADA', walletAddress: 'addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf', walletAddressTag: 'tag' }); expect(url.toString()).toBe(fullUrl); }); test('should generate a correct referral link with mandatory parameters only', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: true }); const fullUrl = 'https://checkout.banxa.com/?' + 'fiatType=USD' + '&' + 'coinType=ADA' + '&' + 'walletAddress=addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf'; const url = banxa.createReferralUrl({ fiatType: 'USD', coinType: 'ADA', walletAddress: 'addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf' }); expect(url.toString()).toBe(fullUrl); }); test('should generate a correct sandbox referral link', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: false }); const fullUrl = 'https://checkout.banxa-sandbox.com/?' + 'fiatType=USD' + '&' + 'coinType=ADA' + '&' + 'walletAddress=addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf'; const url = banxa.createReferralUrl({ fiatType: 'USD', coinType: 'ADA', walletAddress: 'addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf' }); expect(url.toString()).toBe(fullUrl); }); test('should not include undefined optional parameters in the referral link', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: true }); const url = banxa.createReferralUrl({ fiatType: 'USD', coinType: 'ADA', walletAddress: 'addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf' }); const urlString = url.toString(); expect(urlString).not.toContain('sellMode'); expect(urlString).not.toContain('fiatAmount'); expect(urlString).not.toContain('coinAmount'); expect(urlString).not.toContain('blockchain'); expect(urlString).not.toContain('walletAddressTag'); }); test('should throw an BanxaValidationError when schema is invalid', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: true }); const invalidQueries = { fiatType: 'ABC', // Invalid fiatType coinType: 'ADA', walletAddress: 'addr1q9v8dvht2mv847gwarl7r4p49yzys8r7zlep7c8t2hqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquvupf' }; expect(() => { banxa.createReferralUrl(invalidQueries); }).toThrow(BanxaValidationError); }); test('should throw an error when ADA walletAddress is not a possible Cardano address', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: true }); const invalidQueries = { fiatType: 'USD', coinType: 'ADA', walletAddress: 'invalid-cardano-address' }; expect(() => { banxa.createReferralUrl(invalidQueries); }).toThrow(BanxaValidationError); }); test('should throw BanxaUnknownError if is not a BanxaValidationError', () => { const banxa = banxaModuleMaker({ partner: 'checkout', isProduction: true }, { zodErrorTranslator: () => {} }); const invalidQueries = { fiatType: 'XXX', coinType: 'XXX', walletAddress: 'XXX' }; expect(() => { banxa.createReferralUrl(invalidQueries); }).toThrow(BanxaUnknownError); }); }); //# sourceMappingURL=module.test.js.map