@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
157 lines • 6.23 kB
JavaScript
;
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 banner_1 = require("./banner");
const preloadedData = __importStar(require("@ledgerhq/coin-near/preload"));
const logic = __importStar(require("@ledgerhq/coin-near/logic"));
const bignumber_js_1 = require("bignumber.js");
const ledgerValidator = {
validatorAddress: "ledgerbyfigment.poolv1.near",
tokens: "1048915930081658334880682687527",
commission: 0.05,
};
const expensiveValidator = {
validatorAddress: "vcap.poolv1.near",
tokens: "25189185052249274302209542299",
commission: 0.1,
};
const cheapValidator = {
validatorAddress: "meduza.poolv1.near",
tokens: "25456182690919428871460833604",
commission: 0.02,
};
const account = {
type: "Account",
id: "js:2:near:d812a582d0b30c1a13041fd564e5f0c4325804b1dd2447d63ab6b9a424747363:nearbip44h",
used: true,
seedIdentifier: "ed25519:DewDMzsc2cnMYBrALESrf3vKWLp3zBB4HJnPoyvPL945",
derivationMode: "nearbip44h",
index: 1,
freshAddress: "d812a582d0b30c1a13041fd564e5f0c4325804b1dd2447d63ab6b9a424747363",
freshAddressPath: "44'/397'/0'/0'/1'",
blockHeight: 85373729,
creationDate: new Date("2022-12-08T09:42:54.396Z"),
balance: new bignumber_js_1.BigNumber("3.10368633212077468946995e+23"),
spendableBalance: new bignumber_js_1.BigNumber("1.265872509685649e+23"),
operations: [],
operationsCount: 3,
pendingOperations: [],
currency: {
type: "CryptoCurrency",
id: "near",
coinType: 397,
name: "NEAR",
managerAppName: "NEAR",
ticker: "NEAR",
scheme: "near",
color: "#000",
family: "near",
units: [],
explorerViews: [],
keywords: ["near"],
},
lastSyncDate: new Date("2023-02-16T19:43:17.615Z"),
swapHistory: [],
balanceHistoryCache: {
HOUR: {
balances: [],
latestDate: 1676574000000,
},
DAY: {
balances: [],
latestDate: 1676505600000,
},
WEEK: {
balances: [],
latestDate: 1676160000000,
},
},
nearResources: {
stakedBalance: new bignumber_js_1.BigNumber("1.29802125309300073830514e+23"),
pendingBalance: new bignumber_js_1.BigNumber("0"),
availableBalance: new bignumber_js_1.BigNumber("0"),
storageUsageBalance: new bignumber_js_1.BigNumber("5.182e+22"),
stakingPositions: [],
},
};
const validators = [expensiveValidator, cheapValidator, ledgerValidator];
const validatorsMap = {
storageCost: new bignumber_js_1.BigNumber("10000000000000000000"),
gasPrice: new bignumber_js_1.BigNumber("100000000"),
createAccountCostSend: new bignumber_js_1.BigNumber("99607375000"),
createAccountCostExecution: new bignumber_js_1.BigNumber("99607375000"),
transferCostSend: new bignumber_js_1.BigNumber("115123062500"),
transferCostExecution: new bignumber_js_1.BigNumber("115123062500"),
addKeyCostSend: new bignumber_js_1.BigNumber("101765125000"),
addKeyCostExecution: new bignumber_js_1.BigNumber("101765125000"),
receiptCreationSend: new bignumber_js_1.BigNumber("108059500000"),
receiptCreationExecution: new bignumber_js_1.BigNumber("108059500000"),
validators,
};
describe("near/banner", () => {
afterEach(() => {
jest.restoreAllMocks();
});
it("should not display the banner is account is", async () => {
jest.spyOn(preloadedData, "getCurrentNearPreloadData").mockReturnValue(validatorsMap);
jest.spyOn(logic, "canStake").mockReturnValue(false);
const result = (0, banner_1.getAccountBannerState)(account);
expect(result).toStrictEqual({
display: false,
redelegate: false,
validatorId: "",
ledgerValidator,
});
});
it("should return display delegate mode is account is not empty", async () => {
jest.spyOn(preloadedData, "getCurrentNearPreloadData").mockReturnValue(validatorsMap);
jest.spyOn(logic, "canUnstake").mockReturnValue(true);
const result = (0, banner_1.getAccountBannerState)(account);
expect(result).toStrictEqual({
display: true,
redelegate: false,
validatorId: "",
ledgerValidator,
});
});
it("should return display redelegate mode when deactive is an action", async () => {
const badValidator = {
staked: new bignumber_js_1.BigNumber("1.29802125309300073830514e+23"),
available: new bignumber_js_1.BigNumber("1"),
pending: new bignumber_js_1.BigNumber("0"),
validatorId: "vcap.poolv1.near",
};
jest.spyOn(preloadedData, "getCurrentNearPreloadData").mockReturnValue(validatorsMap);
account.nearResources?.stakingPositions.push(badValidator);
const result = (0, banner_1.getAccountBannerState)(account);
expect(result).toStrictEqual({
display: true,
redelegate: true,
validatorId: "vcap.poolv1.near",
ledgerValidator,
});
});
});
//# sourceMappingURL=banner.test.js.map