Skip to content

Commit 1fbe13a

Browse files
committed
Fixed TokenDetectionController tests with new TokenList interface
1 parent 65183cb commit 1fbe13a

File tree

2 files changed

+47
-53
lines changed

2 files changed

+47
-53
lines changed

src/assets/TokenDetectionController.test.ts

Lines changed: 47 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { BN } from 'ethereumjs-util';
44
import {
55
NetworkController,
66
NetworkControllerMessenger,
7+
NetworkControllerProviderChangeEvent,
78
NetworkControllerStateChangeEvent,
89
NetworksChainId,
910
} from '../network/NetworkController';
@@ -82,46 +83,47 @@ const sampleTokenB: Token = {
8283
aggregators: formattedSampleAggregators,
8384
};
8485

85-
/**
86-
* Constructs a restricted controller messenger for TokenList.
87-
*
88-
* @returns A restricted controller messenger.
89-
*/
90-
function getTokenListMessenger() {
91-
const controllerMessenger = new ControllerMessenger<
92-
GetTokenListState,
93-
TokenListStateChange
94-
>();
95-
const messenger = controllerMessenger.getRestricted<
96-
'TokenListController',
97-
never,
98-
TokenListStateChange['type']
99-
>({
86+
type MainControllerMessenger = ControllerMessenger<GetTokenListState, TokenListStateChange | NetworkControllerProviderChangeEvent | NetworkControllerStateChangeEvent>;
87+
88+
const getControllerMessenger = (): MainControllerMessenger => {
89+
return new ControllerMessenger();
90+
};
91+
92+
const setupNetworkController = (controllerMessenger: MainControllerMessenger) => {
93+
const networkMessenger = controllerMessenger.getRestricted({
94+
name: 'NetworkController',
95+
allowedEvents: [
96+
'NetworkController:providerChange',
97+
'NetworkController:stateChange',
98+
],
99+
allowedActions: [],
100+
});
101+
102+
const network = new NetworkController({
103+
messenger: networkMessenger,
104+
infuraProjectId: '123',
105+
});
106+
107+
return { network, networkMessenger };
108+
};
109+
110+
const setupTokenListController = (controllerMessenger: MainControllerMessenger) =>{
111+
const tokenListMessenger = controllerMessenger.getRestricted({
100112
name: 'TokenListController',
101-
allowedEvents: ['TokenListController:stateChange'],
113+
allowedActions: [],
114+
allowedEvents: [
115+
'TokenListController:stateChange',
116+
'NetworkController:providerChange'
117+
],
102118
});
103-
return messenger;
104-
}
105119

106-
/**
107-
* Constructs a restricted controller messenger for NetworkController.
108-
*
109-
* @returns A restricted controller messenger.
110-
*/
111-
function getNetworkMessenger() {
112-
const controllerMessenger = new ControllerMessenger<
113-
never,
114-
NetworkControllerStateChangeEvent
115-
>();
116-
const messenger = controllerMessenger.getRestricted<
117-
'NetworkController',
118-
never,
119-
NetworkControllerStateChangeEvent['type']
120-
>({
121-
name: 'NetworkController',
122-
allowedEvents: ['NetworkController:stateChange'],
120+
const tokenList = new TokenListController({
121+
chainId: NetworksChainId.mainnet,
122+
preventPollingOnNetworkRestart: false,
123+
messenger: tokenListMessenger,
123124
});
124-
return messenger;
125+
126+
return { tokenList, tokenListMessenger };
125127
}
126128

127129
describe('TokenDetectionController', () => {
@@ -131,6 +133,7 @@ describe('TokenDetectionController', () => {
131133
let networkMessenger: NetworkControllerMessenger;
132134
let tokensController: TokensController;
133135
let tokenList: TokenListController;
136+
let controllerMessenger: MainControllerMessenger;
134137
let getBalancesInSingleCall: sinon.SinonStub<
135138
Parameters<AssetsContractController['getBalancesInSingleCall']>,
136139
ReturnType<AssetsContractController['getBalancesInSingleCall']>
@@ -151,33 +154,25 @@ describe('TokenDetectionController', () => {
151154
.persist();
152155

153156
preferences = new PreferencesController({}, { useTokenDetection: true });
154-
networkMessenger = getNetworkMessenger();
155-
network = new NetworkController({
156-
messenger: networkMessenger,
157-
infuraProjectId: '123',
158-
});
159-
157+
controllerMessenger = getControllerMessenger();
158+
const networkSetup = setupNetworkController(controllerMessenger);
159+
network = networkSetup.network;
160+
networkMessenger = networkSetup.networkMessenger;
160161
tokensController = new TokensController({
161162
onPreferencesStateChange: (listener) => preferences.subscribe(listener),
162163
onNetworkStateChange: (listener) =>
163164
networkMessenger.subscribe('NetworkController:stateChange', listener),
164165
});
165-
const messenger = getTokenListMessenger();
166-
tokenList = new TokenListController({
167-
chainId: NetworksChainId.mainnet,
168-
preventPollingOnNetworkRestart: false,
169-
onNetworkStateChange: (listener) =>
170-
networkMessenger.subscribe('NetworkController:stateChange', listener),
171-
messenger,
172-
});
166+
const tokenListSetup = setupTokenListController(controllerMessenger);
167+
tokenList = tokenListSetup.tokenList;
173168
await tokenList.start();
174169
getBalancesInSingleCall = sinon.stub();
175170
tokenDetection = new TokenDetectionController({
176171
onPreferencesStateChange: (listener) => preferences.subscribe(listener),
177172
onNetworkStateChange: (listener) =>
178173
networkMessenger.subscribe('NetworkController:stateChange', listener),
179174
onTokenListStateChange: (listener) =>
180-
messenger.subscribe(`TokenListController:stateChange`, listener),
175+
tokenListSetup.tokenListMessenger.subscribe(`TokenListController:stateChange`, listener),
181176
getBalancesInSingleCall:
182177
getBalancesInSingleCall as unknown as AssetsContractController['getBalancesInSingleCall'],
183178
addDetectedTokens:
@@ -198,7 +193,7 @@ describe('TokenDetectionController', () => {
198193
sinon.restore();
199194
tokenDetection.stop();
200195
tokenList.destroy();
201-
networkMessenger.clearEventSubscriptions('NetworkController:stateChange');
196+
controllerMessenger.clearEventSubscriptions('NetworkController:stateChange');
202197
});
203198

204199
it('should set default config', () => {

src/assets/TokenListController.test.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { TOKEN_END_POINT_API } from '../apis/token-service';
44
import { ControllerMessenger } from '../ControllerMessenger';
55
import {
66
NetworkController,
7-
NetworkControllerMessenger,
87
NetworkControllerProviderChangeEvent,
98
NetworksChainId,
109
} from '../network/NetworkController';

0 commit comments

Comments
 (0)