Skip to content

Commit 511e85a

Browse files
committed
fix(transaction-pay-controller): fix fiat utils test mocks and formatting after rpcRequest refactor
1 parent 2d2ce5b commit 511e85a

4 files changed

Lines changed: 36 additions & 35 deletions

File tree

packages/transaction-pay-controller/src/strategy/fiat/utils.test.ts

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Web3Provider } from '@ethersproject/providers';
21
import type { RampsOrder } from '@metamask/ramps-controller';
32
import type { TransactionMeta } from '@metamask/transaction-controller';
43
import { TransactionType } from '@metamask/transaction-controller';
@@ -15,11 +14,6 @@ import {
1514
resolveSourceAmountRaw,
1615
} from './utils';
1716

18-
jest.mock('@ethersproject/providers', () => ({
19-
...jest.requireActual('@ethersproject/providers'),
20-
Web3Provider: jest.fn(),
21-
}));
22-
2317
const TX_HASH_MOCK = '0xabc123';
2418
const WALLET_ADDRESS_MOCK = '0x1111111111111111111111111111111111111111' as Hex;
2519
const ERC20_ADDRESS_MOCK = '0x2222222222222222222222222222222222222222' as Hex;
@@ -210,23 +204,17 @@ describe('Fiat Utils', () => {
210204
messenger: resolveMessenger,
211205
findNetworkClientIdByChainIdMock,
212206
getNetworkClientByIdMock,
207+
getNetworkConfigurationByChainIdMock,
213208
getTokensControllerStateMock,
214209
getRemoteFeatureFlagControllerStateMock:
215210
resolveRemoteFeatureFlagControllerStateMock,
216211
} = getMessengerMock();
217212

218-
let mockGetTransactionReceipt: jest.Mock;
219-
let mockSend: jest.Mock;
220-
let mockGetTransaction: jest.Mock;
221-
222213
beforeEach(() => {
223214
jest.resetAllMocks();
224215

225-
mockGetTransactionReceipt = jest.fn();
226-
mockSend = jest.fn();
227-
mockGetTransaction = jest.fn();
228-
229216
findNetworkClientIdByChainIdMock.mockReturnValue(NETWORK_CLIENT_ID_MOCK);
217+
getNetworkConfigurationByChainIdMock.mockReturnValue(undefined);
230218
getNetworkClientByIdMock.mockReturnValue({
231219
provider: PROVIDER_MOCK,
232220
} as never);
@@ -255,16 +243,10 @@ describe('Fiat Utils', () => {
255243
allIgnoredTokens: {},
256244
allDetectedTokens: {},
257245
} as never);
258-
259-
(Web3Provider as unknown as jest.Mock).mockImplementation(() => ({
260-
getTransactionReceipt: mockGetTransactionReceipt,
261-
send: mockSend,
262-
getTransaction: mockGetTransaction,
263-
}));
264246
});
265247

266248
it('returns on-chain ERC-20 amount from receipt logs', async () => {
267-
mockGetTransactionReceipt.mockResolvedValue({
249+
(PROVIDER_MOCK.request as jest.Mock).mockResolvedValue({
268250
logs: [
269251
{
270252
address: ERC20_ADDRESS_MOCK,
@@ -297,11 +279,11 @@ describe('Fiat Utils', () => {
297279
});
298280

299281
expect(result).toBe('1500000');
300-
expect(mockGetTransactionReceipt).not.toHaveBeenCalled();
282+
expect(PROVIDER_MOCK.request).not.toHaveBeenCalled();
301283
});
302284

303285
it('falls back to cryptoAmount when receipt is null', async () => {
304-
mockGetTransactionReceipt.mockResolvedValue(null);
286+
(PROVIDER_MOCK.request as jest.Mock).mockResolvedValue(null);
305287

306288
const result = await resolveSourceAmountRaw({
307289
messenger: resolveMessenger,
@@ -314,7 +296,9 @@ describe('Fiat Utils', () => {
314296
});
315297

316298
it('falls back to cryptoAmount when on-chain read throws', async () => {
317-
mockGetTransactionReceipt.mockRejectedValue(new Error('Network error'));
299+
(PROVIDER_MOCK.request as jest.Mock).mockRejectedValue(
300+
new Error('Network error'),
301+
);
318302

319303
const result = await resolveSourceAmountRaw({
320304
messenger: resolveMessenger,
@@ -327,7 +311,7 @@ describe('Fiat Utils', () => {
327311
});
328312

329313
it('returns native amount from debug_traceTransaction', async () => {
330-
mockSend.mockResolvedValue({
314+
(PROVIDER_MOCK.request as jest.Mock).mockResolvedValue({
331315
to: WALLET_ADDRESS_MOCK.toLowerCase(),
332316
value: '0x1bc16d674ec80000',
333317
calls: [],
@@ -344,11 +328,17 @@ describe('Fiat Utils', () => {
344328
});
345329

346330
it('falls back to tx.value for native when trace is unsupported', async () => {
347-
mockSend.mockRejectedValue(new Error('Method not found'));
348-
mockGetTransaction.mockResolvedValue({
349-
to: WALLET_ADDRESS_MOCK.toLowerCase(),
350-
value: { toString: () => '2000000000000000000' },
351-
});
331+
(PROVIDER_MOCK.request as jest.Mock).mockImplementation(
332+
({ method }: { method: string }) => {
333+
if (method === 'debug_traceTransaction') {
334+
return Promise.reject(new Error('Method not found'));
335+
}
336+
return Promise.resolve({
337+
to: WALLET_ADDRESS_MOCK.toLowerCase(),
338+
value: '0x1bc16d674ec80000',
339+
});
340+
},
341+
);
352342

353343
const result = await resolveSourceAmountRaw({
354344
messenger: resolveMessenger,

packages/transaction-pay-controller/src/utils/provider.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,11 @@ describe('provider utils', () => {
138138
provider: { request: requestMock },
139139
} as never);
140140

141-
await rpcRequest({ messenger, chainId: CHAIN_ID_MOCK, method: 'eth_blockNumber' });
141+
await rpcRequest({
142+
messenger,
143+
chainId: CHAIN_ID_MOCK,
144+
method: 'eth_blockNumber',
145+
});
142146

143147
expect(requestMock).toHaveBeenCalledWith({
144148
method: 'eth_blockNumber',
@@ -154,7 +158,11 @@ describe('provider utils', () => {
154158
} as never);
155159

156160
await expect(
157-
rpcRequest({ messenger, chainId: CHAIN_ID_MOCK, method: 'eth_blockNumber' }),
161+
rpcRequest({
162+
messenger,
163+
chainId: CHAIN_ID_MOCK,
164+
method: 'eth_blockNumber',
165+
}),
158166
).rejects.toBe(error);
159167
});
160168

packages/transaction-pay-controller/src/utils/token.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,5 +450,3 @@ export function normalizeTokenAddress(
450450

451451
return tokenAddress;
452452
}
453-
454-

packages/transaction-pay-controller/src/utils/transaction.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,12 @@ export async function getTransferredAmountFromTxHash({
400400
tokenAddress.toLowerCase() === getNativeToken(chainId).toLowerCase();
401401

402402
if (isNative) {
403-
return await getNativeTransferAmount(messenger, chainId, txHash, walletAddress);
403+
return await getNativeTransferAmount(
404+
messenger,
405+
chainId,
406+
txHash,
407+
walletAddress,
408+
);
404409
}
405410

406411
return await getErc20TransferAmount(

0 commit comments

Comments
 (0)