import { render, screen, waitFor } from '@testing-library/react';
import React from 'react';
import { describe, it, vi } from 'vitest';
import { useErc721 } from '../../../../hooks';
import ERC721ApprovedDisplay from './ERC721ApprovedDisplay';
vi.mock('@/hooks', () => ({
useErc721: () => ({
getErc721Approved: vi.fn(),
}),
}));
describe('ERC721ApprovedDisplay', () => {
const mockGetErc721Approved = useErc721().getErc721Approved as jest.Mock;
it('renders without crashing', () => {
render(
);
expect(screen.getByText(/ERC721 Approved Address:/)).toBeInTheDocument();
});
it('fetches and displays the approved address', async () => {
mockGetErc721Approved.mockResolvedValueOnce({
transaction: { to: '0xapprovedAddress' },
});
render(
);
await waitFor(() => {
expect(
screen.getByText(/ERC721 Approved Address: 0xapprovedAddress/)
).toBeInTheDocument();
});
});
it('handles errors gracefully', async () => {
mockGetErc721Approved.mockRejectedValueOnce(new Error('Failed to fetch'));
render(
);
await waitFor(() => {
expect(screen.getByText(/ERC721 Approved Address:/)).toBeInTheDocument();
});
});
});