UNPKG

@ledgerhq/live-common

Version:
128 lines 5.18 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 = __importDefault(require("bignumber.js")); const estimateMaxSpendable_1 = require("../estimateMaxSpendable"); const alpaca = __importStar(require("../alpaca")); // Mock the alpaca API jest.mock("../alpaca", () => ({ getAlpacaApi: jest.fn(), })); const mockedGetAlpacaApi = alpaca.getAlpacaApi; // Dummy data const dummyAccounts = [ { id: "js:2:ripple:r123:", type: "Account", spendableBalance: new bignumber_js_1.default(50000000), balance: new bignumber_js_1.default(60000000), currency: { id: "ripple", family: "xrp", name: "XRP", units: [{ name: "XRP", magnitude: 6 }] }, freshAddress: "r123", pendingOperations: [], }, { id: "js:2:stellar:s123:", type: "Account", spendableBalance: new bignumber_js_1.default(50000000), balance: new bignumber_js_1.default(60000000), currency: { id: "stellar", family: "stellar", name: "Stellar", units: [{ name: "XLM", magnitude: 7 }], }, freshAddress: "s123", pendingOperations: [], }, { id: "js:2:tezos:t123", type: "Account", spendableBalance: new bignumber_js_1.default(50000000), balance: new bignumber_js_1.default(60000000), currency: { id: "tezos", family: "tezos", name: "Tezos", units: [{ name: "XTZ", magnitude: 6 }], }, freshAddress: "t123", pendingOperations: [], }, ]; ["xrp", "stellar", "tezos"].forEach((currencyName, idx) => { describe(`genericEstimateMaxSpendable for ${currencyName}`, () => { const dummyAccount = dummyAccounts[idx]; afterEach(() => { jest.clearAllMocks(); }); it("subtracts estimated fee from spendable balance", async () => { mockedGetAlpacaApi.mockReturnValue({ estimateFees: jest.fn().mockResolvedValue({ value: 10000n }), validateIntent: jest.fn().mockResolvedValue({ amount: 49990000n }), }); const estimate = (0, estimateMaxSpendable_1.genericEstimateMaxSpendable)(currencyName, "local"); const result = await estimate({ account: dummyAccount, parentAccount: null, transaction: {}, }); expect(result.toString()).toBe("49990000"); }); it("returns 0 if fee is higher than spendable", async () => { const poorAccount = { ...dummyAccount, spendableBalance: new bignumber_js_1.default(5000), }; mockedGetAlpacaApi.mockReturnValue({ estimateFees: jest.fn().mockResolvedValue({ value: 10000n }), validateIntent: jest.fn().mockResolvedValue({ amount: 0n }), }); const estimate = (0, estimateMaxSpendable_1.genericEstimateMaxSpendable)(currencyName, "local"); const result = await estimate({ account: poorAccount, parentAccount: null, transaction: {}, }); expect(result.toString()).toBe("0"); }); it("returns full spendable balance if fee is 0", async () => { mockedGetAlpacaApi.mockReturnValue({ estimateFees: jest.fn().mockResolvedValue({ value: 0n }), validateIntent: jest.fn().mockResolvedValue({ amount: 50000000n }), }); const estimate = (0, estimateMaxSpendable_1.genericEstimateMaxSpendable)(currencyName, "local"); const result = await estimate({ account: dummyAccount, parentAccount: null, transaction: {}, }); expect(result.toString()).toBe("50000000"); }); }); }); //# sourceMappingURL=estimateMaxSpendable.test.js.map