@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
54 lines (45 loc) • 1.49 kB
text/typescript
/**
* @jest-environment jsdom
*/
import { renderHook } from "@testing-library/react";
import { usePageState } from "./usePageState";
import { SwapTransactionType } from "../types";
describe("usePageState", () => {
it("returns the correct page state", () => {
const swapTransaction = {
swap: {
from: {
amount: {
isZero: () => true,
},
},
rates: {
status: "success",
},
isMaxLoading: false,
},
} as SwapTransactionType;
let swapError: { message: string } | undefined = undefined;
const { result, rerender } = renderHook(() => usePageState(swapTransaction, swapError));
// Initial render
expect(result.current).toBe("initial");
// Rerender with rates loading
swapTransaction.swap.rates.status = "loading";
rerender();
expect(result.current).toBe("loading");
// Rerender with rates error
swapTransaction.swap.rates.status = "error";
rerender();
expect(result.current).toBe("initial");
// Rerender with empty error message and data loaded
swapTransaction.swap.rates.status = "success";
swapError = { message: "" };
rerender();
expect(result.current).toBe("empty");
// Rerender with from field is zero and data loaded
swapError = undefined;
if (swapTransaction.swap.from.amount) swapTransaction.swap.from.amount.isZero = () => true;
rerender();
expect(result.current).toBe("initial");
});
});