UNPKG

@ledgerhq/coin-icon

Version:
112 lines 5.53 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 = require("bignumber.js"); const icon_sdk_js_1 = __importDefault(require("icon-sdk-js")); const logic_1 = require("../../logic"); const cryptoassets_1 = require("@ledgerhq/cryptoassets"); const constants_1 = require("../../constants"); jest.mock("@ledgerhq/cryptoassets", () => ({ getCryptoCurrencyById: jest.fn(), })); const { IconAmount } = icon_sdk_js_1.default; describe("Icon Utils", () => { describe("Conversion functions", () => { it("should convert loop to ICX correctly", () => { const value = "1000000000000000000"; const result = (0, logic_1.convertLoopToIcx)(value); expect(result.isEqualTo(new bignumber_js_1.BigNumber(IconAmount.fromLoop(value, IconAmount.Unit.ICX.toString())))).toBe(true); }); it("should convert ICX to loop correctly", () => { const value = "1"; const result = (0, logic_1.convertICXtoLoop)(value); expect(result.isEqualTo(new bignumber_js_1.BigNumber(IconAmount.toLoop(value, IconAmount.Unit.ICX.toString())))).toBe(true); }); }); describe("Validation functions", () => { it("should validate address correctly", () => { const validAddress = "hx1234567890123456789012345678901234567890"; const invalidAddress = "hx12345"; expect((0, logic_1.isValidAddress)(validAddress)).toBe(true); expect((0, logic_1.isValidAddress)(invalidAddress)).toBe(false); }); }); describe("Transaction-related functions", () => { it("should identify self transaction correctly", () => { const account = { freshAddress: "hx1234567890123456789012345678901234567890" }; const transaction = { recipient: "hx1234567890123456789012345678901234567890", }; expect((0, logic_1.isSelfTransaction)(account, transaction)).toBe(true); }); it("should get nonce correctly", () => { const account = { iconResources: { nonce: 5 }, pendingOperations: [{ transactionSequenceNumber: 4 }], }; expect((0, logic_1.getNonce)(account)).toBe(5); account.pendingOperations = [{ transactionSequenceNumber: 6 }]; expect((0, logic_1.getNonce)(account)).toBe(7); }); }); describe("Network-related functions", () => { it("should identify testnet correctly", () => { cryptoassets_1.getCryptoCurrencyById.mockReturnValue({ isTestnetFor: true }); const currency = { id: "icon" }; expect((0, logic_1.isTestnet)(currency)).toBe(true); }); it("should return correct network ID", () => { cryptoassets_1.getCryptoCurrencyById.mockReturnValue({ isTestnetFor: true }); const currency = { id: "icon" }; expect((0, logic_1.getNid)(currency)).toBe(constants_1.BERLIN_TESTNET_NID); cryptoassets_1.getCryptoCurrencyById.mockReturnValue({ isTestnetFor: false }); expect((0, logic_1.getNid)(currency)).toBe(constants_1.MAINNET_NID); }); }); describe("Amount calculation functions", () => { it("should calculate correct amount if useAllAmount is true and mode is send", () => { const account = { spendableBalance: new bignumber_js_1.BigNumber(1000), }; const transaction = { useAllAmount: true, mode: "send", fees: new bignumber_js_1.BigNumber(10), }; const result = (0, logic_1.calculateAmount)({ account, transaction }); expect(result.isEqualTo(new bignumber_js_1.BigNumber(990))).toBe(true); }); it("should calculate correct amount if useAllAmount is true and mode is not send", () => { const account = { spendableBalance: new bignumber_js_1.BigNumber(1000), }; const transaction = { useAllAmount: true, mode: "other", fees: new bignumber_js_1.BigNumber(10), }; const result = (0, logic_1.calculateAmount)({ account, transaction }); expect(result.isEqualTo(new bignumber_js_1.BigNumber(990))).toBe(true); }); it("calculates the correct amount if useAllAmount is false", () => { const account = {}; const transaction = { useAllAmount: false, amount: new bignumber_js_1.BigNumber("10000000000000000000000000000000000"), }; const result = (0, logic_1.calculateAmount)({ account, transaction }); expect(result).toStrictEqual(new bignumber_js_1.BigNumber("10000000000000000000000000000000000")); }); it("should calculate minimum balance correctly", () => { const account = { balance: new bignumber_js_1.BigNumber(1000), spendableBalance: new bignumber_js_1.BigNumber(900), }; const result = (0, logic_1.getMinimumBalance)(account); expect(result.isEqualTo(logic_1.EXISTENTIAL_DEPOSIT.minus(new bignumber_js_1.BigNumber(100)))).toBe(true); }); }); }); //# sourceMappingURL=logic.unit.test.js.map