UNPKG

@ledgerhq/coin-icon

Version:
92 lines 4.42 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const bignumber_js_1 = require("bignumber.js"); const cryptoassets_1 = require("@ledgerhq/cryptoassets"); const buildTransaction_1 = require("../../buildTransaction"); const node_1 = require("../../api/node"); const getFeesForTransaction_1 = __importDefault(require("../../getFeesForTransaction")); const logic = __importStar(require("../../logic")); jest.mock("../../buildTransaction"); jest.mock("../../api/node"); jest.mock("@ledgerhq/cryptoassets"); jest.mock("../../logic"); const mockedLogic = jest.mocked(logic); describe("getEstimatedFees", () => { beforeAll(() => { global.FEES_SAFETY_BUFFER = new bignumber_js_1.BigNumber(100); }); it("should fetch the estimated fees correctly", async () => { const account = { currency: { id: "icon" }, spendableBalance: new bignumber_js_1.BigNumber(1000), pendingOperations: [], iconResources: { nonce: 1 }, }; const transaction = { amount: new bignumber_js_1.BigNumber(100), recipient: "recipient-address", fees: new bignumber_js_1.BigNumber(10), }; const unsignedTx = { /* mock unsigned transaction */ }; const stepLimit = new bignumber_js_1.BigNumber(100000); const stepPrice = new bignumber_js_1.BigNumber(10); cryptoassets_1.getAbandonSeedAddress.mockReturnValue("fake-recipient-address"); mockedLogic.calculateAmount.mockReturnValue(new bignumber_js_1.BigNumber(100)); buildTransaction_1.buildTransaction.mockResolvedValue({ unsigned: unsignedTx }); node_1.getFees.mockResolvedValue(stepLimit); node_1.getStepPrice.mockResolvedValue(stepPrice); const estimatedFees = await (0, getFeesForTransaction_1.default)({ account, transaction }); expect(estimatedFees.isEqualTo(stepLimit.multipliedBy(stepPrice))).toBe(true); expect(transaction.stepLimit).toEqual(stepLimit); }); it("should return FEES_SAFETY_BUFFER if an error occurs", async () => { const account = { currency: { id: "icon" }, spendableBalance: new bignumber_js_1.BigNumber(1000), pendingOperations: [], iconResources: { nonce: 1 }, }; const transaction = { amount: new bignumber_js_1.BigNumber(100), recipient: "recipient-address", fees: new bignumber_js_1.BigNumber(10), }; cryptoassets_1.getAbandonSeedAddress.mockReturnValue("fake-recipient-address"); mockedLogic.calculateAmount.mockReturnValue(new bignumber_js_1.BigNumber(100)); // @ts-expect-error type mockedLogic.FEES_SAFETY_BUFFER = new bignumber_js_1.BigNumber(100); buildTransaction_1.buildTransaction.mockRejectedValue(new Error("Error")); // Mock getFees and getStepPrice if necessary, but they won't be called in this test case const estimatedFees = await (0, getFeesForTransaction_1.default)({ account, transaction }); expect(estimatedFees.isEqualTo(new bignumber_js_1.BigNumber(100))).toBe(true); }); }); //# sourceMappingURL=getFeesForTransaction.unit.test.js.map