import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; import { vi } from 'vitest'; import { useErc721 } from '../../../../hooks'; import { ERC721NameDisplay } from './ERC721NameDisplay'; // Mock the useErc721 hook vi.mock('@/hooks', () => ({ useErc721: vi.fn(), })); describe('ERC721NameDisplay', () => { const mockGetErc721Name = vi.fn(); beforeEach(() => { (useErc721 as jest.Mock).mockReturnValue({ getErc721Name: mockGetErc721Name, }); }); afterEach(() => { vi.clearAllMocks(); }); it('renders without crashing', () => { render(); expect(screen.getByText(/ERC721 Token Name:/)).toBeInTheDocument(); }); it('displays the fetched token name', async () => { mockGetErc721Name.mockResolvedValueOnce({ name: 'Mock Token' }); render(); await waitFor(() => { expect( screen.getByText(/ERC721 Token Name: Mock Token/) ).toBeInTheDocument(); }); }); it('handles errors gracefully', async () => { mockGetErc721Name.mockRejectedValueOnce(new Error('Failed to fetch')); render(); await waitFor(() => { expect(screen.getByText(/ERC721 Token Name:/)).toBeInTheDocument(); }); expect(console.error).toHaveBeenCalledWith( 'Failed to fetch ERC721 name:', expect.any(Error) ); }); });