@ledgerhq/coin-algorand
Version:
Ledger Algorand Coin integration
45 lines (33 loc) • 1.44 kB
text/typescript
import * as network from "../network";
import { broadcast } from "./broadcast";
jest.mock("../network");
const mockBroadcastTransaction = network.broadcastTransaction as jest.MockedFunction<
typeof network.broadcastTransaction
>;
describe("broadcast", () => {
beforeEach(() => {
jest.clearAllMocks();
});
it("should broadcast a signed transaction and return the transaction ID", async () => {
const signedTx = "abcdef123456";
const expectedTxId = "TX_HASH_123";
mockBroadcastTransaction.mockResolvedValue(expectedTxId);
const result = await broadcast(signedTx);
expect(result).toBe(expectedTxId);
expect(mockBroadcastTransaction).toHaveBeenCalledTimes(1);
expect(mockBroadcastTransaction).toHaveBeenCalledWith(Buffer.from(signedTx, "hex"));
});
it("should convert hex string to buffer before broadcasting", async () => {
const signedTx = "48656c6c6f"; // "Hello" in hex
mockBroadcastTransaction.mockResolvedValue("TX_ID");
await broadcast(signedTx);
const expectedBuffer = Buffer.from(signedTx, "hex");
expect(mockBroadcastTransaction).toHaveBeenCalledWith(expectedBuffer);
});
it("should propagate network errors", async () => {
const signedTx = "abcdef";
const networkError = new Error("Network error");
mockBroadcastTransaction.mockRejectedValue(networkError);
await expect(broadcast(signedTx)).rejects.toThrow("Network error");
});
});