@ledgerhq/coin-icon
Version:
Ledger Icon Coin integration
130 lines • 5.18 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const bignumber_js_1 = require("bignumber.js");
const account_1 = require("@ledgerhq/coin-framework/account");
const currencies_1 = require("@ledgerhq/coin-framework/currencies");
const transaction_1 = require("../../transaction");
jest.mock("@ledgerhq/coin-framework/account", () => ({
getAccountCurrency: jest.fn(),
}));
jest.mock("@ledgerhq/coin-framework/currencies", () => ({
formatCurrencyUnit: jest.fn(),
}));
describe("Transaction Utilities", () => {
describe("formatTransaction", () => {
it("should format a transaction correctly", () => {
const transaction = {
mode: "send",
amount: new bignumber_js_1.BigNumber(1000),
recipient: "recipient-address",
useAllAmount: false,
};
const account = {
currency: {
units: [{ code: "ICX", name: "ICX", magnitude: 18 }],
},
};
account_1.getAccountCurrency.mockReturnValue(account.currency);
currencies_1.formatCurrencyUnit.mockReturnValue("1 ICX");
const formatted = (0, transaction_1.formatTransaction)(transaction, account);
expect(formatted).toBe("\nSEND 1 ICX\nTO recipient-address");
});
it("should handle useAllAmount correctly", () => {
const transaction = {
mode: "send",
amount: new bignumber_js_1.BigNumber(0),
recipient: "recipient-address",
useAllAmount: true,
};
const account = {
currency: {
units: [{ code: "ICX", name: "ICX", magnitude: 8 }],
},
};
account_1.getAccountCurrency.mockReturnValue(account.currency);
const formatted = (0, transaction_1.formatTransaction)(transaction, account);
expect(formatted).toBe("\nSEND MAX\nTO recipient-address");
});
});
describe("fromTransactionRaw", () => {
it("should convert a raw transaction to a transaction", () => {
const rawTransaction = {
family: "ICX",
mode: "send",
amount: "1000",
recipient: "recipient-address",
fees: "10",
stepLimit: "1000",
};
const transaction = (0, transaction_1.fromTransactionRaw)(rawTransaction);
expect(transaction).toEqual({
family: "ICX",
mode: "send",
amount: new bignumber_js_1.BigNumber(1000),
recipient: "recipient-address",
fees: new bignumber_js_1.BigNumber(10),
stepLimit: new bignumber_js_1.BigNumber(1000),
});
});
it("should handle null and undefined fields", () => {
const rawTransaction = {
family: "ICX",
mode: "send",
amount: "1000",
recipient: "recipient-address",
fees: null,
stepLimit: undefined,
};
const transaction = (0, transaction_1.fromTransactionRaw)(rawTransaction);
expect(transaction).toEqual({
family: "ICX",
mode: "send",
amount: new bignumber_js_1.BigNumber(1000),
recipient: "recipient-address",
fees: null,
stepLimit: undefined,
});
});
});
describe("toTransactionRaw", () => {
it("should convert a transaction to a raw transaction", () => {
const transaction = {
family: "ICX",
mode: "send",
amount: new bignumber_js_1.BigNumber(1000),
recipient: "recipient-address",
fees: new bignumber_js_1.BigNumber(10),
stepLimit: new bignumber_js_1.BigNumber(1000),
};
const rawTransaction = (0, transaction_1.toTransactionRaw)(transaction);
expect(rawTransaction).toEqual({
family: "ICX",
mode: "send",
amount: "1000",
recipient: "recipient-address",
fees: "10",
stepLimit: "1000",
});
});
it("should handle null and undefined fields", () => {
const transaction = {
family: "ICX",
mode: "send",
amount: new bignumber_js_1.BigNumber(1000),
recipient: "recipient-address",
fees: null,
stepLimit: undefined,
};
const rawTransaction = (0, transaction_1.toTransactionRaw)(transaction);
expect(rawTransaction).toEqual({
family: "ICX",
mode: "send",
amount: "1000",
recipient: "recipient-address",
fees: null,
stepLimit: undefined,
});
});
});
});
//# sourceMappingURL=transaction.unit.test.js.map