Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove ESLint jest/valid-expect-in-promise #426

Merged
merged 6 commits into from
Apr 7, 2021
Merged
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: 0 additions & 1 deletion .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ module.exports = {
'jest/no-restricted-matchers': 'off',
'jest/no-test-return-statement': 'off',
'jest/prefer-strict-equal': 'off',
'jest/valid-expect-in-promise': 'off',
},
settings: {
'import/resolver': {
Expand Down
35 changes: 10 additions & 25 deletions src/approval/ApprovalController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -312,33 +312,22 @@ describe('approval controller', () => {

it('rejects approval promise', async () => {
numDeletions = 1;

const approvalPromise = approvalController.add({ id: 'foo', origin: 'bar.baz', type: TYPE }).catch((error) => {
expect(error).toMatchObject(getError('failure'));
});

const approvalPromise = approvalController.add({ id: 'foo', origin: 'bar.baz', type: TYPE });
approvalController.reject('foo', new Error('failure'));
await approvalPromise;
await expect(approvalPromise).rejects.toThrow('failure');
expect(deleteSpy.callCount).toEqual(numDeletions);
});

it('rejects multiple approval promises out of order', async () => {
numDeletions = 2;

const rejectionPromise1 = approvalController.add({ id: 'foo1', origin: 'bar.baz', type: TYPE }).catch((error) => {
expect(error).toMatchObject(getError('failure1'));
});
const rejectionPromise2 = approvalController
.add({ id: 'foo2', origin: 'bar.baz', type: 'myType2' })
.catch((error) => {
expect(error).toMatchObject(getError('failure2'));
});
const rejectionPromise1 = approvalController.add({ id: 'foo1', origin: 'bar.baz', type: TYPE });
const rejectionPromise2 = approvalController.add({ id: 'foo2', origin: 'bar.baz', type: 'myType2' });

approvalController.reject('foo2', new Error('failure2'));
await rejectionPromise2;

approvalController.reject('foo1', new Error('failure1'));
await rejectionPromise1;
await expect(rejectionPromise2).rejects.toThrow('failure2');
await expect(rejectionPromise1).rejects.toThrow('failure1');
expect(deleteSpy.callCount).toEqual(numDeletions);
});

Expand All @@ -354,23 +343,19 @@ describe('approval controller', () => {

const promise1 = approvalController.add({ id: 'foo1', origin: 'bar.baz', type: TYPE });
const promise2 = approvalController.add({ id: 'foo2', origin: 'bar.baz', type: 'myType2' });
const promise3 = approvalController.add({ id: 'foo3', origin: 'fizz.buzz', type: TYPE }).catch((error) => {
expect(error).toMatchObject(getError('failure3'));
});
const promise4 = approvalController.add({ id: 'foo4', origin: 'bar.baz', type: 'myType4' }).catch((error) => {
expect(error).toMatchObject(getError('failure4'));
});
const promise3 = approvalController.add({ id: 'foo3', origin: 'fizz.buzz', type: TYPE });
const promise4 = approvalController.add({ id: 'foo4', origin: 'bar.baz', type: 'myType4' });

approvalController.resolve('foo2', 'success2');

let result = await promise2;
expect(result).toEqual('success2');

approvalController.reject('foo4', new Error('failure4'));
await promise4;
await expect(promise4).rejects.toThrow('failure4');

approvalController.reject('foo3', new Error('failure3'));
await promise3;
await expect(promise3).rejects.toThrow('failure3');

expect(approvalController.has({ origin: 'fizz.buzz' })).toEqual(false);
expect(approvalController.has({ origin: 'bar.baz' })).toEqual(true);
Expand Down
94 changes: 40 additions & 54 deletions src/assets/AssetsController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -444,67 +444,53 @@ describe('AssetsController', () => {
});

it('should reject a valid suggested asset via watchAsset', async () => {
await new Promise(async (resolve) => {
const { result, suggestedAssetMeta } = await assetsController.watchAsset(
{
address: '0xe9f786dfdd9ae4d57e830acb52296837765f0e5b',
decimals: 18,
symbol: 'TKN',
},
'ERC20',
);
assetsController.rejectWatchAsset('foo');
assetsController.rejectWatchAsset(suggestedAssetMeta.id);
assetsController.hub.once(`${suggestedAssetMeta.id}:finished`, () => {
expect(assetsController.state.suggestedAssets).toHaveLength(0);
});
result.catch((error) => {
expect(error.message).toContain('User rejected to watch the asset.');
resolve('');
});
const { result, suggestedAssetMeta } = await assetsController.watchAsset(
{
address: '0xe9f786dfdd9ae4d57e830acb52296837765f0e5b',
decimals: 18,
symbol: 'TKN',
},
'ERC20',
);
assetsController.rejectWatchAsset('foo');
assetsController.rejectWatchAsset(suggestedAssetMeta.id);
assetsController.hub.once(`${suggestedAssetMeta.id}:finished`, () => {
expect(assetsController.state.suggestedAssets).toHaveLength(0);
});
await expect(result).rejects.toThrow('User rejected to watch the asset.');
});

it('should accept a valid suggested asset via watchAsset', async () => {
await new Promise(async (resolve) => {
const { result, suggestedAssetMeta } = await assetsController.watchAsset(
{
address: '0xe9f786dfdd9ae4d57e830acb52296837765f0e5b',
decimals: 18,
symbol: 'TKN',
},
'ERC20',
);
result.then((res) => {
expect(assetsController.state.suggestedAssets).toHaveLength(0);
expect(res).toBe('0xe9f786dfdd9ae4d57e830acb52296837765f0e5b');
resolve('');
});
await assetsController.acceptWatchAsset(suggestedAssetMeta.id);
});
const { result, suggestedAssetMeta } = await assetsController.watchAsset(
{
address: '0xe9f786dfdd9ae4d57e830acb52296837765f0e5b',
decimals: 18,
symbol: 'TKN',
},
'ERC20',
);
await assetsController.acceptWatchAsset(suggestedAssetMeta.id);
const res = await result;
expect(assetsController.state.suggestedAssets).toHaveLength(0);
expect(res).toBe('0xe9f786dfdd9ae4d57e830acb52296837765f0e5b');
});

it('should fail a valid suggested asset via watchAsset with wrong type', async () => {
await new Promise(async (resolve) => {
const { result, suggestedAssetMeta } = await assetsController.watchAsset(
{
address: '0xe9f786dfdd9be4d57e830acb52296837765f0e5b',
decimals: 18,
symbol: 'TKN',
},
'ERC20',
);
const { suggestedAssets } = assetsController.state;
const index = suggestedAssets.findIndex(({ id }) => suggestedAssetMeta.id === id);
const newSuggestedAssetMeta = suggestedAssets[index];
suggestedAssetMeta.type = 'ERC721';
assetsController.update({ suggestedAssets: [...suggestedAssets, newSuggestedAssetMeta] });
await assetsController.acceptWatchAsset(suggestedAssetMeta.id);
result.catch((error) => {
expect(error.message).toContain('Asset of type ERC721 not supported');
resolve('');
});
});
const { result, suggestedAssetMeta } = await assetsController.watchAsset(
{
address: '0xe9f786dfdd9be4d57e830acb52296837765f0e5b',
decimals: 18,
symbol: 'TKN',
},
'ERC20',
);
const { suggestedAssets } = assetsController.state;
const index = suggestedAssets.findIndex(({ id }) => suggestedAssetMeta.id === id);
const newSuggestedAssetMeta = suggestedAssets[index];
suggestedAssetMeta.type = 'ERC721';
assetsController.update({ suggestedAssets: [...suggestedAssets, newSuggestedAssetMeta] });
await assetsController.acceptWatchAsset(suggestedAssetMeta.id);
await expect(result).rejects.toThrow('Asset of type ERC721 not supported');
});

it('should not add duplicate tokens to the ignoredToken list', async () => {
Expand Down
94 changes: 40 additions & 54 deletions src/message-manager/MessageManager.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,69 +42,55 @@ describe('PersonalMessageManager', () => {
});

it('should reject a message', async () => {
await new Promise<void>(async (resolve) => {
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
const result = controller.addUnapprovedMessageAsync({
data,
from,
});
const unapprovedMessages = controller.getUnapprovedMessages();
const keys = Object.keys(unapprovedMessages);
controller.hub.once(`${keys[0]}:finished`, () => {
expect(unapprovedMessages[keys[0]].messageParams.from).toBe(from);
expect(unapprovedMessages[keys[0]].status).toBe('rejected');
});
controller.rejectMessage(keys[0]);
result.catch((error) => {
expect(error.message).toContain('User denied message signature');
resolve();
});
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
const result = controller.addUnapprovedMessageAsync({
data,
from,
});
const unapprovedMessages = controller.getUnapprovedMessages();
const keys = Object.keys(unapprovedMessages);
controller.hub.once(`${keys[0]}:finished`, () => {
expect(unapprovedMessages[keys[0]].messageParams.from).toBe(from);
expect(unapprovedMessages[keys[0]].status).toBe('rejected');
});
controller.rejectMessage(keys[0]);
await expect(result).rejects.toThrow('User denied message signature');
});

it('should sign a message', async () => {
await new Promise<void>(async (resolve) => {
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
const rawSig = '0x5f7a0';
const result = controller.addUnapprovedMessageAsync({
data,
from,
});
const unapprovedMessages = controller.getUnapprovedMessages();
const keys = Object.keys(unapprovedMessages);
controller.hub.once(`${keys[0]}:finished`, () => {
expect(unapprovedMessages[keys[0]].messageParams.from).toBe(from);
expect(unapprovedMessages[keys[0]].status).toBe('signed');
});
controller.setMessageStatusSigned(keys[0], rawSig);
result.then((sig) => {
expect(sig).toEqual(rawSig);
resolve();
});
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
const rawSig = '0x5f7a0';
const result = controller.addUnapprovedMessageAsync({
data,
from,
});
const unapprovedMessages = controller.getUnapprovedMessages();
const keys = Object.keys(unapprovedMessages);
controller.hub.once(`${keys[0]}:finished`, () => {
expect(unapprovedMessages[keys[0]].messageParams.from).toBe(from);
expect(unapprovedMessages[keys[0]].status).toBe('signed');
});
controller.setMessageStatusSigned(keys[0], rawSig);
const sig = await result;
expect(sig).toBe(rawSig);
});

it('should throw when unapproved finishes', async () => {
await new Promise<void>(async (resolve) => {
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
const result = controller.addUnapprovedMessageAsync({
data,
from,
});
const unapprovedMessages = controller.getUnapprovedMessages();
const keys = Object.keys(unapprovedMessages);
controller.hub.emit(`${keys[0]}:finished`, unapprovedMessages[keys[0]]);
result.catch((error) => {
expect(error.message).toContain('Unknown problem');
resolve();
});
const controller = new MessageManager();
const from = '0xc38bf1ad06ef69f0c04e29dbeb4152b4175f0a8d';
const data = '0x879a053d4800c6354e76c7985a865d2922c82fb5b';
const result = controller.addUnapprovedMessageAsync({
data,
from,
});
const unapprovedMessages = controller.getUnapprovedMessages();
const keys = Object.keys(unapprovedMessages);
controller.hub.emit(`${keys[0]}:finished`, unapprovedMessages[keys[0]]);
await expect(result).rejects.toThrow('Unknown problem');
});

it('should add a valid unapproved message', async () => {
Expand Down
Loading