UNPKG

@ledgerhq/live-common

Version:
107 lines 5.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const cryptoassets_1 = require("@ledgerhq/cryptoassets"); const account_1 = require("../../mock/account"); const getAccountTuplesForCurrency_1 = require("../getAccountTuplesForCurrency"); function* accountGenerator(currency) { let id = 0; while (true) { id += 1; yield (0, account_1.genAccount)(`mocked-account-${id}`, { currency, operationsSize: 0 }); } } const getAccountCreator = (currencyId) => { const generator = accountGenerator((0, cryptoassets_1.getCryptoCurrencyById)(currencyId)); return () => generator.next().value; }; describe("getAccountTuplesForCurrency", () => { const getEthAccount = getAccountCreator("ethereum"); const getBtcAccount = getAccountCreator("bitcoin"); const getPolkadotAccount = getAccountCreator("polkadot"); const getCosmosAccount = getAccountCreator("cosmos"); describe("CryptoCurrency", () => { test("returns all accounts associated to the CryptoCurrency", () => { const ethCurrency = (0, cryptoassets_1.getCryptoCurrencyById)("ethereum"); const ethAccounts = [getEthAccount(), getEthAccount()]; const allAccounts = [ getCosmosAccount(), ...ethAccounts, getBtcAccount(), getPolkadotAccount(), ]; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(ethCurrency, allAccounts); expect(results).toHaveLength(2); results.forEach((result, index) => { expect(result.account).toEqual(ethAccounts[index]); expect(result.subAccount).toBeNull(); }); }); test("returns an empty array if the CryptoCurrency passed has no associated account", () => { const ethCurrency = (0, cryptoassets_1.getCryptoCurrencyById)("ethereum"); const allAccounts = [getCosmosAccount(), getBtcAccount(), getPolkadotAccount()]; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(ethCurrency, allAccounts); expect(results).toHaveLength(0); }); test("filters based on the accountId map", () => { const ethCurrency = (0, cryptoassets_1.getCryptoCurrencyById)("ethereum"); const ethAccounts = [getEthAccount(), getEthAccount(), getEthAccount(), getEthAccount()]; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(ethCurrency, ethAccounts, new Map([[ethAccounts[0].id, true]])); expect(results).toHaveLength(1); }); }); describe("TokenCurrency", () => { const token = (0, cryptoassets_1.findTokenById)("ethereum/erc20/aave"); if (!token) throw new Error("AAVE token not found"); const aaveToken = token; test("returns correct parent accounts including a new subAccount when a TokenCurrency is provided", () => { const ethAccounts = [ { ...getEthAccount(), subAccounts: [] }, { ...getEthAccount(), subAccounts: [] }, ]; const allAccounts = [ getCosmosAccount(), ...ethAccounts, getBtcAccount(), getPolkadotAccount(), ]; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(aaveToken, allAccounts); expect(results).toHaveLength(ethAccounts.length); results.forEach((result, index) => { expect(result.account).toEqual(ethAccounts[index]); expect(result.subAccount.token).toEqual(aaveToken); }); }); test("returns correct parent accounts including already existing subAccounts when a TokenCurrency is provided", () => { const ethAccounts = [{ ...getEthAccount(), subAccounts: [aaveToken] }]; const allAccounts = [ getCosmosAccount(), ...ethAccounts, getBtcAccount(), getPolkadotAccount(), ]; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(aaveToken, allAccounts); expect(results).toHaveLength(ethAccounts.length); results.forEach((result, index) => { expect(result.account).toEqual(ethAccounts[index]); expect(result.subAccount.token).toEqual(aaveToken); }); }); test("returns an empty array when a TokenCurrency is provided but the accounts list is empty", () => { const allAccounts = []; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(aaveToken, allAccounts); expect(results).toHaveLength(0); }); test("does not filter based on the accountId map", () => { const aaveAccounts = [ { ...getEthAccount(), subAccounts: [aaveToken] }, { ...getEthAccount(), subAccounts: [aaveToken] }, { ...getEthAccount(), subAccounts: [aaveToken] }, { ...getEthAccount(), subAccounts: [aaveToken] }, ]; const results = (0, getAccountTuplesForCurrency_1.getAccountTuplesForCurrency)(aaveToken, aaveAccounts, new Map([[aaveAccounts[0].id, true]])); expect(results).toHaveLength(4); }); }); }); //# sourceMappingURL=getAccountTuplesForCurrency.test.js.map