@ledgerhq/coin-filecoin
Version:
Ledger Filecoin Coin integration
49 lines (38 loc) • 1.43 kB
text/typescript
import { broadcastTx } from "../../network/api";
import { broadcast } from "./broadcast";
jest.mock("../../network/api");
jest.mock("@ledgerhq/logs");
const mockedBroadcastTx = broadcastTx as jest.MockedFunction<typeof broadcastTx>;
const VALID_REQUEST = JSON.stringify({
message: {
version: 0,
to: "f1z4nykg7q6q5qnxs7h4zknhlqbqhq5jxcqm5qw4y",
from: "f1abjxfbp274xpdqcpuaykwkfb43omjotacm2p3za",
nonce: 1,
value: "1000000",
gaslimit: 1000000,
gasfeecap: "100000",
gaspremium: "1000",
method: 0,
params: "",
},
signature: { type: 1, data: "c2lnbmF0dXJl" },
});
describe("broadcast", () => {
beforeEach(() => jest.clearAllMocks());
it("returns hash string on success", async () => {
mockedBroadcastTx.mockResolvedValueOnce({
hash: "bafy2bzacedpqzd6qm2r7nvxj5oetpqvhujwwmvkhz4u3xnfzdvwzxpjzuqhpa",
});
const result = await broadcast(VALID_REQUEST);
expect(result).toBe("bafy2bzacedpqzd6qm2r7nvxj5oetpqvhujwwmvkhz4u3xnfzdvwzxpjzuqhpa");
});
it("throws when hash is empty string", async () => {
mockedBroadcastTx.mockResolvedValueOnce({ hash: "" });
await expect(broadcast(VALID_REQUEST)).rejects.toThrow(/empty transaction hash/);
});
it("propagates API errors", async () => {
mockedBroadcastTx.mockRejectedValueOnce(new Error("network failure"));
await expect(broadcast(VALID_REQUEST)).rejects.toThrow("network failure");
});
});