2019-09-25 18:44:19 -07:00

45 lines
2.3 KiB
TypeScript

import { utils } from '../src/utils';
describe('Utils', () => {
describe('.getOrderHash', () => {
const order = {
makerAddress: '0x50f84bbee6fb250d6f49e854fa280445369d64d9',
makerAssetData: '0xf47261b00000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc942',
makerAssetAmount: '4424020538752105500000',
makerFee: '0',
takerAddress: '0x0000000000000000000000000000000000000000',
takerAssetData: '0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
takerAssetAmount: '1000000000000000061',
makerFeeAssetData: '0xf47261b00000000000000000000000000f5d2fb29fb7d3cfee444a200298f468908cc942',
takerFeeAssetData: '0xf47261b0000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
takerFee: '0',
senderAddress: '0x0000000000000000000000000000000000000000',
exchangeAddress: '0x4f833a24e1f95d70f028921e27040ca56e09ab0b',
feeRecipientAddress: '0xa258b39954cef5cb142fd567a46cddb31a670124',
expirationTimeSeconds: '1559422407',
salt: '1559422141994',
chainId: 1,
signature:
'0x1cf16c2f3a210965b5e17f51b57b869ba4ddda33df92b0017b4d8da9dacd3152b122a73844eaf50ccde29a42950239ba36a525ed7f1698a8a5e1896cf7d651aed203',
};
test('calculates the orderhash if it does not exist', async () => {
const orderHash = utils.getOrderHash(order as any);
const calculatedOrderHash = utils.getOrderHash({ order: order as any, metaData: {} });
expect(orderHash).toBe(calculatedOrderHash);
expect(orderHash).toBe('0x5a0f346c671a39b832a487d2d7eb63ca19301554cf1f8a98a19d478a3a8be32c');
});
});
describe('.attemptAsync', () => {
test('attempts the operation multiple times if the operation throws', async () => {
const success = 'Success';
const mock = jest
.fn()
.mockRejectedValueOnce(new Error('Async Error'))
.mockResolvedValue(success);
const result = await utils.attemptAsync<string>(mock);
expect(result).toBe(success);
expect(mock.mock.calls.length).toBe(2);
});
});
});