Skip to content
Draft
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
1 change: 1 addition & 0 deletions packages/assets-controllers/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@
"@babel/runtime": "^7.23.9",
"@metamask/account-api": "^2.0.0",
"@metamask/auto-changelog": "^6.1.0",
"@metamask/eth-block-tracker": "^15.0.1",
"@metamask/eth-json-rpc-provider": "^6.0.1",
"@metamask/ethjs-provider-http": "^0.3.0",
"@metamask/keyring-internal-api": "^12.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
ChainId,
InfuraNetworkType,
} from '@metamask/controller-utils';
import { MockPollingBlockTracker } from '@metamask/eth-block-tracker';
import { MockInternalProvider } from '@metamask/eth-json-rpc-provider';
import { MOCK_ANY_NAMESPACE, Messenger } from '@metamask/messenger';
import type {
Expand All @@ -26,7 +27,6 @@ import { getDefaultPreferencesState } from '@metamask/preferences-controller';
import type { PreferencesState } from '@metamask/preferences-controller';
import nock from 'nock';

import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js';
import { jestAdvanceTime } from '../../../tests/helpers.js';
import { createMockInternalAccount } from '../../accounts-controller/tests/mocks.js';
import {
Expand Down Expand Up @@ -781,7 +781,7 @@ describe('NftDetectionController', () => {
type: NetworkClientType.Custom,
},
provider,
blockTracker: new FakeBlockTracker({ provider }),
blockTracker: new MockPollingBlockTracker({ provider }),
destroy: () => {
// do nothing
},
Expand Down
3 changes: 3 additions & 0 deletions packages/assets-controllers/tsconfig.build.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,9 @@
},
{
"path": "../eth-json-rpc-provider/tsconfig.build.json"
},
{
"path": "../eth-block-tracker/tsconfig.build.json"
}
],
"include": ["../../types", "./src"],
Expand Down
3 changes: 3 additions & 0 deletions packages/assets-controllers/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@
},
{
"path": "../eth-json-rpc-provider"
},
{
"path": "../eth-block-tracker"
}
],
"include": ["../../types", "./src", "../../tests"]
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,31 @@
import { PollingBlockTracker } from '@metamask/eth-block-tracker';
import type { InternalProvider } from '@metamask/eth-json-rpc-provider';
import type {
ContextConstraint,
MiddlewareContext,
} from '@metamask/json-rpc-engine/v2';

import { PollingBlockTracker } from './PollingBlockTracker.js';

/**
* Acts like a PollingBlockTracker, but doesn't start the polling loop or
* make any requests.
*/
export class FakeBlockTracker<
export class MockPollingBlockTracker<
Context extends ContextConstraint = MiddlewareContext,
> extends PollingBlockTracker<Context> {
#latestBlockNumber = '0x0';
latestBlockNumber: Hex;

constructor({
provider,
latestBlockNumber = '0x0',
}: {
provider: InternalProvider<Context>;
latestBlockNumber?: Hex;
}) {
super({ provider });

this.latestBlockNumber = latestBlockNumber;

constructor({ provider }: { provider: InternalProvider<Context> }) {
super({
provider,
});
// Don't start the polling loop
// TODO: Replace `any` with type
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand All @@ -26,20 +34,11 @@ export class FakeBlockTracker<
};
}

/**
* Sets the number of the block that the block tracker will always return.
*
* @param latestBlockNumber - The block number to use.
*/
mockLatestBlockNumber(latestBlockNumber: string): void {
this.#latestBlockNumber = latestBlockNumber;
}

override async getLatestBlock(): Promise<string> {
return this.#latestBlockNumber;
return this.latestBlockNumber;
}

override async checkForLatestBlock(): Promise<string> {
return this.#latestBlockNumber;
return this.latestBlockNumber;
}
}
1 change: 1 addition & 0 deletions packages/eth-block-tracker/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './PollingBlockTracker.js';
export type * from './BlockTracker.js';
export { MockPollingBlockTracker } from './MockPollingBlockTracker.js';
4 changes: 2 additions & 2 deletions packages/network-controller/tests/NetworkController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
toHex,
} from '@metamask/controller-utils';
import { PollingBlockTrackerOptions } from '@metamask/eth-block-tracker';
import { MockPollingBlockTracker } from '@metamask/eth-block-tracker';
import type { MockInternalProviderStub } from '@metamask/eth-json-rpc-provider';
import { MockInternalProvider } from '@metamask/eth-json-rpc-provider';
import { rpcErrors } from '@metamask/rpc-errors';
Expand All @@ -20,7 +21,6 @@ import { when, resetAllWhenMocks, WhenMock } from 'jest-when';
import { inspect, isDeepStrictEqual, promisify } from 'util';
import { v4 as uuidV4 } from 'uuid';

