UNPKG

@ledgerhq/coin-casper

Version:
179 lines 8.93 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; }; Object.defineProperty(exports, "__esModule", { value: true }); const bignumber_js_1 = require("bignumber.js"); const transaction_1 = __importStar(require("./transaction")); const fixtures_1 = require("../test/fixtures"); describe("transaction", () => { // Using the createMockAccount function from fixtures const account = (0, fixtures_1.createMockAccount)({ id: "casper:0:testAccount", balance: new bignumber_js_1.BigNumber(100000000), spendableBalance: new bignumber_js_1.BigNumber(100000000), blockHeight: 123456, freshAddress: "0123456789", freshAddressPath: "44'/506'/0'/0/0", lastSyncDate: new Date(), }); describe("formatTransaction", () => { test("should format a transaction with amount", () => { const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: false, amount: new bignumber_js_1.BigNumber(50000000), fees: new bignumber_js_1.BigNumber(1000000), transferId: "1", }); const result = (0, transaction_1.formatTransaction)(tx, account); expect(result).toContain("SEND"); expect(result).toContain("0.05"); expect(result).toContain("CSPR"); expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`); }); test("should format a transaction with useAllAmount", () => { const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: true, amount: new bignumber_js_1.BigNumber(0), fees: new bignumber_js_1.BigNumber(1000000), transferId: "1", }); const result = (0, transaction_1.formatTransaction)(tx, account); expect(result).toContain("SEND MAX"); expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`); }); test("should format a transaction with zero amount", () => { const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: false, amount: new bignumber_js_1.BigNumber(0), fees: new bignumber_js_1.BigNumber(1000000), transferId: "1", }); const result = (0, transaction_1.formatTransaction)(tx, account); expect(result).toContain("SEND"); expect(result).not.toContain("MAX"); expect(result).not.toContain("CSPR"); expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`); }); test("should format a transaction with different address formats", () => { // Test with ED25519 address format const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_ED25519, amount: new bignumber_js_1.BigNumber(50000000), }); const result = (0, transaction_1.formatTransaction)(tx, account); expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_ED25519}`); }); test("should format a transaction with transfer ID", () => { const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, amount: new bignumber_js_1.BigNumber(50000000), transferId: fixtures_1.TEST_TRANSFER_IDS.VALID, }); const result = (0, transaction_1.formatTransaction)(tx, account); expect(result).toContain("0.05"); expect(result).toContain("CSPR"); expect(result).toContain(`TO ${fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1}`); }); }); describe("fromTransactionRaw", () => { test("should convert a transaction raw to a transaction", () => { const raw = { family: "casper", recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: false, amount: "50000000", fees: "1000000", transferId: fixtures_1.TEST_TRANSFER_IDS.VALID, }; const result = (0, transaction_1.fromTransactionRaw)(raw); expect(result.family).toBe("casper"); expect(result.recipient).toBe(fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1); expect(result.useAllAmount).toBe(false); expect(result.amount).toEqual(new bignumber_js_1.BigNumber(50000000)); expect(result.fees).toEqual(new bignumber_js_1.BigNumber(1000000)); expect(result.transferId).toBe(fixtures_1.TEST_TRANSFER_IDS.VALID); }); test("should handle transaction raw without optional fields", () => { const raw = { family: "casper", recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: false, amount: "50000000", fees: "1000000", }; const result = (0, transaction_1.fromTransactionRaw)(raw); expect(result.family).toBe("casper"); expect(result.transferId).toBeUndefined(); }); }); describe("toTransactionRaw", () => { test("should convert a transaction to a transaction raw", () => { const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: false, amount: new bignumber_js_1.BigNumber(50000000), fees: new bignumber_js_1.BigNumber(1000000), transferId: fixtures_1.TEST_TRANSFER_IDS.VALID, }); const result = transaction_1.default.toTransactionRaw(tx); expect(result.family).toBe("casper"); expect(result.recipient).toBe(fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1); expect(result.useAllAmount).toBe(false); expect(result.amount).toBe("50000000"); expect(result.fees).toBe("1000000"); expect(result.transferId).toBe(fixtures_1.TEST_TRANSFER_IDS.VALID); }); test("should handle transaction without optional fields", () => { const tx = (0, fixtures_1.createMockTransaction)({ recipient: fixtures_1.TEST_ADDRESSES.RECIPIENT_SECP256K1, useAllAmount: false, amount: new bignumber_js_1.BigNumber(50000000), fees: new bignumber_js_1.BigNumber(1000000), transferId: undefined, }); const result = transaction_1.default.toTransactionRaw(tx); expect(result.transferId).toBeUndefined(); }); test("should handle different transaction scenarios", () => { // Test with useAllAmount = true const maxTx = (0, fixtures_1.createMockTransaction)({ useAllAmount: true, amount: new bignumber_js_1.BigNumber(0), }); const maxResult = transaction_1.default.toTransactionRaw(maxTx); expect(maxResult.useAllAmount).toBe(true); expect(maxResult.amount).toBe("0"); // Test with very large amount const largeTx = (0, fixtures_1.createMockTransaction)({ amount: new bignumber_js_1.BigNumber("9999000000000"), // 9,999 CSPR }); const largeResult = transaction_1.default.toTransactionRaw(largeTx); expect(largeResult.amount).toBe("9999000000000"); }); }); }); //# sourceMappingURL=transaction.test.js.map