import { strict as assert } from 'assert'; import { MAINNET_CHAIN_ID, MAINNET_NETWORK_ID, ROPSTEN_CHAIN_ID, ROPSTEN_NETWORK_ID, } from '../../constants/network'; import { getBlockExplorerUrlForTx } from '../transaction.utils'; const tests = [ { expected: 'https://etherscan.io/tx/0xabcd', transaction: { metamaskNetworkId: MAINNET_NETWORK_ID, hash: '0xabcd', }, }, { expected: 'https://ropsten.etherscan.io/tx/0xdef0', transaction: { metamaskNetworkId: ROPSTEN_NETWORK_ID, hash: '0xdef0', }, rpcPrefs: {}, }, { // test handling of `blockExplorerUrl` for a custom RPC expected: 'https://block.explorer/tx/0xabcd', transaction: { metamaskNetworkId: '31', hash: '0xabcd', }, rpcPrefs: { blockExplorerUrl: 'https://block.explorer', }, }, { // test handling of trailing `/` in `blockExplorerUrl` for a custom RPC expected: 'https://another.block.explorer/tx/0xdef0', transaction: { networkId: '33', hash: '0xdef0', }, rpcPrefs: { blockExplorerUrl: 'https://another.block.explorer/', }, }, { expected: 'https://etherscan.io/tx/0xabcd', transaction: { chainId: MAINNET_CHAIN_ID, hash: '0xabcd', }, }, { expected: 'https://ropsten.etherscan.io/tx/0xdef0', transaction: { chainId: ROPSTEN_CHAIN_ID, hash: '0xdef0', }, rpcPrefs: {}, }, { // test handling of `blockExplorerUrl` for a custom RPC expected: 'https://block.explorer/tx/0xabcd', transaction: { chainId: '0x1f', hash: '0xabcd', }, rpcPrefs: { blockExplorerUrl: 'https://block.explorer', }, }, { // test handling of trailing `/` in `blockExplorerUrl` for a custom RPC expected: 'https://another.block.explorer/tx/0xdef0', transaction: { chainId: '0x21', hash: '0xdef0', }, rpcPrefs: { blockExplorerUrl: 'https://another.block.explorer/', }, }, ]; describe('getBlockExplorerUrlForTx', function () { tests.forEach((test) => { it(`should return '${test.expected}' for transaction with hash: '${test.transaction.hash}'`, function () { assert.strictEqual( getBlockExplorerUrlForTx(test.transaction, test.rpcPrefs), test.expected, ); }); }); });