import { renderToStaticMarkup } from 'react-dom/server' import { _Transactions as Transactions } from '@/components/_Transaction/_Transactions' import { use_TransactionsState } from '@/slices/_transactions/hooks' import { SYN, USDC } from '@/constants/tokens/bridgeable' import transactionsReducer, { completeTransaction, } from '@/slices/_transactions/reducer' import { ETH, HYPEREVM, HYPERLIQUID } from '@/constants/chains/master' jest.mock('../slices/_transactions/hooks', () => ({ use_TransactionsState: jest.fn(), })) jest.mock('../slices/wallet/hooks', () => ({ useWalletState: () => ({ isWalletPending: false }), })) jest.mock('../utils/hooks/useIntervalTimer', () => ({ useIntervalTimer: () => 123, })) jest.mock('../components/_Transaction/_Transaction', () => ({ _Transaction: ({ status, destinationChain }) => ( {status} ), })) describe('HyperCore transaction display', () => { it.each([ [SYN, 'SYN', 'pending', 'pending', 1337], [SYN, 'SYN', 'completed', 'completed', 1337], [USDC, '', 'pending', 'completed', 1337], [USDC, '', 'pending', 'completed', 998], ])( 'uses the tracked status for %s through %s (%s)', (token, bridgeModuleName, storedStatus, displayedStatus, storedChainId) => { jest.mocked(use_TransactionsState).mockReturnValue({ transactions: [ { address: '0xabc', originChain: { id: 1 }, destinationChain: { id: storedChainId, chainSymbol: 'HYPERLIQUID' }, originToken: token, destinationToken: token, originTxHash: '0xsyn', originValue: '1', bridgeModuleName, timestamp: 123, status: storedStatus, }, ], } as any) expect( renderToStaticMarkup() ).toContain(`${displayedStatus}`) } ) it('persists an observed HyperEVM fallback as the completed destination', () => { const originTxHash = '0xfallback' const state = { transactions: [ { originTxHash, originChain: ETH, originToken: SYN, destinationChain: HYPERLIQUID, destinationToken: SYN, status: 'pending', }, ], } const nextState = transactionsReducer( state, completeTransaction({ originTxHash, kappa: originTxHash, destinationChain: HYPEREVM, }) ) expect(nextState.transactions[0]).toMatchObject({ status: 'completed', destinationChain: HYPEREVM, }) }) })