@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
92 lines (72 loc) • 3.06 kB
text/typescript
/**
* @jest-environment jsdom
*/
import { renderHook } from "@testing-library/react";
import { usePickDefaultCurrency } from "./usePickDefaultCurrency";
import { getCryptoCurrencyById } from "../../../currencies";
import type { CryptoCurrency, TokenCurrency } from "@ledgerhq/types-cryptoassets";
describe("usePickDefaultCurrency", () => {
const setCurrency = jest.fn();
beforeEach(() => {
setCurrency.mockClear();
});
test("do nothing when the passed currency is valid", () => {
const currencies: (CryptoCurrency | TokenCurrency)[] = [
getCryptoCurrencyById("ethereum"),
getCryptoCurrencyById("bitcoin"),
getCryptoCurrencyById("bsc"),
];
renderHook(() =>
usePickDefaultCurrency(currencies, getCryptoCurrencyById("ethereum"), setCurrency),
);
expect(setCurrency).toHaveBeenCalledTimes(0);
});
test("do nothing if the currency is undefined/null and the currencies list don't include eth/btc", () => {
const currencies: (CryptoCurrency | TokenCurrency)[] = [
getCryptoCurrencyById("solana"),
getCryptoCurrencyById("polkadot"),
getCryptoCurrencyById("bsc"),
];
renderHook(() => usePickDefaultCurrency(currencies, undefined, setCurrency));
expect(setCurrency).toHaveBeenCalledTimes(0);
});
test("do nothing if the currency passed isn't valid in the list and the currencies list don't include eth/btc", () => {
const currencies: (CryptoCurrency | TokenCurrency)[] = [
getCryptoCurrencyById("solana"),
getCryptoCurrencyById("polkadot"),
getCryptoCurrencyById("bsc"),
];
renderHook(() =>
usePickDefaultCurrency(currencies, getCryptoCurrencyById("stellar"), setCurrency),
);
expect(setCurrency).toHaveBeenCalledTimes(0);
});
test("returns the ethereum currency if the passed currency isn't valid and ethereum comes before bitcoin in the list", () => {
const ethereumCurrency = getCryptoCurrencyById("ethereum");
const currencies: (CryptoCurrency | TokenCurrency)[] = [
getCryptoCurrencyById("bsc"),
ethereumCurrency,
getCryptoCurrencyById("bitcoin"),
getCryptoCurrencyById("polkadot"),
];
renderHook(() =>
usePickDefaultCurrency(currencies, getCryptoCurrencyById("stellar"), setCurrency),
);
expect(setCurrency).toHaveBeenCalledTimes(1);
expect(setCurrency).toHaveBeenCalledWith(ethereumCurrency);
});
test("returns the bitcoin currency if the passed currency isn't valid and bitcoin comes before ethereum in the list", () => {
const bitcoinCurrency = getCryptoCurrencyById("bitcoin");
const currencies: (CryptoCurrency | TokenCurrency)[] = [
getCryptoCurrencyById("bsc"),
bitcoinCurrency,
getCryptoCurrencyById("ethereum"),
getCryptoCurrencyById("polkadot"),
];
renderHook(() =>
usePickDefaultCurrency(currencies, getCryptoCurrencyById("stellar"), setCurrency),
);
expect(setCurrency).toHaveBeenCalledTimes(1);
expect(setCurrency).toHaveBeenCalledWith(bitcoinCurrency);
});
});