@ledgerhq/coin-cardano 0.13.0-nightly.6 → 0.13.0-nightly.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +11 -0
- package/package.json +6 -6
- package/lib/address.unit.test.d.ts +0 -2
- package/lib/address.unit.test.d.ts.map +0 -1
- package/lib/address.unit.test.js +0 -21
- package/lib/address.unit.test.js.map +0 -1
- package/lib/bridge.integration.test.d.ts +0 -4
- package/lib/bridge.integration.test.d.ts.map +0 -1
- package/lib/bridge.integration.test.js +0 -120
- package/lib/bridge.integration.test.js.map +0 -1
- package/lib/buildTransaction.test.d.ts +0 -2
- package/lib/buildTransaction.test.d.ts.map +0 -1
- package/lib/buildTransaction.test.js +0 -172
- package/lib/buildTransaction.test.js.map +0 -1
- package/lib/getTransactionStatus/getTransactionStatus.test.d.ts +0 -2
- package/lib/getTransactionStatus/getTransactionStatus.test.d.ts.map +0 -1
- package/lib/getTransactionStatus/getTransactionStatus.test.js +0 -149
- package/lib/getTransactionStatus/getTransactionStatus.test.js.map +0 -1
- package/lib/getTransactionStatus/handler.test.d.ts +0 -2
- package/lib/getTransactionStatus/handler.test.d.ts.map +0 -1
- package/lib/getTransactionStatus/handler.test.js +0 -51
- package/lib/getTransactionStatus/handler.test.js.map +0 -1
- package/lib/logic.unit.test.d.ts +0 -2
- package/lib/logic.unit.test.d.ts.map +0 -1
- package/lib/logic.unit.test.js +0 -55
- package/lib/logic.unit.test.js.map +0 -1
- package/lib/synchronisation.unit.test.d.ts +0 -2
- package/lib/synchronisation.unit.test.d.ts.map +0 -1
- package/lib/synchronisation.unit.test.js +0 -150
- package/lib/synchronisation.unit.test.js.map +0 -1
- package/lib-es/address.unit.test.d.ts +0 -2
- package/lib-es/address.unit.test.d.ts.map +0 -1
- package/lib-es/address.unit.test.js +0 -19
- package/lib-es/address.unit.test.js.map +0 -1
- package/lib-es/bridge.integration.test.d.ts +0 -4
- package/lib-es/bridge.integration.test.d.ts.map +0 -1
- package/lib-es/bridge.integration.test.js +0 -114
- package/lib-es/bridge.integration.test.js.map +0 -1
- package/lib-es/buildTransaction.test.d.ts +0 -2
- package/lib-es/buildTransaction.test.d.ts.map +0 -1
- package/lib-es/buildTransaction.test.js +0 -167
- package/lib-es/buildTransaction.test.js.map +0 -1
- package/lib-es/getTransactionStatus/getTransactionStatus.test.d.ts +0 -2
- package/lib-es/getTransactionStatus/getTransactionStatus.test.d.ts.map +0 -1
- package/lib-es/getTransactionStatus/getTransactionStatus.test.js +0 -121
- package/lib-es/getTransactionStatus/getTransactionStatus.test.js.map +0 -1
- package/lib-es/getTransactionStatus/handler.test.d.ts +0 -2
- package/lib-es/getTransactionStatus/handler.test.d.ts.map +0 -1
- package/lib-es/getTransactionStatus/handler.test.js +0 -26
- package/lib-es/getTransactionStatus/handler.test.js.map +0 -1
- package/lib-es/logic.unit.test.d.ts +0 -2
- package/lib-es/logic.unit.test.d.ts.map +0 -1
- package/lib-es/logic.unit.test.js +0 -50
- package/lib-es/logic.unit.test.js.map +0 -1
- package/lib-es/synchronisation.unit.test.d.ts +0 -2
- package/lib-es/synchronisation.unit.test.d.ts.map +0 -1
- package/lib-es/synchronisation.unit.test.js +0 -145
- package/lib-es/synchronisation.unit.test.js.map +0 -1
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
/* eslint @typescript-eslint/consistent-type-assertions: 0 */
|
|
2
|
-
import BigNumber from "bignumber.js";
|
|
3
|
-
import { getTransactionStatus } from "./getTransactionStatus";
|
|
4
|
-
import * as sanction from "@ledgerhq/coin-framework/sanction/index";
|
|
5
|
-
import { AddressesSanctionedError } from "@ledgerhq/coin-framework/sanction/errors";
|
|
6
|
-
import * as mode from "./handler";
|
|
7
|
-
import coinConfig from "../config";
|
|
8
|
-
describe("getTransactionStatus", () => {
|
|
9
|
-
it("should return not enough funds error when there are no utxos", async () => {
|
|
10
|
-
const initialAccount = {
|
|
11
|
-
pendingOperations: [],
|
|
12
|
-
cardanoResources: {
|
|
13
|
-
utxos: [],
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
const sendTx = {
|
|
17
|
-
amount: new BigNumber(1000000),
|
|
18
|
-
recipient: "addr1qxqm3nxwzf70ke9jqa2zrtrevjznpv6yykptxnv34perjc8a7zgxmpv5pgk4hhhe0m9kfnlsf5pt7d2ahkxaul2zygrq3nura9",
|
|
19
|
-
mode: "send",
|
|
20
|
-
family: "cardano",
|
|
21
|
-
poolId: undefined,
|
|
22
|
-
};
|
|
23
|
-
const sendTxRes = await getTransactionStatus(initialAccount, sendTx);
|
|
24
|
-
expect(sendTxRes.errors.amount.name).toBe("CardanoNotEnoughFunds");
|
|
25
|
-
const delegateTx = {
|
|
26
|
-
amount: new BigNumber(0),
|
|
27
|
-
recipient: "",
|
|
28
|
-
mode: "delegate",
|
|
29
|
-
family: "cardano",
|
|
30
|
-
poolId: "d0f48f07e4e5eb8040a988085f7ea3bd32d71a2e2998d53e9bbc959a",
|
|
31
|
-
};
|
|
32
|
-
const delegateTxRes = await getTransactionStatus(initialAccount, delegateTx);
|
|
33
|
-
expect(delegateTxRes.errors.amount.name).toBe("CardanoNotEnoughFunds");
|
|
34
|
-
const undelegateTx = {
|
|
35
|
-
amount: new BigNumber(0),
|
|
36
|
-
recipient: "",
|
|
37
|
-
mode: "undelegate",
|
|
38
|
-
family: "cardano",
|
|
39
|
-
poolId: undefined,
|
|
40
|
-
};
|
|
41
|
-
const undelegateTxRes = await getTransactionStatus(initialAccount, undelegateTx);
|
|
42
|
-
expect(undelegateTxRes.errors.amount.name).toBe("CardanoNotEnoughFunds");
|
|
43
|
-
});
|
|
44
|
-
it("should return as sender error only sanctioned utxo addresses", async () => {
|
|
45
|
-
const sanctionedAddresses = [
|
|
46
|
-
"addr1eKHLg16K8UTAak8srh6LiTRufkT2uziFKekkfZBxcRNMED",
|
|
47
|
-
"addr1UvY42XTJHMPHDEDch9UWagjhipLjke37Uqm7qzfcSkdPHT",
|
|
48
|
-
];
|
|
49
|
-
jest.spyOn(sanction, "isAddressSanctioned").mockImplementation((_, address) => {
|
|
50
|
-
return Promise.resolve(sanctionedAddresses.includes(address));
|
|
51
|
-
});
|
|
52
|
-
const utxos = [
|
|
53
|
-
{
|
|
54
|
-
address: "addr1eKHLg16K8UTAak8srh6LiTRufkT2uziFKekkfZBxcRNMED",
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
address: "addr1UvY42XTJHMPHDEDch9UWagjhipLjke37Uqm7qzfcSkdPHT",
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
address: "addr1QDz6DDTAk5CNig91MNxgTKXUpYoAbz6WnyZ7AztJUXsDDK",
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
address: "addr1Fwc4rtTcbrhmcq3iqDJZULdyxU8nJmam3Jx6oknhY5Jqm2",
|
|
64
|
-
},
|
|
65
|
-
];
|
|
66
|
-
const account = {
|
|
67
|
-
pendingOperations: [],
|
|
68
|
-
cardanoResources: {
|
|
69
|
-
utxos: utxos,
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
const transaction = {};
|
|
73
|
-
const status = await getTransactionStatus(account, transaction);
|
|
74
|
-
expect(status.errors).toEqual({
|
|
75
|
-
sender: new AddressesSanctionedError("AddressesSanctionedError", {
|
|
76
|
-
addresses: sanctionedAddresses,
|
|
77
|
-
}),
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
it("should return as no sender error when no utxo address is sanctioned", async () => {
|
|
81
|
-
const maxFeesWarning = BigNumber(1000000);
|
|
82
|
-
jest.spyOn(coinConfig, "getCoinConfig").mockReturnValue({
|
|
83
|
-
maxFeesWarning: maxFeesWarning,
|
|
84
|
-
maxFeesError: maxFeesWarning.multipliedBy(2),
|
|
85
|
-
});
|
|
86
|
-
jest.spyOn(mode, "getTransactionStatusByTransactionMode").mockResolvedValue({
|
|
87
|
-
errors: {},
|
|
88
|
-
warnings: {},
|
|
89
|
-
amount: BigNumber(0),
|
|
90
|
-
totalSpent: BigNumber(0),
|
|
91
|
-
estimatedFees: maxFeesWarning,
|
|
92
|
-
});
|
|
93
|
-
jest.spyOn(sanction, "isAddressSanctioned").mockResolvedValue(false);
|
|
94
|
-
const utxos = [
|
|
95
|
-
{
|
|
96
|
-
address: "addr1eKHLg16K8UTAak8srh6LiTRufkT2uziFKekkfZBxcRNMED",
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
address: "addr1UvY42XTJHMPHDEDch9UWagjhipLjke37Uqm7qzfcSkdPHT",
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
address: "addr1QDz6DDTAk5CNig91MNxgTKXUpYoAbz6WnyZ7AztJUXsDDK",
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
address: "addr1Fwc4rtTcbrhmcq3iqDJZULdyxU8nJmam3Jx6oknhY5Jqm2",
|
|
106
|
-
},
|
|
107
|
-
];
|
|
108
|
-
const account = {
|
|
109
|
-
pendingOperations: [],
|
|
110
|
-
cardanoResources: {
|
|
111
|
-
utxos: utxos,
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
|
-
const transaction = {
|
|
115
|
-
mode: "send",
|
|
116
|
-
};
|
|
117
|
-
const status = await getTransactionStatus(account, transaction);
|
|
118
|
-
expect(status.errors).toEqual({});
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
//# sourceMappingURL=getTransactionStatus.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getTransactionStatus.test.js","sourceRoot":"","sources":["../../src/getTransactionStatus/getTransactionStatus.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.test.d.ts","sourceRoot":"","sources":["../../src/getTransactionStatus/handler.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/* eslint @typescript-eslint/consistent-type-assertions: 0 */
|
|
2
|
-
import * as delegate from "./delegate";
|
|
3
|
-
import * as send from "./send";
|
|
4
|
-
import { getTransactionStatusByTransactionMode } from "./handler";
|
|
5
|
-
import * as undelegate from "./undelegate";
|
|
6
|
-
jest.mock("./delegate");
|
|
7
|
-
jest.mock("./send");
|
|
8
|
-
jest.mock("./undelegate");
|
|
9
|
-
describe("getTransactionStatusByMode on Cardano", () => {
|
|
10
|
-
const sendMock = send.getSendTransactionStatus;
|
|
11
|
-
const delegateMock = delegate.getDelegateTransactionStatus;
|
|
12
|
-
const undelegateMock = undelegate.getUndelegateTransactionStatus;
|
|
13
|
-
describe("should redirect to the correct mode handler", () => {
|
|
14
|
-
test.each([
|
|
15
|
-
["send", sendMock],
|
|
16
|
-
["delegate", delegateMock],
|
|
17
|
-
["undelegate", undelegateMock],
|
|
18
|
-
])("for %s", async (mode, mock) => {
|
|
19
|
-
const account = {};
|
|
20
|
-
const transaction = { mode: mode };
|
|
21
|
-
await getTransactionStatusByTransactionMode(account, transaction);
|
|
22
|
-
expect(mock).toHaveBeenCalledWith(account, transaction);
|
|
23
|
-
});
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
//# sourceMappingURL=handler.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handler.test.js","sourceRoot":"","sources":["../../src/getTransactionStatus/handler.test.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAE7D,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,qCAAqC,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAG3C,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACpB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAE1B,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAqC,CAAC;IAC5D,MAAM,YAAY,GAAG,QAAQ,CAAC,4BAAyC,CAAC;IACxE,MAAM,cAAc,GAAG,UAAU,CAAC,8BAA2C,CAAC;IAE9E,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAC3D,IAAI,CAAC,IAAI,CAAC;YACR,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,UAAU,EAAE,YAAY,CAAC;YAC1B,CAAC,YAAY,EAAE,cAAc,CAAC;SAC/B,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,EAA+B,CAAC;YAChD,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,IAAI,EAA4B,CAAC;YAE7D,MAAM,qCAAqC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YAElE,MAAM,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logic.unit.test.d.ts","sourceRoot":"","sources":["../src/logic.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import BigNumber from "bignumber.js";
|
|
2
|
-
import { canStake, isAlreadyStaking, isValidNumString } from "./logic";
|
|
3
|
-
describe("canStake", () => {
|
|
4
|
-
it("should return false when acc has no funds", () => {
|
|
5
|
-
const accWithNoFunds = {
|
|
6
|
-
balance: new BigNumber(0),
|
|
7
|
-
};
|
|
8
|
-
expect(canStake(accWithNoFunds)).toEqual(false);
|
|
9
|
-
});
|
|
10
|
-
it("should return true when acc has funds", () => {
|
|
11
|
-
const accWithFunds = {
|
|
12
|
-
balance: new BigNumber(1),
|
|
13
|
-
};
|
|
14
|
-
expect(canStake(accWithFunds)).toEqual(true);
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
describe("isAlreadyStaking", () => {
|
|
18
|
-
it("should return false when acc isn't delegating", () => {
|
|
19
|
-
const noResourcesAcc = {};
|
|
20
|
-
expect(isAlreadyStaking(noResourcesAcc)).toEqual(false);
|
|
21
|
-
const noDelegationAcc = {
|
|
22
|
-
cardanoResources: {},
|
|
23
|
-
};
|
|
24
|
-
expect(isAlreadyStaking(noDelegationAcc)).toEqual(false);
|
|
25
|
-
const noPoolIdAcc = { cardanoResources: { delegation: {} } };
|
|
26
|
-
expect(isAlreadyStaking(noPoolIdAcc)).toEqual(false);
|
|
27
|
-
});
|
|
28
|
-
it("should return true when acc is delegating", () => {
|
|
29
|
-
const noResourcesAcc = {
|
|
30
|
-
cardanoResources: { delegation: { poolId: "itspoolid" } },
|
|
31
|
-
};
|
|
32
|
-
expect(isAlreadyStaking(noResourcesAcc)).toEqual(true);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
describe("isValidNumString", () => {
|
|
36
|
-
it("should return false for invalid number", () => {
|
|
37
|
-
expect(isValidNumString("")).toEqual(false);
|
|
38
|
-
expect(isValidNumString(undefined)).toEqual(false);
|
|
39
|
-
expect(isValidNumString(null)).toEqual(false);
|
|
40
|
-
expect(isValidNumString({})).toEqual(false);
|
|
41
|
-
expect(isValidNumString([])).toEqual(false);
|
|
42
|
-
});
|
|
43
|
-
it("should return true for valid number", () => {
|
|
44
|
-
expect(isValidNumString(123)).toEqual(true);
|
|
45
|
-
expect(isValidNumString(123.321)).toEqual(true);
|
|
46
|
-
expect(isValidNumString("123")).toEqual(true);
|
|
47
|
-
expect(isValidNumString("123.321")).toEqual(true);
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
//# sourceMappingURL=logic.unit.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logic.unit.test.js","sourceRoot":"","sources":["../src/logic.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"synchronisation.unit.test.d.ts","sourceRoot":"","sources":["../src/synchronisation.unit.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
import BigNumber from "bignumber.js";
|
|
2
|
-
import { getDelegationInfo } from "./api/getDelegationInfo";
|
|
3
|
-
import { makeGetAccountShape } from "./synchronisation";
|
|
4
|
-
import { getTransactions } from "./api/getTransactions";
|
|
5
|
-
import { buildSubAccounts } from "./buildSubAccounts";
|
|
6
|
-
import { fetchNetworkInfo } from "./api/getNetworkInfo";
|
|
7
|
-
jest.mock("./buildSubAccounts");
|
|
8
|
-
jest.mock("./api/getTransactions");
|
|
9
|
-
jest.mock("./api/getNetworkInfo");
|
|
10
|
-
jest.mock("./api/getDelegationInfo");
|
|
11
|
-
describe("makeGetAccountShape", () => {
|
|
12
|
-
let signerContext;
|
|
13
|
-
let shape;
|
|
14
|
-
let accountShapeInfo;
|
|
15
|
-
let getTransactionsMock;
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
const pubKeyMock = {
|
|
18
|
-
chainCodeHex: "chainCodeHex",
|
|
19
|
-
publicKeyHex: "publicKeyHex",
|
|
20
|
-
};
|
|
21
|
-
const fakeSigner = {
|
|
22
|
-
getAddress: jest.fn(),
|
|
23
|
-
sign: jest.fn(),
|
|
24
|
-
getPublicKey: jest.fn().mockResolvedValue(pubKeyMock),
|
|
25
|
-
};
|
|
26
|
-
signerContext = (_, fn) => fn(fakeSigner);
|
|
27
|
-
shape = makeGetAccountShape(signerContext);
|
|
28
|
-
accountShapeInfo = {
|
|
29
|
-
currency: { id: "cardano" },
|
|
30
|
-
address: "add",
|
|
31
|
-
index: 0,
|
|
32
|
-
initialAccount: {
|
|
33
|
-
cardanoResources: {
|
|
34
|
-
utxos: [
|
|
35
|
-
{
|
|
36
|
-
hash: "hash",
|
|
37
|
-
index: 0,
|
|
38
|
-
address: "addr",
|
|
39
|
-
amount: new BigNumber(1),
|
|
40
|
-
tokens: [],
|
|
41
|
-
paymentCredential: {
|
|
42
|
-
key: "key",
|
|
43
|
-
path: {
|
|
44
|
-
purpose: 1852,
|
|
45
|
-
coin: 1815,
|
|
46
|
-
account: 0,
|
|
47
|
-
chain: 0,
|
|
48
|
-
index: 0,
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
},
|
|
54
|
-
},
|
|
55
|
-
derivationPath: "",
|
|
56
|
-
derivationMode: "cardano",
|
|
57
|
-
deviceId: "id",
|
|
58
|
-
};
|
|
59
|
-
const buildSubAccountsMock = jest.mocked(buildSubAccounts);
|
|
60
|
-
buildSubAccountsMock.mockReturnValue([]);
|
|
61
|
-
getTransactionsMock = jest.mocked(getTransactions);
|
|
62
|
-
const getNetworkInfoMock = jest.mocked(fetchNetworkInfo);
|
|
63
|
-
getNetworkInfoMock.mockReturnValue(Promise.resolve({ protocolParams: { lovelacePerUtxoWord: "1" } }));
|
|
64
|
-
});
|
|
65
|
-
afterEach(() => {
|
|
66
|
-
jest.resetAllMocks();
|
|
67
|
-
});
|
|
68
|
-
describe("balance", () => {
|
|
69
|
-
it("should return 0 balance when there is no utxos", async () => {
|
|
70
|
-
getTransactionsMock.mockReturnValue(Promise.resolve({
|
|
71
|
-
transactions: [],
|
|
72
|
-
externalCredentials: [
|
|
73
|
-
{ path: { index: 0 }, networkId: "id", isUsed: false, key: "" },
|
|
74
|
-
],
|
|
75
|
-
internalCredentials: [],
|
|
76
|
-
blockHeight: 0,
|
|
77
|
-
}));
|
|
78
|
-
const result = await shape(accountShapeInfo, { paginationConfig: {} });
|
|
79
|
-
expect(result.balance).toEqual(new BigNumber(0));
|
|
80
|
-
});
|
|
81
|
-
it("should return the sum of utxos with delegation reward value", async () => {
|
|
82
|
-
getTransactionsMock.mockReturnValue(Promise.resolve({
|
|
83
|
-
transactions: [],
|
|
84
|
-
externalCredentials: [
|
|
85
|
-
{ path: { index: 0 }, networkId: "id", isUsed: false, key: "" },
|
|
86
|
-
],
|
|
87
|
-
internalCredentials: [
|
|
88
|
-
{
|
|
89
|
-
isUsed: true,
|
|
90
|
-
key: "cred",
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
blockHeight: 0,
|
|
94
|
-
}));
|
|
95
|
-
const getDelegationInfoMock = jest.mocked(getDelegationInfo);
|
|
96
|
-
getDelegationInfoMock.mockReturnValue(Promise.resolve({ rewards: new BigNumber(42) }));
|
|
97
|
-
const result = await shape(accountShapeInfo, { paginationConfig: {} });
|
|
98
|
-
expect(result.balance).toEqual(new BigNumber(42));
|
|
99
|
-
});
|
|
100
|
-
});
|
|
101
|
-
describe("spendableBalance", () => {
|
|
102
|
-
it("should return 0 spendable balance when there is no utxos", async () => {
|
|
103
|
-
const getTransactionsMock = jest.mocked(getTransactions);
|
|
104
|
-
getTransactionsMock.mockReturnValue(Promise.resolve({
|
|
105
|
-
transactions: [],
|
|
106
|
-
externalCredentials: [
|
|
107
|
-
{
|
|
108
|
-
isUsed: false,
|
|
109
|
-
key: "00000000000000000000000000000000000000000000000000000000",
|
|
110
|
-
path: {
|
|
111
|
-
purpose: 1852,
|
|
112
|
-
coin: 1815,
|
|
113
|
-
account: 0,
|
|
114
|
-
chain: 0,
|
|
115
|
-
index: 0,
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
],
|
|
119
|
-
internalCredentials: [],
|
|
120
|
-
}));
|
|
121
|
-
const result = await shape(accountShapeInfo, { paginationConfig: {} });
|
|
122
|
-
expect(result.spendableBalance).toEqual(new BigNumber(0));
|
|
123
|
-
});
|
|
124
|
-
// it("should return the sum of utxos minus ada minimum for tokens", async () => {});
|
|
125
|
-
});
|
|
126
|
-
describe("delegation", () => {
|
|
127
|
-
it("should check dRepHex and rewards are available", async () => {
|
|
128
|
-
getTransactionsMock.mockReturnValue(Promise.resolve({
|
|
129
|
-
blockHeight: 0,
|
|
130
|
-
transactions: [],
|
|
131
|
-
externalCredentials: [{ isUsed: false, key: "0", path: {} }],
|
|
132
|
-
internalCredentials: [],
|
|
133
|
-
}));
|
|
134
|
-
const getDelegationInfoMock = jest.mocked(getDelegationInfo);
|
|
135
|
-
getDelegationInfoMock.mockReturnValue(Promise.resolve({
|
|
136
|
-
rewards: new BigNumber(10),
|
|
137
|
-
dRepHex: "dRepHex",
|
|
138
|
-
}));
|
|
139
|
-
const result = await shape(accountShapeInfo, { paginationConfig: {} });
|
|
140
|
-
expect(result.cardanoResources?.delegation?.dRepHex).toEqual("dRepHex");
|
|
141
|
-
expect(result.cardanoResources?.delegation?.rewards).toEqual(new BigNumber(10));
|
|
142
|
-
});
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
//# sourceMappingURL=synchronisation.unit.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"synchronisation.unit.test.js","sourceRoot":"","sources":["../src/synchronisation.unit.test.ts"],"names":[],"mappings":"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"}
|