import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; import { describe, it, vi } from 'vitest'; import { useErc721 } from '../../../../hooks'; import { ERC721OwnerDisplay } from './ERC721OwnerDisplay'; vi.mock('@/hooks', () => ({ useErc721: vi.fn(), })); vi.mock('framer-motion', () => ({ motion: { div: ({ children }: { children: React.ReactNode }) =>
{children}
, }, })); describe('ERC721OwnerDisplay', () => { it('renders the component and fetches the owner', async () => { const mockGetErc721OwnerOf = vi .fn() .mockResolvedValue({ owner: '0xOwnerAddress' }); (useErc721 as jest.Mock).mockReturnValue({ getErc721OwnerOf: mockGetErc721OwnerOf, }); render( ); await waitFor(() => expect(mockGetErc721OwnerOf).toHaveBeenCalledWith({ tokenId: '1', address: '0x1234567890abcdef1234567890abcdef12345678', chainId: 1, }) ); expect( screen.getByText('ERC721 Token Owner: 0xOwnerAddress') ).toBeInTheDocument(); }); it('displays an error message if fetching the owner fails', async () => { const mockGetErc721OwnerOf = vi .fn() .mockRejectedValue(new Error('Failed to fetch owner')); (useErc721 as jest.Mock).mockReturnValue({ getErc721OwnerOf: mockGetErc721OwnerOf, }); render( ); await waitFor(() => expect(mockGetErc721OwnerOf).toHaveBeenCalled()); expect(screen.getByText('ERC721 Token Owner:')).toBeInTheDocument(); }); });