2021-02-04 19:15:23 +01:00
|
|
|
import assert from 'assert';
|
2020-11-07 08:38:12 +01:00
|
|
|
import {
|
|
|
|
TRANSACTION_CATEGORIES,
|
|
|
|
TRANSACTION_GROUP_STATUSES,
|
|
|
|
TRANSACTION_STATUSES,
|
2021-02-04 19:15:23 +01:00
|
|
|
} from '../../../../shared/constants/transaction';
|
|
|
|
import * as utils from './transactions.util';
|
2018-09-19 02:20:28 +02:00
|
|
|
|
2020-02-11 17:51:13 +01:00
|
|
|
describe('Transactions utils', function () {
|
|
|
|
describe('getTokenData', function () {
|
|
|
|
it('should return token data', function () {
|
2020-11-03 00:41:28 +01:00
|
|
|
const tokenData = utils.getTokenData(
|
|
|
|
'0xa9059cbb00000000000000000000000050a9d56c2b8ba9a5c7f2c08c3d26e0499f23a7060000000000000000000000000000000000000000000000000000000000004e20',
|
2021-02-04 19:15:23 +01:00
|
|
|
);
|
|
|
|
assert.ok(tokenData);
|
|
|
|
const { name, args } = tokenData;
|
|
|
|
assert.strictEqual(name, TRANSACTION_CATEGORIES.TOKEN_METHOD_TRANSFER);
|
|
|
|
const to = args._to;
|
|
|
|
const value = args._value.toString();
|
|
|
|
assert.strictEqual(to, '0x50A9D56C2B8BA9A5c7f2C08C3d26E0499F23a706');
|
|
|
|
assert.strictEqual(value, '20000');
|
|
|
|
});
|
2018-09-19 02:20:28 +02:00
|
|
|
|
2020-02-11 17:51:13 +01:00
|
|
|
it('should not throw errors when called without arguments', function () {
|
2021-02-04 19:15:23 +01:00
|
|
|
assert.doesNotThrow(() => utils.getTokenData());
|
|
|
|
});
|
|
|
|
});
|
2018-10-16 00:00:47 +02:00
|
|
|
|
2020-02-11 17:51:13 +01:00
|
|
|
describe('getStatusKey', function () {
|
|
|
|
it('should return the correct status', function () {
|
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-02-04 19:15:23 +01:00
|
|
|
assert.strictEqual(utils.getStatusKey(transaction), expected);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
2020-05-14 04:09:40 +02:00
|
|
|
|
|
|
|
describe('getBlockExplorerUrlForTx', function () {
|
|
|
|
it('should return the correct block explorer url for a transaction', function () {
|
|
|
|
const tests = [
|
|
|
|
{
|
|
|
|
expected: 'https://etherscan.io/tx/0xabcd',
|
2020-07-08 23:05:09 +02:00
|
|
|
networkId: '1',
|
2020-05-14 04:09:40 +02:00
|
|
|
hash: '0xabcd',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
expected: 'https://ropsten.etherscan.io/tx/0xdef0',
|
2020-07-08 23:05:09 +02:00
|
|
|
networkId: '3',
|
2020-05-14 04:09:40 +02:00
|
|
|
hash: '0xdef0',
|
|
|
|
rpcPrefs: {},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
// test handling of `blockExplorerUrl` for a custom RPC
|
|
|
|
expected: 'https://block.explorer/tx/0xabcd',
|
2020-07-08 23:05:09 +02:00
|
|
|
networkId: '31',
|
2020-05-14 04:09:40 +02:00
|
|
|
hash: '0xabcd',
|
|
|
|
rpcPrefs: {
|
|
|
|
blockExplorerUrl: 'https://block.explorer',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
// test handling of trailing `/` in `blockExplorerUrl` for a custom RPC
|
|
|
|
expected: 'https://another.block.explorer/tx/0xdef0',
|
2020-07-08 23:05:09 +02:00
|
|
|
networkId: '33',
|
2020-05-14 04:09:40 +02:00
|
|
|
hash: '0xdef0',
|
|
|
|
rpcPrefs: {
|
|
|
|
blockExplorerUrl: 'https://another.block.explorer/',
|
|
|
|
},
|
|
|
|
},
|
2021-02-04 19:15:23 +01:00
|
|
|
];
|
2020-05-14 04:09:40 +02:00
|
|
|
|
|
|
|
tests.forEach(({ expected, networkId, hash, rpcPrefs }) => {
|
2020-12-03 16:46:22 +01:00
|
|
|
assert.strictEqual(
|
2020-11-03 00:41:28 +01:00
|
|
|
utils.getBlockExplorerUrlForTx(networkId, hash, rpcPrefs),
|
|
|
|
expected,
|
2021-02-04 19:15:23 +01:00
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|