import '@testing-library/jest-dom'; import { fireEvent, render, screen, within } from '@testing-library/react'; import type { Address } from 'viem'; import { beforeEach, describe, expect, it, vi } from 'vitest'; import { TokenChip } from './TokenChip'; describe('TokenChip Component', () => { beforeEach(() => { vi.clearAllMocks(); }); it('should render', async () => { const token = { address: '0x123' as Address, chainId: 1, decimals: 2, image: 'imageURL', name: 'Ether', symbol: 'ETH', }; render(); const buttonElement = screen.getByRole('button'); expect(buttonElement).toBeInTheDocument(); const imgElement = within(buttonElement).getByRole('img'); const spanElement = within(buttonElement).getByText(token.symbol); expect(imgElement).toBeInTheDocument(); expect(spanElement).toBeInTheDocument(); }); it('should render a placeholder if no image', async () => { const token = { address: '0x123' as Address, chainId: 1, decimals: 2, image: null, name: 'Ether', symbol: 'ETH', }; render(); const buttonElement = screen.getByRole('button'); expect(buttonElement).toBeInTheDocument(); const imgElement = screen.getByTestId('ockTokenImage_NoImage'); const spanElement = within(buttonElement).getByText(token.symbol); expect(imgElement).toBeInTheDocument(); expect(spanElement).toBeInTheDocument(); }); it('should register a click on press', async () => { const token = { address: '0x123' as Address, chainId: 1, decimals: 2, image: 'imageURL', name: 'Ether', symbol: 'ETH', }; const handleClick = vi.fn(); render(); const button = screen.getByTestId('ockTokenChip_Button'); fireEvent.click(button); expect(handleClick).toHaveBeenCalledTimes(1); }); });