@ledgerhq/coin-icon
Version:
Ledger Icon Coin integration
92 lines • 4.42 kB
JavaScript
"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