Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions eslint-suppressions.json
Original file line number Diff line number Diff line change
Expand Up @@ -624,11 +624,6 @@
"count": 3
}
},
"packages/bridge-status-controller/src/utils/transaction.ts": {
"@typescript-eslint/prefer-nullish-coalescing": {
"count": 1
}
},
"packages/chain-agnostic-permission/src/caip25Permission.ts": {
"@typescript-eslint/explicit-function-return-type": {
"count": 11
Expand Down
4 changes: 4 additions & 0 deletions packages/bridge-status-controller/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Changed

- Moved more controller calls from bridge-status-controller.ts to their own utils ([#8215](https://github.com/MetaMask/core/pull/8215))

## [70.0.0]

### Changed
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { TransactionStatus } from '@metamask/transaction-controller';

import { IntentManager } from './bridge-status-controller.intent';
import type { BridgeHistoryItem } from './types';
import { postSubmitOrder } from './utils/intent-api';
import { IntentOrderStatus } from './utils/validators';

const makeHistoryItem = (
Expand Down Expand Up @@ -259,7 +260,7 @@ describe('IntentManager', () => {
expect(result?.bridgeStatus).toBeDefined();
});

it('getIntentTransactionStatus passes empty txHash fallback when srcChain is missing', async () => {
it('getIntentTransactionStatus passes undefined txHash when srcChain is missing', async () => {
const order = {
id: 'order-1',
status: IntentOrderStatus.SUBMITTED,
Expand All @@ -286,7 +287,7 @@ describe('IntentManager', () => {
);

expect(result).toBeDefined();
expect(result?.bridgeStatus?.status.srcChain.txHash).toBe('');
expect(result?.bridgeStatus?.status.srcChain.txHash).toBeUndefined();
});

it('syncTransactionFromIntentStatus cleans up intent statuses map when order is complete', async () => {
Expand All @@ -298,7 +299,8 @@ describe('IntentManager', () => {
const completedOrder = {
id: 'order-3',
status: IntentOrderStatus.COMPLETED,
txHash: '0xhash',
txHash:
'0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc',
metadata: {},
};
const mockCall = jest.fn((...args: unknown[]) => {
Expand All @@ -321,7 +323,11 @@ describe('IntentManager', () => {
originalTransactionId: 'tx-2',
status: {
status: StatusTypes.PENDING,
srcChain: { chainId: 1, txHash: '0xhash' },
srcChain: {
chainId: 1,
txHash:
'0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc',
},
},
});
await manager.getIntentTransactionStatus(
Expand All @@ -348,12 +354,12 @@ describe('IntentManager', () => {
[
"TransactionController:updateTransaction",
{
"hash": "0xhash",
"hash": "0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc",
"id": "tx-2",
"status": "confirmed",
"txReceipt": {
"status": "0x1",
"transactionHash": "0xhash",
"transactionHash": "0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc",
},
},
"BridgeStatusController - Intent order status updated: completed",
Expand All @@ -371,7 +377,8 @@ describe('IntentManager', () => {
const failedOrder = {
id: 'order-3',
status: IntentOrderStatus.FAILED,
txHash: '0xhash',
txHash:
'0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc',
metadata: {},
};
const mockCall = jest.fn((...args: unknown[]) => {
Expand Down Expand Up @@ -421,12 +428,12 @@ describe('IntentManager', () => {
[
"TransactionController:updateTransaction",
{
"hash": "0xhash",
"hash": "0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc",
"id": "tx-2",
"status": "failed",
"txReceipt": {
"status": "0x0",
"transactionHash": "0xhash",
"transactionHash": "0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc",
},
},
"BridgeStatusController - Intent order status updated: failed",
Expand Down Expand Up @@ -480,14 +487,18 @@ describe('IntentManager', () => {
const submittedOrder = {
id: 'order-3',
status: IntentOrderStatus.SUBMITTED,
txHash: '0xhash',
txHash:
'0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc',
metadata: {},
};
const mockCall = jest.fn((...args: unknown[]) => {
const [method] = args;
if (method === 'TransactionController:updateTransaction') {
return { transactions: [existingTxMeta] };
}
if (method === 'AuthenticationController:getBearerToken') {
return 'token';
}
return { transactions: [existingTxMeta] };
});
const manager = new IntentManager(
Expand Down Expand Up @@ -520,7 +531,8 @@ describe('IntentManager', () => {
expect.objectContaining({
id: 'tx-2',
txReceipt: expect.objectContaining({
transactionHash: '0xhash',
transactionHash:
'0xb756e7c856f1bf6ca3c3feda2067b85574383fb1f4ce95b175c2d447c932cdcc',
status: '0x0',
}),
}),
Expand Down Expand Up @@ -581,7 +593,7 @@ describe('IntentManager', () => {
[
"TransactionController:updateTransaction",
{
"hash": undefined,
"hash": "",
"id": "tx-2",
"status": "submitted",
},
Expand Down Expand Up @@ -652,8 +664,9 @@ describe('IntentManager', () => {
status: IntentOrderStatus.SUBMITTED,
metadata: {},
};
const fetchFn = jest.fn().mockResolvedValue(expectedOrder);
const manager = new IntentManager(createManagerOptions({ fetchFn }));
const { customBridgeApiBaseUrl, fetchFn } = createManagerOptions({
fetchFn: jest.fn().mockResolvedValue(expectedOrder),
});

const params = {
srcChainId: 1,
Expand All @@ -664,7 +677,13 @@ describe('IntentManager', () => {
aggregatorId: 'cowswap',
};

const result = await manager.submitIntent(params, BridgeClientId.EXTENSION);
const result = await postSubmitOrder({
params,
clientId: BridgeClientId.EXTENSION,
jwt: undefined,
fetchFn,
bridgeApiBaseUrl: customBridgeApiBaseUrl,
});

expect(result).toStrictEqual(expectedOrder);
});
Expand Down
Loading
Loading