Skip to content

Commit b28a5ee

Browse files
committed
[assets-contract] Adjust downstream tests to use messenger actions instead of class method callbacks
1 parent c08fc28 commit b28a5ee

File tree

4 files changed

+506
-428
lines changed

4 files changed

+506
-428
lines changed

packages/assets-controllers/src/AssetsContractController.test.ts

Lines changed: 86 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import assert from 'assert';
2424
import { mockNetwork } from '../../../tests/mock-network';
2525
import { buildInfuraNetworkClientConfiguration } from '../../network-controller/tests/helpers';
2626
import type {
27+
AssetsContractControllerActions,
28+
AssetsContractControllerEvents,
2729
AllowedActions as AssetsContractAllowedActions,
2830
AllowedEvents as AssetsContractAllowedEvents,
2931
} from './AssetsContractController';
@@ -61,7 +63,9 @@ async function setupAssetContractControllers({
6163
useNetworkControllerProvider,
6264
infuraProjectId = '341eacb578dd44a1a049cbc5f6fd4035',
6365
}: {
64-
options?: Partial<ConstructorParameters<typeof AssetsContractController>[0]>;
66+
options?: Partial<
67+
Omit<ConstructorParameters<typeof AssetsContractController>[0], 'messenger'>
68+
>;
6569
useNetworkControllerProvider?: boolean;
6670
infuraProjectId?: string;
6771
} = {}) {
@@ -75,8 +79,12 @@ async function setupAssetContractControllers({
7579
let provider: Provider;
7680

7781
const controllerMessenger = new ControllerMessenger<
78-
NetworkControllerActions | AssetsContractAllowedActions,
79-
NetworkControllerEvents | AssetsContractAllowedEvents
82+
| NetworkControllerActions
83+
| AssetsContractControllerActions
84+
| AssetsContractAllowedActions,
85+
| NetworkControllerEvents
86+
| AssetsContractControllerEvents
87+
| AssetsContractAllowedEvents
8088
>();
8189
const networkMessenger = controllerMessenger.getRestricted({
8290
name: 'NetworkController',
@@ -227,7 +235,8 @@ describe('AssetsContractController', () => {
227235
const { assetsContract, messenger } = await setupAssetContractControllers();
228236
assetsContract.provider = undefined;
229237
await expect(
230-
assetsContract.getERC20BalanceOf(
238+
messenger.call(
239+
`AssetsContractController:getERC20BalanceOf`,
231240
ERC20_UNI_ADDRESS,
232241
TEST_ACCOUNT_PUBLIC_ADDRESS,
233242
),
@@ -239,7 +248,10 @@ describe('AssetsContractController', () => {
239248
const { assetsContract, messenger } = await setupAssetContractControllers();
240249
assetsContract.provider = undefined;
241250
await expect(
242-
assetsContract.getERC20TokenDecimals(ERC20_UNI_ADDRESS),
251+
messenger.call(
252+
`AssetsContractController:getERC20TokenDecimals`,
253+
ERC20_UNI_ADDRESS,
254+
),
243255
).rejects.toThrow(MISSING_PROVIDER_ERROR);
244256
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
245257
});
@@ -285,11 +297,13 @@ describe('AssetsContractController', () => {
285297
},
286298
],
287299
});
288-
const UNIBalance = await assetsContract.getERC20BalanceOf(
300+
const UNIBalance = await messenger.call(
301+
`AssetsContractController:getERC20BalanceOf`,
289302
ERC20_UNI_ADDRESS,
290303
TEST_ACCOUNT_PUBLIC_ADDRESS,
291304
);
292-
const UNINoBalance = await assetsContract.getERC20BalanceOf(
305+
const UNINoBalance = await messenger.call(
306+
`AssetsContractController:getERC20BalanceOf`,
293307
ERC20_UNI_ADDRESS,
294308
'0x202637dAAEfbd7f131f90338a4A6c69F6Cd5CE91',
295309
);
@@ -323,7 +337,8 @@ describe('AssetsContractController', () => {
323337
},
324338
],
325339
});
326-
const tokenId = await assetsContract.getERC721NftTokenId(
340+
const tokenId = await messenger.call(
341+
`AssetsContractController:getERC721NftTokenId`,
327342
ERC721_GODS_ADDRESS,
328343
'0x9a90bd8d1149a88b42a99cf62215ad955d6f498a',
329344
0,
@@ -336,7 +351,8 @@ describe('AssetsContractController', () => {
336351
const { assetsContract, messenger } = await setupAssetContractControllers();
337352
assetsContract.provider = undefined;
338353
await expect(
339-
assetsContract.getTokenStandardAndDetails(
354+
messenger.call(
355+
`AssetsContractController:getTokenStandardAndDetails`,
340356
ERC20_UNI_ADDRESS,
341357
TEST_ACCOUNT_PUBLIC_ADDRESS,
342358
),
@@ -350,7 +366,8 @@ describe('AssetsContractController', () => {
350366
assetsContract.provider = provider;
351367
const error = 'Unable to determine contract standard';
352368
await expect(
353-
assetsContract.getTokenStandardAndDetails(
369+
messenger.call(
370+
`AssetsContractController:getTokenStandardAndDetails`,
354371
'BaDeRc20AdDrEsS',
355372
TEST_ACCOUNT_PUBLIC_ADDRESS,
356373
),
@@ -415,7 +432,8 @@ describe('AssetsContractController', () => {
415432
},
416433
],
417434
});
418-
const standardAndDetails = await assetsContract.getTokenStandardAndDetails(
435+
const standardAndDetails = await messenger.call(
436+
`AssetsContractController:getTokenStandardAndDetails`,
419437
ERC721_GODS_ADDRESS,
420438
TEST_ACCOUNT_PUBLIC_ADDRESS,
421439
);
@@ -496,7 +514,8 @@ describe('AssetsContractController', () => {
496514
},
497515
],
498516
});
499-
const standardAndDetails = await assetsContract.getTokenStandardAndDetails(
517+
const standardAndDetails = await messenger.call(
518+
`AssetsContractController:getTokenStandardAndDetails`,
500519
ERC1155_ADDRESS,
501520
TEST_ACCOUNT_PUBLIC_ADDRESS,
502521
);
@@ -597,7 +616,8 @@ describe('AssetsContractController', () => {
597616
},
598617
],
599618
});
600-
const standardAndDetails = await assetsContract.getTokenStandardAndDetails(
619+
const standardAndDetails = await messenger.call(
620+
`AssetsContractController:getTokenStandardAndDetails`,
601621
ERC20_UNI_ADDRESS,
602622
TEST_ACCOUNT_PUBLIC_ADDRESS,
603623
);
@@ -646,7 +666,8 @@ describe('AssetsContractController', () => {
646666
},
647667
],
648668
});
649-
const tokenId = await assetsContract.getERC721TokenURI(
669+
const tokenId = await messenger.call(
670+
`AssetsContractController:getERC721TokenURI`,
650671
ERC721_GODS_ADDRESS,
651672
'0',
652673
);
@@ -699,7 +720,8 @@ describe('AssetsContractController', () => {
699720
},
700721
],
701722
});
702-
const uri = await assetsContract.getERC721TokenURI(
723+
const uri = await messenger.call(
724+
`AssetsContractController:getERC721TokenURI`,
703725
'0x0000000000000000000000000000000000000000',
704726
'0',
705727
);
@@ -737,7 +759,10 @@ describe('AssetsContractController', () => {
737759
},
738760
],
739761
});
740-
const name = await assetsContract.getERC721AssetName(ERC721_GODS_ADDRESS);
762+
const name = await messenger.call(
763+
`AssetsContractController:getERC721AssetName`,
764+
ERC721_GODS_ADDRESS,
765+
);
741766
expect(name).toBe('Gods Unchained');
742767
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
743768
});
@@ -767,17 +792,21 @@ describe('AssetsContractController', () => {
767792
},
768793
],
769794
});
770-
const symbol = await assetsContract.getERC721AssetSymbol(
795+
const symbol = await messenger.call(
796+
`AssetsContractController:getERC721AssetSymbol`,
771797
ERC721_GODS_ADDRESS,
772798
);
773799
expect(symbol).toBe('GODS');
774800
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
775801
});
776802

777803
it('should throw missing provider error when getting ERC-721 NFT symbol when missing provider', async () => {
778-
const { assetsContract, messenger } = await setupAssetContractControllers();
804+
const { messenger } = await setupAssetContractControllers();
779805
await expect(
780-
assetsContract.getERC721AssetSymbol(ERC721_GODS_ADDRESS),
806+
messenger.call(
807+
`AssetsContractController:getERC721AssetSymbol`,
808+
ERC721_GODS_ADDRESS,
809+
),
781810
).rejects.toThrow(MISSING_PROVIDER_ERROR);
782811
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
783812
});
@@ -807,7 +836,8 @@ describe('AssetsContractController', () => {
807836
},
808837
],
809838
});
810-
const decimals = await assetsContract.getERC20TokenDecimals(
839+
const decimals = await messenger.call(
840+
`AssetsContractController:getERC20TokenDecimals`,
811841
ERC20_SAI_ADDRESS,
812842
);
813843
expect(Number(decimals)).toBe(18);
@@ -840,7 +870,10 @@ describe('AssetsContractController', () => {
840870
],
841871
});
842872

843-
const name = await assetsContract.getERC20TokenName(ERC20_DAI_ADDRESS);
873+
const name = await messenger.call(
874+
`AssetsContractController:getERC20TokenName`,
875+
ERC20_DAI_ADDRESS,
876+
);
844877

845878
expect(name).toBe('Dai Stablecoin');
846879
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
@@ -871,7 +904,8 @@ describe('AssetsContractController', () => {
871904
},
872905
],
873906
});
874-
const tokenId = await assetsContract.getERC721OwnerOf(
907+
const tokenId = await messenger.call(
908+
`AssetsContractController:getERC721OwnerOf`,
875909
ERC721_GODS_ADDRESS,
876910
'148332',
877911
);
@@ -880,9 +914,13 @@ describe('AssetsContractController', () => {
880914
});
881915

882916
it('should throw missing provider error when getting ERC-721 NFT ownership', async () => {
883-
const { assetsContract, messenger } = await setupAssetContractControllers();
917+
const { messenger } = await setupAssetContractControllers();
884918
await expect(
885-
assetsContract.getERC721OwnerOf(ERC721_GODS_ADDRESS, '148332'),
919+
messenger.call(
920+
`AssetsContractController:getERC721OwnerOf`,
921+
ERC721_GODS_ADDRESS,
922+
'148332',
923+
),
886924
).rejects.toThrow(MISSING_PROVIDER_ERROR);
887925
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
888926
});
@@ -912,7 +950,8 @@ describe('AssetsContractController', () => {
912950
},
913951
],
914952
});
915-
const balances = await assetsContract.getBalancesInSingleCall(
953+
const balances = await messenger.call(
954+
`AssetsContractController:getBalancesInSingleCall`,
916955
ERC20_SAI_ADDRESS,
917956
[ERC20_SAI_ADDRESS],
918957
);
@@ -988,7 +1027,7 @@ describe('AssetsContractController', () => {
9881027
},
9891028
],
9901029
});
991-
const { assetsContract, network, provider } =
1030+
const { assetsContract, messenger, network, provider } =
9921031
await setupAssetContractControllers({
9931032
options: {
9941033
chainId: ChainId.mainnet,
@@ -998,7 +1037,8 @@ describe('AssetsContractController', () => {
9981037
});
9991038
assetsContract.provider = provider;
10001039

1001-
const balancesOnMainnet = await assetsContract.getBalancesInSingleCall(
1040+
const balancesOnMainnet = await messenger.call(
1041+
`AssetsContractController:getBalancesInSingleCall`,
10021042
ERC20_SAI_ADDRESS,
10031043
[ERC20_SAI_ADDRESS],
10041044
);
@@ -1008,9 +1048,11 @@ describe('AssetsContractController', () => {
10081048

10091049
await network.setActiveNetwork(InfuraNetworkType['linea-mainnet']);
10101050

1011-
const balancesOnLineaMainnet = await assetsContract.getBalancesInSingleCall(
1051+
const balancesOnLineaMainnet = await messenger.call(
1052+
`AssetsContractController:getBalancesInSingleCall`,
10121053
ERC20_SAI_ADDRESS,
10131054
[ERC20_SAI_ADDRESS],
1055+
InfuraNetworkType['linea-mainnet'],
10141056
);
10151057
expect(balancesOnLineaMainnet).toStrictEqual({
10161058
[ERC20_SAI_ADDRESS]: BigNumber.from('0xa0155d09733ed8ef4c4'),
@@ -1078,15 +1120,17 @@ describe('AssetsContractController', () => {
10781120
],
10791121
});
10801122

1081-
const balances = await assetsContract.getBalancesInSingleCall(
1123+
const balances = await messenger.call(
1124+
`AssetsContractController:getBalancesInSingleCall`,
10821125
ERC20_SAI_ADDRESS,
10831126
[ERC20_SAI_ADDRESS],
10841127
);
10851128
expect(balances[ERC20_SAI_ADDRESS]).toBeDefined();
10861129

10871130
await network.setActiveNetwork(NetworkType.sepolia);
10881131

1089-
const noBalances = await assetsContract.getBalancesInSingleCall(
1132+
const noBalances = await messenger.call(
1133+
`AssetsContractController:getBalancesInSingleCall`,
10901134
ERC20_SAI_ADDRESS,
10911135
[ERC20_SAI_ADDRESS],
10921136
);
@@ -1098,7 +1142,8 @@ describe('AssetsContractController', () => {
10981142
const { assetsContract, messenger } = await setupAssetContractControllers();
10991143
assetsContract.provider = undefined;
11001144
await expect(
1101-
assetsContract.transferSingleERC1155(
1145+
messenger.call(
1146+
`AssetsContractController:transferSingleERC1155`,
11021147
ERC1155_ADDRESS,
11031148
TEST_ACCOUNT_PUBLIC_ADDRESS,
11041149
TEST_ACCOUNT_PUBLIC_ADDRESS,
@@ -1135,7 +1180,8 @@ describe('AssetsContractController', () => {
11351180
],
11361181
});
11371182
await expect(
1138-
assetsContract.transferSingleERC1155(
1183+
messenger.call(
1184+
`AssetsContractController:transferSingleERC1155`,
11391185
ERC1155_ADDRESS,
11401186
'0x0',
11411187
TEST_ACCOUNT_PUBLIC_ADDRESS,
@@ -1171,19 +1217,21 @@ describe('AssetsContractController', () => {
11711217
},
11721218
],
11731219
});
1174-
const balance = await assetsContract.getERC1155BalanceOf(
1220+
const balance = await messenger.call(
1221+
`AssetsContractController:getERC1155BalanceOf`,
11751222
TEST_ACCOUNT_PUBLIC_ADDRESS,
11761223
ERC1155_ADDRESS,
11771224
ERC1155_ID,
11781225
);
1179-
expect(Number(balance)).toBeGreaterThan(0);
1226+
expect(balance.isZero() || balance.isNeg()).toBe(false);
11801227
messenger.clearEventSubscriptions('NetworkController:networkDidChange');
11811228
});
11821229

11831230
it('should throw missing provider error when getting the balance of a ERC-1155 NFT when missing provider', async () => {
1184-
const { assetsContract, messenger } = await setupAssetContractControllers();
1231+
const { messenger } = await setupAssetContractControllers();
11851232
await expect(
1186-
assetsContract.getERC1155BalanceOf(
1233+
messenger.call(
1234+
`AssetsContractController:getERC1155BalanceOf`,
11871235
TEST_ACCOUNT_PUBLIC_ADDRESS,
11881236
ERC1155_ADDRESS,
11891237
ERC1155_ID,
@@ -1218,7 +1266,8 @@ describe('AssetsContractController', () => {
12181266
],
12191267
});
12201268
const expectedUri = `https://api.opensea.io/api/v1/metadata/${ERC1155_ADDRESS}/0x{id}`;
1221-
const uri = await assetsContract.getERC1155TokenURI(
1269+
const uri = await messenger.call(
1270+
`AssetsContractController:getERC1155TokenURI`,
12221271
ERC1155_ADDRESS,
12231272
ERC1155_ID,
12241273
);

0 commit comments

Comments
 (0)