@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
107 lines • 5.53 kB
JavaScript
;
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