import '@testing-library/jest-dom';
import { useNFTContext } from '@/nft/components/NFTProvider';
import { useOnchainKit } from '@/useOnchainKit';
import { render } from '@testing-library/react';
import { type Mock, beforeEach, describe, expect, it, vi } from 'vitest';
import { NFTCreator } from './NFTCreator';
vi.mock('@/useOnchainKit', () => ({
useOnchainKit: vi.fn(),
}));
vi.mock('@/nft/components/NFTProvider', () => ({
useNFTContext: vi.fn(),
}));
vi.mock('@/identity', async () => ({
...(await vi.importActual('@/identity')),
Identity: ({ className }: { className: string }) => (
Identity
),
}));
describe('NFTCreator', () => {
beforeEach(() => {
(useOnchainKit as Mock).mockReturnValue({ schemaId: 'test-schema-id' });
(useNFTContext as Mock).mockReturnValue({ creatorAddress: '0x123' });
});
it('should render null when creatorAddress is not provided', () => {
(useNFTContext as Mock).mockReturnValue({ creatorAddress: null });
const { container } = render();
expect(container.firstChild).toBeNull();
});
it('should render the Identity component when creatorAddress is provided', () => {
const { getByText } = render();
expect(getByText('Identity')).toBeInTheDocument();
});
it('should apply the provided className', () => {
const { container } = render();
expect(container.firstChild).toHaveClass('custom-class');
});
});