@tomo-inc/chains-service 0.0.23 → 0.0.24
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/dist/index.cjs +30 -23
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +31 -24
- package/package.json +2 -1
- package/project.json +1 -1
- package/src/__tests__/config.test.ts +46 -0
- package/src/__tests__/dogecoin-utils.test.ts +147 -0
- package/src/__tests__/evm-utils.test.ts +133 -0
- package/src/__tests__/index.test.ts +40 -0
- package/src/__tests__/services.test.ts +285 -0
- package/src/__tests__/solana-utils.test.ts +131 -0
- package/src/__tests__/utils.test.ts +52 -0
- package/src/__tests__/wallet.test.ts +350 -0
- package/src/api/__tests__/base.test.ts +146 -0
- package/src/api/__tests__/index.test.ts +51 -0
- package/src/api/__tests__/network.test.ts +153 -0
- package/src/api/__tests__/token.test.ts +231 -2
- package/src/api/__tests__/transaction.test.ts +121 -6
- package/src/api/__tests__/user.test.ts +237 -3
- package/src/api/__tests__/wallet.test.ts +174 -4
- package/src/api/network.ts +9 -1
- package/src/api/utils/__tests__/index.test.ts +91 -0
- package/src/api/utils/__tests__/signature.test.ts +124 -0
- package/src/api/utils/index.ts +6 -2
- package/src/base/__tests__/network.test.ts +119 -0
- package/src/base/__tests__/service.test.ts +68 -0
- package/src/base/__tests__/token.test.ts +123 -0
- package/src/base/__tests__/transaction.test.ts +210 -0
- package/src/config.ts +1 -1
- package/src/dogecoin/__tests__/base.test.ts +76 -0
- package/src/dogecoin/__tests__/rpc.test.ts +465 -0
- package/src/dogecoin/__tests__/service-extended.test.ts +420 -0
- package/src/dogecoin/__tests__/utils-doge.test.ts +244 -0
- package/src/dogecoin/__tests__/utils-extended.test.ts +323 -0
- package/src/dogecoin/base.ts +1 -0
- package/src/dogecoin/config.ts +2 -2
- package/src/dogecoin/rpc.ts +10 -1
- package/src/dogecoin/service.ts +9 -5
- package/src/evm/__tests__/rpc.test.ts +132 -0
- package/src/evm/__tests__/service.test.ts +535 -0
- package/src/evm/__tests__/utils.test.ts +170 -0
- package/src/evm/utils.ts +2 -2
- package/src/solana/__tests__/service.test.ts +425 -0
- package/src/solana/__tests__/utils.test.ts +937 -0
- package/src/solana/config.ts +1 -1
- package/src/solana/service.ts +2 -0
- package/src/solana/utils.ts +2 -16
- package/src/utils/index.ts +1 -1
- package/vitest.config.ts +13 -0
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { CONFIG, SIGN_CONFIG } from "../__tests__/config";
|
|
2
2
|
import { TokenAPIs } from "../token";
|
|
3
3
|
import { beforeEach, describe, it, expect, vi, afterEach } from "vitest";
|
|
4
|
+
import axios from "axios";
|
|
5
|
+
|
|
6
|
+
// Mock axios
|
|
7
|
+
vi.mock("axios", () => ({
|
|
8
|
+
default: {
|
|
9
|
+
create: vi.fn(() => ({
|
|
10
|
+
post: vi.fn(),
|
|
11
|
+
get: vi.fn(),
|
|
12
|
+
interceptors: {
|
|
13
|
+
request: { use: vi.fn() },
|
|
14
|
+
response: { use: vi.fn() },
|
|
15
|
+
},
|
|
16
|
+
})),
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
4
19
|
|
|
5
20
|
describe("api", () => {
|
|
6
21
|
let service: TokenAPIs;
|
|
@@ -20,7 +35,8 @@ describe("api", () => {
|
|
|
20
35
|
};
|
|
21
36
|
|
|
22
37
|
beforeEach(() => {
|
|
23
|
-
|
|
38
|
+
// Reset instance before each test
|
|
39
|
+
(TokenAPIs as any).instance = undefined;
|
|
24
40
|
vi.clearAllMocks();
|
|
25
41
|
});
|
|
26
42
|
|
|
@@ -30,14 +46,70 @@ describe("api", () => {
|
|
|
30
46
|
|
|
31
47
|
describe("token", () => {
|
|
32
48
|
it("getTokenInfo", async () => {
|
|
49
|
+
const mockResponse = {
|
|
50
|
+
data: {
|
|
51
|
+
code: "00000",
|
|
52
|
+
data: {
|
|
53
|
+
address: params.address,
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
const mockGet = vi.fn().mockResolvedValue(mockResponse);
|
|
58
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
59
|
+
post: vi.fn(),
|
|
60
|
+
get: mockGet,
|
|
61
|
+
interceptors: {
|
|
62
|
+
request: { use: vi.fn() },
|
|
63
|
+
response: { use: vi.fn() },
|
|
64
|
+
},
|
|
65
|
+
} as any);
|
|
66
|
+
|
|
67
|
+
// Create service instance after mock is set
|
|
68
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
33
69
|
const result = await service.getTokenInfo(params);
|
|
34
70
|
console.log("getTokenInfo", result);
|
|
35
71
|
|
|
36
72
|
expect(result?.data?.address).toBe(params.address);
|
|
37
|
-
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("getTokenInfo should throw on request error", async () => {
|
|
76
|
+
const mockGet = vi.fn().mockRejectedValue(new Error("Network error"));
|
|
77
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
78
|
+
post: vi.fn(),
|
|
79
|
+
get: mockGet,
|
|
80
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
81
|
+
} as any);
|
|
82
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
83
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
84
|
+
await expect(service.getTokenInfo(params)).rejects.toThrow("Network error");
|
|
85
|
+
expect(consoleSpy).toHaveBeenCalled();
|
|
86
|
+
consoleSpy.mockRestore();
|
|
38
87
|
});
|
|
39
88
|
|
|
40
89
|
it("getTokenRisk", async () => {
|
|
90
|
+
const mockResponse = {
|
|
91
|
+
data: {
|
|
92
|
+
code: "0",
|
|
93
|
+
data: [
|
|
94
|
+
{
|
|
95
|
+
chainIndex: params.chainIndex,
|
|
96
|
+
tokenAddress: params.tokenAddress,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
const mockPost = vi.fn().mockResolvedValue(mockResponse);
|
|
102
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
103
|
+
post: mockPost,
|
|
104
|
+
get: vi.fn(),
|
|
105
|
+
interceptors: {
|
|
106
|
+
request: { use: vi.fn() },
|
|
107
|
+
response: { use: vi.fn() },
|
|
108
|
+
},
|
|
109
|
+
} as any);
|
|
110
|
+
|
|
111
|
+
// Create service instance after mock is set
|
|
112
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
41
113
|
const result = await service.getTokenRisk(params);
|
|
42
114
|
console.log("getTokenRisk", result);
|
|
43
115
|
|
|
@@ -45,7 +117,36 @@ describe("api", () => {
|
|
|
45
117
|
expect(result?.data?.tokenAddress).toBe(params.tokenAddress);
|
|
46
118
|
});
|
|
47
119
|
|
|
120
|
+
it("getTokenRisk should throw when chainIndex or address is missing", async () => {
|
|
121
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
122
|
+
post: vi.fn(),
|
|
123
|
+
get: vi.fn(),
|
|
124
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
125
|
+
} as any);
|
|
126
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
127
|
+
await expect(service.getTokenRisk({ chainIndex: 1 } as any)).rejects.toThrow("chainName or tokenAddress is required");
|
|
128
|
+
await expect(service.getTokenRisk({ address: "0x" } as any)).rejects.toThrow("chainName or tokenAddress is required");
|
|
129
|
+
});
|
|
130
|
+
|
|
48
131
|
it("deleteCustomToken", async () => {
|
|
132
|
+
const mockResponse = {
|
|
133
|
+
data: {
|
|
134
|
+
code: 0,
|
|
135
|
+
data: {},
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
const mockGet = vi.fn().mockResolvedValue(mockResponse);
|
|
139
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
140
|
+
post: vi.fn(),
|
|
141
|
+
get: mockGet,
|
|
142
|
+
interceptors: {
|
|
143
|
+
request: { use: vi.fn() },
|
|
144
|
+
response: { use: vi.fn() },
|
|
145
|
+
},
|
|
146
|
+
} as any);
|
|
147
|
+
|
|
148
|
+
// Create service instance after mock is set
|
|
149
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
49
150
|
const result = await service.deleteCustomToken(params);
|
|
50
151
|
console.log("deleteCustomToken", result);
|
|
51
152
|
|
|
@@ -75,6 +176,25 @@ describe("api", () => {
|
|
|
75
176
|
});
|
|
76
177
|
|
|
77
178
|
it("syncCustomToken", async () => {
|
|
179
|
+
const mockResponse = {
|
|
180
|
+
data: {
|
|
181
|
+
code: "00000",
|
|
182
|
+
success: true,
|
|
183
|
+
data: {},
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
const mockPost = vi.fn().mockResolvedValue(mockResponse);
|
|
187
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
188
|
+
post: mockPost,
|
|
189
|
+
get: vi.fn(),
|
|
190
|
+
interceptors: {
|
|
191
|
+
request: { use: vi.fn() },
|
|
192
|
+
response: { use: vi.fn() },
|
|
193
|
+
},
|
|
194
|
+
} as any);
|
|
195
|
+
|
|
196
|
+
// Create service instance after mock is set
|
|
197
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
78
198
|
const result = await service.syncCustomToken({
|
|
79
199
|
walletId: params.walletId,
|
|
80
200
|
chainId: params.chainId,
|
|
@@ -86,6 +206,7 @@ describe("api", () => {
|
|
|
86
206
|
});
|
|
87
207
|
console.log("syncCustomToken", result);
|
|
88
208
|
|
|
209
|
+
expect(result).toBeDefined();
|
|
89
210
|
expect(typeof result.success).toBe("boolean");
|
|
90
211
|
});
|
|
91
212
|
|
|
@@ -107,6 +228,13 @@ describe("api", () => {
|
|
|
107
228
|
});
|
|
108
229
|
|
|
109
230
|
it("queryRemoteTokens", async () => {
|
|
231
|
+
const mockGet = vi.fn().mockResolvedValue({ data: { code: "0", data: [] } });
|
|
232
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
233
|
+
post: vi.fn(),
|
|
234
|
+
get: mockGet,
|
|
235
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
236
|
+
} as any);
|
|
237
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
110
238
|
const params = {
|
|
111
239
|
keyword: "2NxhyCKNRp7qwhJj9rWHvqZqk6oA9aehDm8XWprDpump",
|
|
112
240
|
};
|
|
@@ -116,5 +244,106 @@ describe("api", () => {
|
|
|
116
244
|
|
|
117
245
|
expect(typeof result.success).toBe("boolean");
|
|
118
246
|
});
|
|
247
|
+
|
|
248
|
+
it("queryRemoteTokens should throw when keyword is empty", async () => {
|
|
249
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
250
|
+
post: vi.fn(),
|
|
251
|
+
get: vi.fn(),
|
|
252
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
253
|
+
} as any);
|
|
254
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
255
|
+
await expect(service.queryRemoteTokens({ keyword: "" })).rejects.toThrow("Params is required");
|
|
256
|
+
await expect(service.queryRemoteTokens({} as any)).rejects.toThrow("Params is required");
|
|
257
|
+
});
|
|
258
|
+
|
|
259
|
+
it("addCustomToken should throw on request error", async () => {
|
|
260
|
+
const mockPost = vi.fn().mockRejectedValue(new Error("API error"));
|
|
261
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
262
|
+
post: mockPost,
|
|
263
|
+
get: vi.fn(),
|
|
264
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
265
|
+
} as any);
|
|
266
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
267
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
268
|
+
await expect(service.addCustomToken(params)).rejects.toThrow("API error");
|
|
269
|
+
consoleSpy.mockRestore();
|
|
270
|
+
});
|
|
271
|
+
|
|
272
|
+
it("deleteCustomToken should throw on request error", async () => {
|
|
273
|
+
const mockGet = vi.fn().mockRejectedValue(new Error("API error"));
|
|
274
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
275
|
+
post: vi.fn(),
|
|
276
|
+
get: mockGet,
|
|
277
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
278
|
+
} as any);
|
|
279
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
280
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
281
|
+
await expect(service.deleteCustomToken(params)).rejects.toThrow("API error");
|
|
282
|
+
consoleSpy.mockRestore();
|
|
283
|
+
});
|
|
284
|
+
|
|
285
|
+
it("addMultiToken should throw on request error", async () => {
|
|
286
|
+
const mockPost = vi.fn().mockRejectedValue(new Error("API error"));
|
|
287
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
288
|
+
post: mockPost,
|
|
289
|
+
get: vi.fn(),
|
|
290
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
291
|
+
} as any);
|
|
292
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
293
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
294
|
+
await expect(service.addMultiToken(params)).rejects.toThrow("API error");
|
|
295
|
+
consoleSpy.mockRestore();
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
it("removeMultiToken should throw on request error", async () => {
|
|
299
|
+
const mockGet = vi.fn().mockRejectedValue(new Error("API error"));
|
|
300
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
301
|
+
post: vi.fn(),
|
|
302
|
+
get: mockGet,
|
|
303
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
304
|
+
} as any);
|
|
305
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
306
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
307
|
+
await expect(service.removeMultiToken(params)).rejects.toThrow("API error");
|
|
308
|
+
consoleSpy.mockRestore();
|
|
309
|
+
});
|
|
310
|
+
|
|
311
|
+
it("syncCustomToken should throw on request error", async () => {
|
|
312
|
+
const mockPost = vi.fn().mockRejectedValue(new Error("API error"));
|
|
313
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
314
|
+
post: mockPost,
|
|
315
|
+
get: vi.fn(),
|
|
316
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
317
|
+
} as any);
|
|
318
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
319
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
320
|
+
await expect(
|
|
321
|
+
service.syncCustomToken({
|
|
322
|
+
walletId: params.walletId,
|
|
323
|
+
chainId: params.chainId,
|
|
324
|
+
address: params.address,
|
|
325
|
+
name: params.name,
|
|
326
|
+
symbol: params.symbol,
|
|
327
|
+
decimals: params.decimals,
|
|
328
|
+
logo: params.logo,
|
|
329
|
+
}),
|
|
330
|
+
).rejects.toThrow("API error");
|
|
331
|
+
consoleSpy.mockRestore();
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
it("getTokenBalance should throw on request error", async () => {
|
|
335
|
+
const mockGet = vi.fn().mockRejectedValue(new Error("API error"));
|
|
336
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
337
|
+
post: vi.fn(),
|
|
338
|
+
get: mockGet,
|
|
339
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
340
|
+
} as any);
|
|
341
|
+
service = TokenAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
342
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
343
|
+
await expect(
|
|
344
|
+
service.getTokenBalance({ walletId: params.walletId, assetsType: "multi" }),
|
|
345
|
+
).rejects.toThrow("API error");
|
|
346
|
+
consoleSpy.mockRestore();
|
|
347
|
+
});
|
|
119
348
|
});
|
|
120
349
|
});
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
import { CONFIG, SIGN_CONFIG } from "./config";
|
|
2
2
|
import { TransactionAPIs } from "../transaction";
|
|
3
3
|
import { beforeEach, describe, it, expect, vi, afterEach } from "vitest";
|
|
4
|
+
import axios from "axios";
|
|
5
|
+
|
|
6
|
+
// Mock axios
|
|
7
|
+
vi.mock("axios", () => ({
|
|
8
|
+
default: {
|
|
9
|
+
create: vi.fn(() => ({
|
|
10
|
+
post: vi.fn(),
|
|
11
|
+
get: vi.fn(),
|
|
12
|
+
interceptors: {
|
|
13
|
+
request: { use: vi.fn() },
|
|
14
|
+
response: { use: vi.fn() },
|
|
15
|
+
},
|
|
16
|
+
})),
|
|
17
|
+
},
|
|
18
|
+
}));
|
|
4
19
|
|
|
5
20
|
describe("api", () => {
|
|
6
21
|
let service: TransactionAPIs;
|
|
@@ -15,7 +30,8 @@ describe("api", () => {
|
|
|
15
30
|
};
|
|
16
31
|
|
|
17
32
|
beforeEach(() => {
|
|
18
|
-
|
|
33
|
+
// Reset instance before each test
|
|
34
|
+
(TransactionAPIs as any).instance = undefined;
|
|
19
35
|
vi.clearAllMocks();
|
|
20
36
|
});
|
|
21
37
|
|
|
@@ -25,17 +41,56 @@ describe("api", () => {
|
|
|
25
41
|
|
|
26
42
|
describe("transaction", () => {
|
|
27
43
|
it("getTransactions", async () => {
|
|
44
|
+
const mockResponse = {
|
|
45
|
+
data: {
|
|
46
|
+
data: {
|
|
47
|
+
cursor: "",
|
|
48
|
+
transactionList: [],
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
const mockGet = vi.fn().mockResolvedValue(mockResponse);
|
|
53
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
54
|
+
post: vi.fn(),
|
|
55
|
+
get: mockGet,
|
|
56
|
+
interceptors: {
|
|
57
|
+
request: { use: vi.fn() },
|
|
58
|
+
response: { use: vi.fn() },
|
|
59
|
+
},
|
|
60
|
+
} as any);
|
|
61
|
+
|
|
62
|
+
// Create service instance after mock is set
|
|
63
|
+
service = TransactionAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
28
64
|
const result = await service.getTransactions(params);
|
|
29
65
|
console.log("getTransactions", result);
|
|
30
66
|
|
|
31
|
-
expect(
|
|
67
|
+
expect(result).toBeDefined();
|
|
68
|
+
expect(typeof result).toBe("object");
|
|
32
69
|
});
|
|
33
70
|
|
|
34
71
|
it("getTransaction", async () => {
|
|
72
|
+
const mockResponse = {
|
|
73
|
+
data: {
|
|
74
|
+
data: {},
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
const mockGet = vi.fn().mockResolvedValue(mockResponse);
|
|
78
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
79
|
+
post: vi.fn(),
|
|
80
|
+
get: mockGet,
|
|
81
|
+
interceptors: {
|
|
82
|
+
request: { use: vi.fn() },
|
|
83
|
+
response: { use: vi.fn() },
|
|
84
|
+
},
|
|
85
|
+
} as any);
|
|
86
|
+
|
|
87
|
+
// Create service instance after mock is set
|
|
88
|
+
service = TransactionAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
35
89
|
const result = await service.getTransaction(params);
|
|
36
90
|
console.log("getTransaction", result);
|
|
37
91
|
|
|
38
|
-
expect(
|
|
92
|
+
expect(result).toBeDefined();
|
|
93
|
+
expect(typeof result).toBe("object");
|
|
39
94
|
});
|
|
40
95
|
|
|
41
96
|
it("queryGasInfo", async () => {
|
|
@@ -53,13 +108,73 @@ describe("api", () => {
|
|
|
53
108
|
value: "1000000",
|
|
54
109
|
};
|
|
55
110
|
|
|
111
|
+
const mockResponse = {
|
|
112
|
+
data: {
|
|
113
|
+
code: 0,
|
|
114
|
+
result: {},
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
const mockPost = vi.fn().mockResolvedValue(mockResponse);
|
|
118
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
119
|
+
post: mockPost,
|
|
120
|
+
get: vi.fn(),
|
|
121
|
+
interceptors: {
|
|
122
|
+
request: { use: vi.fn() },
|
|
123
|
+
response: { use: vi.fn() },
|
|
124
|
+
},
|
|
125
|
+
} as any);
|
|
126
|
+
|
|
127
|
+
// Create service instance after mock is set
|
|
128
|
+
service = TransactionAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
56
129
|
const result = await service.queryGasInfo(params.chainType, gasParams);
|
|
57
130
|
console.log("queryGasInfo", result);
|
|
58
131
|
|
|
59
|
-
expect(
|
|
132
|
+
expect(result).toBeDefined();
|
|
133
|
+
expect(typeof result).toBe("object");
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
it("queryGasInfo should throw on request error", async () => {
|
|
137
|
+
const mockPost = vi.fn().mockRejectedValue(new Error("RPC error"));
|
|
138
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
139
|
+
post: mockPost,
|
|
140
|
+
get: vi.fn(),
|
|
141
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
142
|
+
} as any);
|
|
143
|
+
service = TransactionAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
144
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
145
|
+
await expect(service.queryGasInfo("EVM", { chainId: "1" } as any)).rejects.toThrow("RPC error");
|
|
146
|
+
consoleSpy.mockRestore();
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it("getTransactions should throw on request error", async () => {
|
|
150
|
+
const mockGet = vi.fn().mockRejectedValue(new Error("API error"));
|
|
151
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
152
|
+
post: vi.fn(),
|
|
153
|
+
get: mockGet,
|
|
154
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
155
|
+
} as any);
|
|
156
|
+
service = TransactionAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
157
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
158
|
+
await expect(service.getTransactions(params)).rejects.toThrow("API error");
|
|
159
|
+
consoleSpy.mockRestore();
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it("getTransaction should throw on request error", async () => {
|
|
163
|
+
const mockGet = vi.fn().mockRejectedValue(new Error("API error"));
|
|
164
|
+
vi.mocked(axios.create).mockReturnValue({
|
|
165
|
+
post: vi.fn(),
|
|
166
|
+
get: mockGet,
|
|
167
|
+
interceptors: { request: { use: vi.fn() }, response: { use: vi.fn() } },
|
|
168
|
+
} as any);
|
|
169
|
+
service = TransactionAPIs.getInstance(CONFIG, SIGN_CONFIG);
|
|
170
|
+
const consoleSpy = vi.spyOn(console, "error").mockImplementation(() => {});
|
|
171
|
+
await expect(service.getTransaction(params)).rejects.toThrow("API error");
|
|
172
|
+
consoleSpy.mockRestore();
|
|
60
173
|
});
|
|
61
174
|
|
|
62
|
-
|
|
175
|
+
// sendTransaction and getOrderStatus methods don't exist in TransactionAPIs
|
|
176
|
+
// These tests are skipped until the methods are implemented
|
|
177
|
+
it.skip("sendTransaction", async () => {
|
|
63
178
|
const sendParams = {
|
|
64
179
|
walletId: params.walletId,
|
|
65
180
|
chainIndex: params.chainIndex,
|
|
@@ -76,7 +191,7 @@ describe("api", () => {
|
|
|
76
191
|
expect(typeof result.success).toBe("boolean");
|
|
77
192
|
});
|
|
78
193
|
|
|
79
|
-
it("getOrderStatus", async () => {
|
|
194
|
+
it.skip("getOrderStatus", async () => {
|
|
80
195
|
const result = await service.getOrderStatus({ orderId: params.orderId });
|
|
81
196
|
console.log("getOrderStatus", result);
|
|
82
197
|
|