import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; import { vi } from 'vitest'; import { useErc721 } from '../../../../hooks'; import { ERC721IsApprovedForAllDisplay } from './ERC721IsApprovedForAllDisplay'; vi.mock('@/hooks', () => ({ useErc721: vi.fn(), })); describe('ERC721IsApprovedForAllDisplay', () => { const mockGetErc721IsApprovedForAll = vi.fn(); beforeEach(() => { (useErc721 as jest.Mock).mockReturnValue({ getErc721IsApprovedForAll: mockGetErc721IsApprovedForAll, }); }); afterEach(() => { vi.clearAllMocks(); }); it('renders loading state initially', () => { render( ); expect( screen.getByText('ERC721 Is Approved For All: Loading...') ).toBeInTheDocument(); }); it('renders approval status when fetched successfully', async () => { mockGetErc721IsApprovedForAll.mockResolvedValue({ isApproved: true }); render( ); await waitFor(() => { expect( screen.getByText('ERC721 Is Approved For All: true') ).toBeInTheDocument(); }); }); it('renders error message when fetch fails', async () => { console.error = vi.fn(); // Suppress error logging mockGetErc721IsApprovedForAll.mockRejectedValue(new Error('Fetch failed')); render( ); await waitFor(() => { expect( screen.getByText('ERC721 Is Approved For All: Loading...') ).toBeInTheDocument(); }); expect(console.error).toHaveBeenCalledWith( 'Failed to fetch ERC721 approval status:', expect.any(Error) ); }); });