@ledgerhq/coin-algorand
Version:
Ledger Algorand Coin integration
78 lines (56 loc) • 2.17 kB
text/typescript
import { BigNumber } from "bignumber.js";
import { initAccount } from "./initAccount";
import type { AlgorandAccount } from "./types";
describe("initAccount", () => {
it("should initialize algorandResources with zero rewards", () => {
const account = {} as AlgorandAccount;
initAccount(account);
expect(account.algorandResources).not.toBeUndefined();
expect(account.algorandResources?.rewards).toBeInstanceOf(BigNumber);
expect(account.algorandResources?.rewards.toString()).toBe("0");
});
it("should set nbAssets to 0 when no subAccounts", () => {
const account = {} as AlgorandAccount;
initAccount(account);
expect(account.algorandResources?.nbAssets).toBe(0);
});
it("should set nbAssets to subAccounts length", () => {
const account = {
subAccounts: [{ id: "sub1" }, { id: "sub2" }, { id: "sub3" }],
} as unknown as AlgorandAccount;
initAccount(account);
expect(account.algorandResources?.nbAssets).toBe(3);
});
it("should handle empty subAccounts array", () => {
const account = {
subAccounts: [],
} as unknown as AlgorandAccount;
initAccount(account);
expect(account.algorandResources?.nbAssets).toBe(0);
});
it("should handle undefined subAccounts", () => {
const account = {
subAccounts: undefined,
} as AlgorandAccount;
initAccount(account);
expect(account.algorandResources?.nbAssets).toBe(0);
});
it("should overwrite existing algorandResources", () => {
const account = {
algorandResources: {
rewards: new BigNumber("1000000"),
nbAssets: 5,
},
subAccounts: [{ id: "sub1" }],
} as unknown as AlgorandAccount;
initAccount(account);
expect(account.algorandResources?.rewards.toString()).toBe("0");
expect(account.algorandResources?.nbAssets).toBe(1);
});
it("should handle account with many subAccounts", () => {
const subAccounts = Array.from({ length: 100 }, (_, i) => ({ id: `sub${i}` }));
const account = { subAccounts } as unknown as AlgorandAccount;
initAccount(account);
expect(account.algorandResources?.nbAssets).toBe(100);
});
});