2022-06-29 14:51:35 +02:00
|
|
|
|
import { HttpProvider } from 'ethjs';
|
|
|
|
|
import nock from 'nock';
|
2020-11-07 08:38:12 +01:00
|
|
|
|
import {
|
|
|
|
|
TRANSACTION_GROUP_STATUSES,
|
|
|
|
|
TRANSACTION_STATUSES,
|
2021-10-06 20:29:57 +02:00
|
|
|
|
TRANSACTION_ENVELOPE_TYPES,
|
2021-04-28 21:53:59 +02:00
|
|
|
|
} from '../../../shared/constants/transaction';
|
2021-02-04 19:15:23 +01:00
|
|
|
|
import * as utils from './transactions.util';
|
2018-09-19 02:20:28 +02:00
|
|
|
|
|
2021-04-15 20:01:46 +02:00
|
|
|
|
describe('Transactions utils', () => {
|
|
|
|
|
describe('getStatusKey', () => {
|
|
|
|
|
it('should return the correct status', () => {
|
2018-10-16 00:00:47 +02:00
|
|
|
|
const tests = [
|
|
|
|
|
{
|
|
|
|
|
transaction: {
|
2020-11-07 08:38:12 +01:00
|
|
|
|
status: TRANSACTION_STATUSES.CONFIRMED,
|
2018-10-16 00:00:47 +02:00
|
|
|
|
txReceipt: {
|
|
|
|
|
status: '0x0',
|
|
|
|
|
},
|
|
|
|
|
},
|
2020-11-07 08:38:12 +01:00
|
|
|
|
expected: TRANSACTION_STATUSES.FAILED,
|
2018-10-16 00:00:47 +02:00
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
transaction: {
|
2020-11-07 08:38:12 +01:00
|
|
|
|
status: TRANSACTION_STATUSES.CONFIRMED,
|
2018-10-16 00:00:47 +02:00
|
|
|
|
txReceipt: {
|
|
|
|
|
status: '0x1',
|
|
|
|
|
},
|
|
|
|
|
},
|
2020-11-07 08:38:12 +01:00
|
|
|
|
expected: TRANSACTION_STATUSES.CONFIRMED,
|
2018-10-16 00:00:47 +02:00
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
transaction: {
|
2020-11-07 08:38:12 +01:00
|
|
|
|
status: TRANSACTION_GROUP_STATUSES.PENDING,
|
2018-10-16 00:00:47 +02:00
|
|
|
|
},
|
2020-11-07 08:38:12 +01:00
|
|
|
|
expected: TRANSACTION_GROUP_STATUSES.PENDING,
|
2018-10-16 00:00:47 +02:00
|
|
|
|
},
|
2021-02-04 19:15:23 +01:00
|
|
|
|
];
|
2018-10-16 00:00:47 +02:00
|
|
|
|
|
|
|
|
|
tests.forEach(({ transaction, expected }) => {
|
2021-04-15 20:01:46 +02:00
|
|
|
|
expect(utils.getStatusKey(transaction)).toStrictEqual(expected);
|
2021-02-04 19:15:23 +01:00
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
2021-10-06 20:29:57 +02:00
|
|
|
|
|
|
|
|
|
describe('isLegacyTransaction', () => {
|
|
|
|
|
it('should return true if transaction is type-0', () => {
|
|
|
|
|
expect(
|
|
|
|
|
utils.isLegacyTransaction({ type: TRANSACTION_ENVELOPE_TYPES.LEGACY }),
|
|
|
|
|
).toStrictEqual(true);
|
|
|
|
|
});
|
|
|
|
|
it('should return false if transaction is not type-0', () => {
|
|
|
|
|
expect(
|
|
|
|
|
utils.isLegacyTransaction({
|
|
|
|
|
type: TRANSACTION_ENVELOPE_TYPES.FEE_MARKET,
|
|
|
|
|
}),
|
|
|
|
|
).toStrictEqual(false);
|
|
|
|
|
});
|
|
|
|
|
});
|
2022-06-29 14:51:35 +02:00
|
|
|
|
|
|
|
|
|
describe('getMethodDataAsync', () => {
|
|
|
|
|
global.ethereumProvider = new HttpProvider(
|
|
|
|
|
'https://mainnet.infura.io/v3/341eacb578dd44a1a049cbc5f6fd4035',
|
|
|
|
|
);
|
|
|
|
|
it('returns a valid signature for setApprovalForAll', async () => {
|
|
|
|
|
nock('https://www.4byte.directory:443', { encodedQueryParams: true })
|
|
|
|
|
.get('/api/v1/signatures/')
|
|
|
|
|
.query({ hex_signature: '0xa22cb465' })
|
|
|
|
|
.reply(200, {
|
|
|
|
|
count: 2,
|
|
|
|
|
next: null,
|
|
|
|
|
previous: null,
|
|
|
|
|
results: [
|
|
|
|
|
{
|
|
|
|
|
id: 841519,
|
|
|
|
|
created_at: '2022-06-12T00:50:19.305588Z',
|
|
|
|
|
text_signature: 'niceFunctionHerePlzClick943230089(address,bool)',
|
|
|
|
|
hex_signature: '0xa22cb465',
|
|
|
|
|
bytes_signature: '¢,´e',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
id: 29659,
|
|
|
|
|
created_at: '2018-04-11T21:47:39.980645Z',
|
|
|
|
|
text_signature: 'setApprovalForAll(address,bool)',
|
|
|
|
|
hex_signature: '0xa22cb465',
|
|
|
|
|
bytes_signature: '¢,´e',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
expect(await utils.getMethodDataAsync('0xa22cb465')).toStrictEqual({
|
|
|
|
|
name: 'Set Approval For All',
|
|
|
|
|
params: [{ type: 'address' }, { type: 'bool' }],
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
});
|
2021-02-04 19:15:23 +01:00
|
|
|
|
});
|