import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js';
import { NetworkStatus } from '../src/constants.js';
import * as createAutoManagedNetworkClientModule from '../src/create-auto-managed-network-client.js';
import type { AutoManagedNetworkClient } from '../src/create-auto-managed-network-client.js';
Expand Down Expand Up @@ -16874,7 +16874,7 @@ function buildFakeClient(
rpcUrl: 'https://test.network',
},
provider,
blockTracker: new FakeBlockTracker({
blockTracker: new MockPollingBlockTracker({
provider,
}),
destroy: (): void => {
Expand Down
7 changes: 2 additions & 5 deletions packages/network-controller/tests/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
NetworksTicker,
toHex,
} from '@metamask/controller-utils';
import type { InternalProvider } from '@metamask/eth-json-rpc-provider';
import { MockPollingBlockTracker } from '@metamask/eth-block-tracker';
import { MockInternalProvider } from '@metamask/eth-json-rpc-provider';
import type { MockInternalProviderStub } from '@metamask/eth-json-rpc-provider';
import { Messenger, MOCK_ANY_NAMESPACE } from '@metamask/messenger';
Expand All @@ -21,7 +21,6 @@ import type {
import type { CaipChainId, Hex } from '@metamask/utils';
import { v4 as uuidV4 } from 'uuid';

import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js';
import { buildTestObject } from '../../../tests/helpers.js';
import type { AutoManagedNetworkClient } from '../src/create-auto-managed-network-client.js';
import { NetworkController } from '../src/index.js';
Expand Down Expand Up @@ -236,9 +235,7 @@ function buildFakeNetworkClient({
return {
configuration,
provider,
blockTracker: new FakeBlockTracker({
provider: provider as unknown as InternalProvider,
}),
blockTracker: new MockPollingBlockTracker({ provider }),
destroy: (): void => {
// do nothing
},
Expand Down
2 changes: 1 addition & 1 deletion packages/transaction-controller/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@
"@babel/runtime": "^7.23.9",
"@metamask/auto-changelog": "^6.1.0",
"@metamask/connectivity-controller": "^0.3.0",
"@metamask/eth-block-tracker": "^15.0.0",
"@metamask/eth-block-tracker": "^15.0.1",
"@metamask/eth-json-rpc-provider": "^6.0.1",
"@metamask/ethjs-provider-http": "^0.3.0",
"@ts-bridge/cli": "^0.6.4",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
ORIGIN_METAMASK,
InfuraNetworkType,
} from '@metamask/controller-utils';
import { MockPollingBlockTracker } from '@metamask/eth-block-tracker';
import type { InternalProvider } from '@metamask/eth-json-rpc-provider';
import { MockInternalProvider } from '@metamask/eth-json-rpc-provider';
import HttpProvider from '@metamask/ethjs-provider-http';
Expand Down Expand Up @@ -43,7 +44,6 @@ import assert from 'assert';
// eslint-disable-next-line import-x/namespace
import * as uuidModule from 'uuid';

import { FakeBlockTracker } from '../../../tests/fake-block-tracker.js';
import { flushPromises, jestAdvanceTime } from '../../../tests/helpers.js';
import {
buildCustomNetworkClientConfiguration,
Expand Down Expand Up @@ -198,9 +198,7 @@ function buildMockBlockTracker(
latestBlockNumber: string,
provider: InternalProvider,
): BlockTracker {
const fakeBlockTracker = new FakeBlockTracker({ provider });
fakeBlockTracker.mockLatestBlockNumber(latestBlockNumber);
return fakeBlockTracker;
return new MockPollingBlockTracker({ provider, latestBlockNumber });
}

/**
Expand Down
3 changes: 2 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5886,6 +5886,7 @@ __metadata:
"@metamask/contract-metadata": "npm:^2.4.0"
"@metamask/controller-utils": "npm:^12.3.0"
"@metamask/core-backend": "npm:^9.0.0"
"@metamask/eth-block-tracker": "npm:^15.0.1"
"@metamask/eth-json-rpc-provider": "npm:^6.0.1"
"@metamask/eth-query": "npm:^4.0.0"
"@metamask/ethjs-provider-http": "npm:^0.3.0"
Expand Down Expand Up @@ -9193,7 +9194,7 @@ __metadata:
"@metamask/connectivity-controller": "npm:^0.3.0"
"@metamask/controller-utils": "npm:^12.3.0"
"@metamask/core-backend": "npm:^9.0.0"
"@metamask/eth-block-tracker": "npm:^15.0.0"
"@metamask/eth-block-tracker": "npm:^15.0.1"
"@metamask/eth-json-rpc-provider": "npm:^6.0.1"
"@metamask/ethjs-provider-http": "npm:^0.3.0"
"@metamask/gas-fee-controller": "npm:^26.3.2"
Expand Down
Loading