UNPKG

@ledgerhq/coin-near

Version:
247 lines • 8.97 kB
"use strict"; 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 logic_1 = require("./logic"); describe("getMaxAmount", () => { const spendableBalance = 1_000_000; const pendingOperations = [ { type: "SEND", value: new bignumber_js_1.default(1_234), recipients: "02645948421CEE96A0F9B53E8EC414047B25194120FDF926F955D5F38D756346", }, { type: "UNSTAKE", value: new bignumber_js_1.default(5_678), recipients: "2E627FBC1128A1A9899660B86114766C5C2C5902D230DF6EFAB68F4FC47E36C7", }, { type: "WITHDRAW_UNSTAKED", value: new bignumber_js_1.default(9_012), recipients: "3E8D8A4CF7BFBDCFC314DBEDD2FFD413E5707ACA75B06523759D46AAA1BB788F", }, ]; it.each([ { // Returns spendableBalance as no fees name: "send", transaction: { mode: "send", }, fees: 0, expectedAmount: spendableBalance, }, { // Returns spendableBalance minus fees name: "send", transaction: { mode: "send", }, fees: 100, expectedAmount: spendableBalance - 100, }, { // Returns 0 as no value is staked name: "unstake", transaction: { mode: "unstake", }, fees: 100, expectedAmount: 0, }, { // Returns 0 as no reward is available name: "withdraw", transaction: { mode: "withdraw", }, fees: 100, expectedAmount: 0, }, ])("returns expected amount with no pendingOperations and whatever transaction of type $name", ({ transaction, fees, expectedAmount }) => { // Given const account = { spendableBalance: new bignumber_js_1.default(spendableBalance), pendingOperations: [], }; // When const result = (0, logic_1.getMaxAmount)(account, transaction, new bignumber_js_1.default(fees)); // Then expect(result).toEqual(new bignumber_js_1.default(expectedAmount)); }); describe("when account has pending operations", () => { it.each([ { // Returns spendableBalance minus the fees, whatever the types name: "send", transaction: { mode: "send", }, fees: 100, expectedAmount: spendableBalance - 100, }, { // Returns 0 as no value is staked name: "unstake", transaction: { mode: "unstake", }, fees: 100, expectedAmount: 0, }, { // Returns 0 as no reward is available name: "withdraw", transaction: { mode: "withdraw", }, fees: 100, expectedAmount: 0, }, ])("returns expected amount for whatever transaction of type $name", ({ transaction, fees, expectedAmount }) => { // Given const account = { spendableBalance: new bignumber_js_1.default(spendableBalance), pendingOperations, }; // When const result = (0, logic_1.getMaxAmount)(account, transaction, new bignumber_js_1.default(fees)); // Then expect(result).toEqual(new bignumber_js_1.default(expectedAmount)); }); it("returns the spendable amount when no fees are provided", () => { // Given const account = { spendableBalance: new bignumber_js_1.default(spendableBalance), pendingOperations, }; const transaction = { mode: "send", }; const expectedAmount = spendableBalance; // When const result = (0, logic_1.getMaxAmount)(account, transaction); // Then expect(result).toEqual(new bignumber_js_1.default(expectedAmount)); }); }); describe("when account has staking position", () => { const nearResources = { stakingPositions: [ { validatorId: "", staked: new bignumber_js_1.default(2_345), available: new bignumber_js_1.default(3_456), }, { validatorId: "2E627FBC1128A1A9899660B86114766C5C2C5902D230DF6EFAB68F4FC47E36C7", staked: new bignumber_js_1.default(4_567), available: new bignumber_js_1.default(6_789), }, { validatorId: "3E8D8A4CF7BFBDCFC314DBEDD2FFD413E5707ACA75B06523759D46AAA1BB788F", staked: new bignumber_js_1.default(7_890), available: new bignumber_js_1.default(8_901), }, ], }; it.each([ { // Returns spendableBalance minus all pending operations, whatever the types name: "send", transaction: { mode: "send", }, fees: 100, expectedAmount: spendableBalance - 100, }, { // Returns 0 as no value is staked name: "unstake", transaction: { mode: "unstake", recipient: "2E627FBC1128A1A9899660B86114766C5C2C5902D230DF6EFAB68F4FC47E36C7", }, fees: 100, expectedAmount: 4_567, }, { // Returns 0 as no reward is available name: "withdraw", transaction: { mode: "withdraw", recipient: "3E8D8A4CF7BFBDCFC314DBEDD2FFD413E5707ACA75B06523759D46AAA1BB788F", }, fees: 100, expectedAmount: 8_901, }, ])("returns expected amount with pendingOperations and whatever transaction of type $name", ({ transaction, fees, expectedAmount }) => { // Given const account = { spendableBalance: new bignumber_js_1.default(spendableBalance), pendingOperations, nearResources, }; // When const result = (0, logic_1.getMaxAmount)(account, transaction, new bignumber_js_1.default(fees)); // Then expect(result).toEqual(new bignumber_js_1.default(expectedAmount)); }); }); }); describe("getTotalSpent", () => { it.each([ { name: "unstake", transaction: { mode: "unstake", }, fees: 123, expectedResult: 123, }, { name: "withdraw", transaction: { mode: "withdraw", }, fees: 456, expectedResult: 456, }, ])("returns the fees value if transaction is $name", ({ fees, transaction, expectedResult }) => { // When const result = (0, logic_1.getTotalSpent)({}, transaction, new bignumber_js_1.default(fees)); // Then expect(result).toEqual(new bignumber_js_1.default(expectedResult)); }); it("returns the addition of transaction fees and amount if transaction is a send", () => { // Given const amount = 5_678; const transaction = { mode: "send", amount: new bignumber_js_1.default(amount), }; const fees = 123; // When const result = (0, logic_1.getTotalSpent)({}, transaction, new bignumber_js_1.default(fees)); // Then expect(result).toEqual(new bignumber_js_1.default(amount + fees)); }); it("returns the account spendable balance if transaction is set to 'useAllAmount'", () => { // Given const spendableBalance = new bignumber_js_1.default(9_900); const account = { spendableBalance }; const transaction = { mode: "send", useAllAmount: true, }; const fees = 123; // When const result = (0, logic_1.getTotalSpent)(account, transaction, new bignumber_js_1.default(fees)); // Then expect(result).toEqual(spendableBalance); }); }); //# sourceMappingURL=logic.test.js.map