UNPKG

@ledgerhq/coin-filecoin

Version:
49 lines (38 loc) 1.43 kB
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"); }); });