@ledgerhq/coin-internet_computer
Version:
Ledger Internet Computer integration
45 lines (34 loc) • 1.75 kB
text/typescript
import { Account } from "@ledgerhq/types-live";
import { validateAddress } from "@zondax/ledger-live-icp/utils";
import BigNumber from "bignumber.js";
import { InvalidMemoICP } from "../errors";
import * as logicValidateMemo from "../logic/validateMemo";
import { Transaction } from "../types";
import { getTransactionStatus } from "./getTransactionStatus";
jest.mock("@zondax/ledger-live-icp/utils");
jest.mock("../logic/validateMemo");
describe("getTransactionStatus", () => {
const spiedValidateMemo = logicValidateMemo.validateMemo as jest.Mock;
const spiedValidateAddress = jest.mocked(validateAddress);
beforeEach(() => {
spiedValidateMemo.mockClear();
spiedValidateAddress.mockClear();
spiedValidateAddress.mockResolvedValue({ isValid: true } as never);
});
it("should not set error on transaction when memo is validated", async () => {
spiedValidateMemo.mockReturnValueOnce(true);
const account = {} as Account;
const transaction = { amount: BigNumber(0), memo: "random memo for unit test" } as Transaction;
const status = await getTransactionStatus(account, transaction);
expect(status.errors.transaction).not.toBeDefined();
expect(spiedValidateMemo).toHaveBeenCalledWith(transaction.memo);
});
it("should set error on transaction when memo is invalidated", async () => {
spiedValidateMemo.mockReturnValueOnce(false);
const account = {} as Account;
const transaction = { amount: BigNumber(0), memo: "random memo for unit test" } as Transaction;
const status = await getTransactionStatus(account, transaction);
expect(status.errors.transaction).toBeInstanceOf(InvalidMemoICP);
expect(spiedValidateMemo).toHaveBeenCalledWith(transaction.memo);
});
});