feat(explorer): add determinsitic id to transfer tx (#5112)
This commit is contained in:
parent
6c9272cd53
commit
c7d0025b4f
@ -12,6 +12,7 @@ import {
|
|||||||
SPECIAL_CASE_NETWORK,
|
SPECIAL_CASE_NETWORK,
|
||||||
SPECIAL_CASE_NETWORK_ID,
|
SPECIAL_CASE_NETWORK_ID,
|
||||||
} from '../../links/party-link/party-link';
|
} from '../../links/party-link/party-link';
|
||||||
|
import { txSignatureToDeterministicId } from '../lib/deterministic-ids';
|
||||||
|
|
||||||
type Transfer = components['schemas']['commandsv1Transfer'];
|
type Transfer = components['schemas']['commandsv1Transfer'];
|
||||||
|
|
||||||
@ -63,10 +64,16 @@ export const TxDetailsTransfer = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<TableWithTbody className="mb-8" allowWrap={true}>
|
<TableWithTbody className="mb-8" allowWrap={true}>
|
||||||
<TableRow modifier="bordered">
|
<TableRow modifier="bordered" data-testid="type">
|
||||||
<TableCell {...sharedHeaderProps}>{t('Type')}</TableCell>
|
<TableCell {...sharedHeaderProps}>{t('Type')}</TableCell>
|
||||||
<TableCell>{getTypeLabelForTransfer(transfer)}</TableCell>
|
<TableCell>{getTypeLabelForTransfer(transfer)}</TableCell>
|
||||||
</TableRow>
|
</TableRow>
|
||||||
|
<TableRow modifier="bordered" data-testid="id">
|
||||||
|
<TableCell {...sharedHeaderProps}>{t('Transfer ID')}</TableCell>
|
||||||
|
<TableCell>
|
||||||
|
{txSignatureToDeterministicId(txData.signature.value)}
|
||||||
|
</TableCell>
|
||||||
|
</TableRow>
|
||||||
<TxDetailsShared
|
<TxDetailsShared
|
||||||
txData={txData}
|
txData={txData}
|
||||||
pubKey={pubKey}
|
pubKey={pubKey}
|
||||||
@ -74,7 +81,7 @@ export const TxDetailsTransfer = ({
|
|||||||
hideTypeRow={true}
|
hideTypeRow={true}
|
||||||
/>
|
/>
|
||||||
{from ? (
|
{from ? (
|
||||||
<TableRow modifier="bordered">
|
<TableRow modifier="bordered" data-testid="from">
|
||||||
<TableCell>{t('From')}</TableCell>
|
<TableCell>{t('From')}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<PartyLink id={from} />
|
<PartyLink id={from} />
|
||||||
@ -82,7 +89,7 @@ export const TxDetailsTransfer = ({
|
|||||||
</TableRow>
|
</TableRow>
|
||||||
) : null}
|
) : null}
|
||||||
{transfer.to ? (
|
{transfer.to ? (
|
||||||
<TableRow modifier="bordered">
|
<TableRow modifier="bordered" data-testid="to">
|
||||||
<TableCell>{t('To')}</TableCell>
|
<TableCell>{t('To')}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<PartyLink id={transfer.to} />
|
<PartyLink id={transfer.to} />
|
||||||
@ -90,7 +97,7 @@ export const TxDetailsTransfer = ({
|
|||||||
</TableRow>
|
</TableRow>
|
||||||
) : null}
|
) : null}
|
||||||
{transfer.asset && transfer.amount ? (
|
{transfer.asset && transfer.amount ? (
|
||||||
<TableRow modifier="bordered">
|
<TableRow modifier="bordered" data-testid="amount">
|
||||||
<TableCell>{t('Amount')}</TableCell>
|
<TableCell>{t('Amount')}</TableCell>
|
||||||
<TableCell>
|
<TableCell>
|
||||||
<SizeInAsset assetId={transfer.asset} size={transfer.amount} />
|
<SizeInAsset assetId={transfer.asset} size={transfer.amount} />
|
||||||
|
@ -1,6 +1,15 @@
|
|||||||
import { getTypeLabelForTransfer } from './details/tx-transfer';
|
import type { BlockExplorerTransactionResult } from '../../routes/types/block-explorer-response';
|
||||||
|
import type { TendermintBlocksResponse } from '../../routes/blocks/tendermint-blocks-response';
|
||||||
import type { components } from '../../../types/explorer';
|
import type { components } from '../../../types/explorer';
|
||||||
|
|
||||||
|
import {
|
||||||
|
TxDetailsTransfer,
|
||||||
|
getTypeLabelForTransfer,
|
||||||
|
} from './details/tx-transfer';
|
||||||
|
import { MockedProvider } from '@apollo/client/testing';
|
||||||
|
import { MemoryRouter } from 'react-router-dom';
|
||||||
|
import { render } from '@testing-library/react';
|
||||||
|
|
||||||
type Transfer = components['schemas']['commandsv1Transfer'];
|
type Transfer = components['schemas']['commandsv1Transfer'];
|
||||||
|
|
||||||
describe('TX: Transfer: getLabelForTransfer', () => {
|
describe('TX: Transfer: getLabelForTransfer', () => {
|
||||||
@ -56,3 +65,70 @@ describe('TX: Transfer: getLabelForTransfer', () => {
|
|||||||
expect(getTypeLabelForTransfer(mock)).toEqual('Transfer');
|
expect(getTypeLabelForTransfer(mock)).toEqual('Transfer');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('TxDetailsTransfer', () => {
|
||||||
|
const mockBlockData = {
|
||||||
|
result: {
|
||||||
|
block: {
|
||||||
|
header: {
|
||||||
|
height: '123',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const mockTxData: Partial<BlockExplorerTransactionResult> = {
|
||||||
|
hash: 'test',
|
||||||
|
submitter:
|
||||||
|
'e1943eea46fed576cf2be42972f3c5515ad3d0ac7ac013f56677c12a53a1b3ed',
|
||||||
|
command: {
|
||||||
|
nonce: '5188810881378065222',
|
||||||
|
blockHeight: '14951513',
|
||||||
|
transfer: {
|
||||||
|
fromAccountType: 'ACCOUNT_TYPE_GENERAL',
|
||||||
|
to: '78432a2808f20b18a46ccc6a917bdc4d63c2b9e7007f777bdcab5a9f462c5ba6',
|
||||||
|
toAccountType: 'ACCOUNT_TYPE_GENERAL',
|
||||||
|
asset:
|
||||||
|
'dd20590509d30d20bdbbe64dc1090c1140c7690121a9b9940bc66f62dfa2e599',
|
||||||
|
amount: '4800000000',
|
||||||
|
reference: '',
|
||||||
|
oneOff: {
|
||||||
|
deliverOn: '0',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
signature: {
|
||||||
|
value:
|
||||||
|
'610c2e196a7d4fed4413b9e82af267b1ff3e30e943df3a3d28096fd60604d430d752fbaf6dd4f84d496be78885bb6118f40560bff7832c06bd7a3d67b718b700',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
it('renders basic transfer details', () => {
|
||||||
|
const { getByTestId } = render(
|
||||||
|
<MockedProvider>
|
||||||
|
<MemoryRouter>
|
||||||
|
<TxDetailsTransfer
|
||||||
|
txData={mockTxData as BlockExplorerTransactionResult}
|
||||||
|
pubKey={mockTxData.command.submitter}
|
||||||
|
blockData={mockBlockData as TendermintBlocksResponse}
|
||||||
|
/>
|
||||||
|
</MemoryRouter>
|
||||||
|
</MockedProvider>
|
||||||
|
);
|
||||||
|
|
||||||
|
const id = getByTestId('id');
|
||||||
|
expect(id.children[0].textContent).toEqual('Transfer ID');
|
||||||
|
expect(id.children[1].textContent).toEqual(
|
||||||
|
'51f3bab5eb2637651012507a64d497790a734248792c16e5cf36df8984074fbd'
|
||||||
|
);
|
||||||
|
|
||||||
|
const type = getByTestId('type');
|
||||||
|
expect(type.children[1].textContent).toEqual('Transfer');
|
||||||
|
|
||||||
|
const from = getByTestId('from');
|
||||||
|
expect(from.children[1].textContent).toEqual(mockTxData.submitter);
|
||||||
|
|
||||||
|
const to = getByTestId('to');
|
||||||
|
expect(to.children[1].textContent).toEqual(mockTxData.command.transfer.to);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user