Skip to content

Commit 3e44e92

Browse files
shanejonasBelfordZ
authored andcommitted
Refactor NetworkController to BaseControllerV2
Fixed tests to pass Added test isolation of race condition Remove node-version file Fixed TokenListController test Fixed broken tests Fix network controller to no longer use settimeout Fixed test cleanup in a variety of cases Remove tsfmt file Update collectibles controller tests to minimize refactoring Change infura api keys to fake ones in tests where possible
1 parent 0ee6a25 commit 3e44e92

11 files changed

+765
-585
lines changed

src/ComposableController.test.ts

Lines changed: 57 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
import { PreferencesController } from './user/PreferencesController';
1515
import {
1616
NetworkController,
17+
NetworkControllerMessenger,
1718
NetworksChainId,
1819
} from './network/NetworkController';
1920
import { AssetsContractController } from './assets/AssetsContractController';
@@ -87,25 +88,46 @@ class BarController extends BaseController<never, BarControllerState> {
8788
}
8889

8990
describe('ComposableController', () => {
91+
let networkMessenger: NetworkControllerMessenger;
92+
let messenger: any;
93+
94+
beforeEach(() => {
95+
const _messenger = new ControllerMessenger();
96+
97+
networkMessenger = _messenger.getRestricted({
98+
name: 'NetworkController',
99+
allowedEvents: ['NetworkController:stateChange'],
100+
allowedActions: [],
101+
});
102+
103+
messenger = _messenger.getRestricted<string, any, any>({
104+
name: 'ComposableController',
105+
allowedEvents: ['NetworkController:stateChange'],
106+
allowedActions: [],
107+
});
108+
});
109+
90110
afterEach(() => {
91111
sinon.restore();
92112
});
93113

94114
describe('BaseController', () => {
95115
it('should compose controller state', () => {
96116
const preferencesController = new PreferencesController();
97-
const networkController = new NetworkController();
117+
const networkController = new NetworkController({
118+
messenger: networkMessenger,
119+
});
98120
const assetContractController = new AssetsContractController({
99121
onPreferencesStateChange: (listener) =>
100122
preferencesController.subscribe(listener),
101123
onNetworkStateChange: (listener) =>
102-
networkController.subscribe(listener),
124+
messenger.subscribe('NetworkController:stateChange', listener),
103125
});
104126
const collectiblesController = new CollectiblesController({
105127
onPreferencesStateChange: (listener) =>
106128
preferencesController.subscribe(listener),
107129
onNetworkStateChange: (listener) =>
108-
networkController.subscribe(listener),
130+
messenger.subscribe('NetworkController:stateChange', listener),
109131
getERC721AssetName: assetContractController.getERC721AssetName.bind(
110132
assetContractController,
111133
),
@@ -130,17 +152,21 @@ describe('ComposableController', () => {
130152
onPreferencesStateChange: (listener) =>
131153
preferencesController.subscribe(listener),
132154
onNetworkStateChange: (listener) =>
133-
networkController.subscribe(listener),
155+
messenger.subscribe('NetworkController:stateChange', listener),
134156
});
135-
const controller = new ComposableController([
136-
new AddressBookController(),
137-
collectiblesController,
138-
assetContractController,
139-
new EnsController(),
140-
networkController,
141-
preferencesController,
142-
tokensController,
143-
]);
157+
const controller = new ComposableController(
158+
[
159+
new AddressBookController(),
160+
collectiblesController,
161+
assetContractController,
162+
new EnsController(),
163+
networkController,
164+
preferencesController,
165+
tokensController,
166+
],
167+
messenger,
168+
);
169+
144170
expect(controller.state).toStrictEqual({
145171
AddressBookController: { addressBook: {} },
146172
AssetsContractController: {},
@@ -183,18 +209,20 @@ describe('ComposableController', () => {
183209

184210
it('should compose flat controller state', () => {
185211
const preferencesController = new PreferencesController();
186-
const networkController = new NetworkController();
212+
const networkController = new NetworkController({
213+
messenger: networkMessenger,
214+
});
187215
const assetContractController = new AssetsContractController({
188216
onPreferencesStateChange: (listener) =>
189217
preferencesController.subscribe(listener),
190218
onNetworkStateChange: (listener) =>
191-
networkController.subscribe(listener),
219+
messenger.subscribe('NetworkController:stateChange', listener),
192220
});
193221
const collectiblesController = new CollectiblesController({
194222
onPreferencesStateChange: (listener) =>
195223
preferencesController.subscribe(listener),
196224
onNetworkStateChange: (listener) =>
197-
networkController.subscribe(listener),
225+
messenger.subscribe('NetworkController:stateChange', listener),
198226
getERC721AssetName: assetContractController.getERC721AssetName.bind(
199227
assetContractController,
200228
),
@@ -219,17 +247,20 @@ describe('ComposableController', () => {
219247
onPreferencesStateChange: (listener) =>
220248
preferencesController.subscribe(listener),
221249
onNetworkStateChange: (listener) =>
222-
networkController.subscribe(listener),
250+
messenger.subscribe('NetworkController:stateChange', listener),
223251
});
224-
const controller = new ComposableController([
225-
new AddressBookController(),
226-
collectiblesController,
227-
assetContractController,
228-
new EnsController(),
229-
networkController,
230-
preferencesController,
231-
tokensController,
232-
]);
252+
const controller = new ComposableController(
253+
[
254+
new AddressBookController(),
255+
collectiblesController,
256+
assetContractController,
257+
new EnsController(),
258+
networkController,
259+
preferencesController,
260+
tokensController,
261+
],
262+
messenger,
263+
);
233264
expect(controller.flatState).toStrictEqual({
234265
addressBook: {},
235266
allCollectibleContracts: {},

src/assets/AssetsContractController.test.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@ import HttpProvider from 'ethjs-provider-http';
22
import { IPFS_DEFAULT_GATEWAY_URL } from '../constants';
33
import { SupportedTokenDetectionNetworks } from '../util';
44
import { PreferencesController } from '../user/PreferencesController';
5-
import { NetworkController } from '../network/NetworkController';
5+
import {
6+
NetworkController,
7+
NetworkControllerMessenger,
8+
} from '../network/NetworkController';
9+
import { ControllerMessenger } from '../ControllerMessenger';
610
import {
711
AssetsContractController,
812
MISSING_PROVIDER_ERROR,
@@ -25,13 +29,23 @@ describe('AssetsContractController', () => {
2529
let assetsContract: AssetsContractController;
2630
let preferences: PreferencesController;
2731
let network: NetworkController;
32+
let messenger: NetworkControllerMessenger;
2833

2934
beforeEach(() => {
35+
messenger = new ControllerMessenger().getRestricted({
36+
name: 'NetworkController',
37+
allowedEvents: ['NetworkController:stateChange'],
38+
allowedActions: [],
39+
});
40+
41+
network = new NetworkController({
42+
messenger,
43+
});
3044
preferences = new PreferencesController();
31-
network = new NetworkController();
3245
assetsContract = new AssetsContractController({
3346
onPreferencesStateChange: (listener) => preferences.subscribe(listener),
34-
onNetworkStateChange: (listener) => network.subscribe(listener),
47+
onNetworkStateChange: (listener) =>
48+
messenger.subscribe('NetworkController:stateChange', listener),
3549
});
3650
});
3751

src/assets/CollectibleDetectionController.test.ts

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import sinon from 'sinon';
22
import nock from 'nock';
3-
import { NetworkController } from '../network/NetworkController';
3+
import {
4+
NetworkController,
5+
NetworkControllerMessenger,
6+
} from '../network/NetworkController';
47
import { PreferencesController } from '../user/PreferencesController';
58
import { OPENSEA_PROXY_URL } from '../constants';
9+
import { ControllerMessenger } from '../ControllerMessenger';
610
import { CollectiblesController } from './CollectiblesController';
711
import { AssetsContractController } from './AssetsContractController';
812
import { CollectibleDetectionController } from './CollectibleDetectionController';
@@ -14,9 +18,9 @@ const ROPSTEN = 'ropsten';
1418
describe('CollectibleDetectionController', () => {
1519
let collectibleDetection: CollectibleDetectionController;
1620
let preferences: PreferencesController;
17-
let network: NetworkController;
1821
let collectiblesController: CollectiblesController;
1922
let assetsContract: AssetsContractController;
23+
let messenger: NetworkControllerMessenger;
2024

2125
const getOpenSeaApiKeyStub = jest.fn();
2226
beforeAll(() => {
@@ -28,16 +32,27 @@ describe('CollectibleDetectionController', () => {
2832
});
2933

3034
beforeEach(async () => {
35+
messenger = new ControllerMessenger().getRestricted({
36+
name: 'NetworkController',
37+
allowedEvents: ['NetworkController:stateChange'],
38+
allowedActions: [],
39+
});
40+
41+
new NetworkController({
42+
messenger,
43+
infuraProjectId: 'potato',
44+
});
3145
preferences = new PreferencesController();
32-
network = new NetworkController();
3346
assetsContract = new AssetsContractController({
3447
onPreferencesStateChange: (listener) => preferences.subscribe(listener),
35-
onNetworkStateChange: (listener) => network.subscribe(listener),
48+
onNetworkStateChange: (listener) =>
49+
messenger.subscribe('NetworkController:stateChange', listener),
3650
});
3751

3852
collectiblesController = new CollectiblesController({
3953
onPreferencesStateChange: (listener) => preferences.subscribe(listener),
40-
onNetworkStateChange: (listener) => network.subscribe(listener),
54+
onNetworkStateChange: (listener) =>
55+
messenger.subscribe('NetworkController:stateChange', listener),
4156
getERC721AssetName:
4257
assetsContract.getERC721AssetName.bind(assetsContract),
4358
getERC721AssetSymbol:
@@ -55,7 +70,8 @@ describe('CollectibleDetectionController', () => {
5570
onCollectiblesStateChange: (listener) =>
5671
collectiblesController.subscribe(listener),
5772
onPreferencesStateChange: (listener) => preferences.subscribe(listener),
58-
onNetworkStateChange: (listener) => network.subscribe(listener),
73+
onNetworkStateChange: (listener) =>
74+
messenger.subscribe('NetworkController:stateChange', listener),
5975
getOpenSeaApiKey: getOpenSeaApiKeyStub,
6076
addCollectible: collectiblesController.addCollectible.bind(
6177
collectiblesController,
@@ -226,7 +242,8 @@ describe('CollectibleDetectionController', () => {
226242
collectiblesController.subscribe(listener),
227243
onPreferencesStateChange: (listener) =>
228244
preferences.subscribe(listener),
229-
onNetworkStateChange: (listener) => network.subscribe(listener),
245+
onNetworkStateChange: (listener) =>
246+
messenger.subscribe('NetworkController:stateChange', listener),
230247
getOpenSeaApiKey: () => collectiblesController.openSeaApiKey,
231248
addCollectible: collectiblesController.addCollectible.bind(
232249
collectiblesController,
@@ -264,7 +281,8 @@ describe('CollectibleDetectionController', () => {
264281
collectiblesController.subscribe(listener),
265282
onPreferencesStateChange: (listener) =>
266283
preferences.subscribe(listener),
267-
onNetworkStateChange: (listener) => network.subscribe(listener),
284+
onNetworkStateChange: (listener) =>
285+
messenger.subscribe('NetworkController:stateChange', listener),
268286
getOpenSeaApiKey: () => collectiblesController.openSeaApiKey,
269287
addCollectible: collectiblesController.addCollectible.bind(
270288
collectiblesController,

0 commit comments

Comments
 (0)