/**
 * Basic test file to verify state components are properly exported and typed
 */

import { LoadingWrapper } from '../LoadingWrapper';
import { ErrorDisplay } from '../ErrorDisplay';
import { EmptyState } from '../EmptyState';
import { StateContainer } from '../StateContainer';
import { useDataFetching } from '../../hooks/useDataFetching';
import { ApiError } from '@/lib/api/base/ApiError';

// This file just verifies that all components can be imported and are properly typed
// Full testing would be done in separate test files

describe('State Components - Basic Type Checking', () => {
  it('should export all components', () => {
    expect(LoadingWrapper).toBeDefined();
    expect(ErrorDisplay).toBeDefined();
    expect(EmptyState).toBeDefined();
    expect(StateContainer).toBeDefined();
    expect(useDataFetching).toBeDefined();
  });

  it('should have proper component signatures', () => {
    // LoadingWrapper accepts props
    const loadingProps = {
      variant: 'spinner' as const,
      message: 'Loading...',
      size: 'md' as const,
    };
    expect(loadingProps).toBeDefined();

    // ErrorDisplay accepts ApiError
    const mockError = new ApiError(
      'Test error',
      'NETWORK_ERROR',
      { timestamp: new Date().toISOString() }
    );
    expect(mockError).toBeDefined();
    expect(mockError.isRetryable()).toBe(true);

    // EmptyState accepts icon and title
    const emptyProps = {
      icon: require('lucide-react').Activity,
      title: 'No data',
    };
    expect(emptyProps).toBeDefined();

    // StateContainer accepts data and state
    const stateProps = {
      data: null,
      isLoading: false,
      error: null,
      retry: async () => {},
      children: (data: any) => <div>{JSON.stringify(data)}</div>,
    };
    expect(stateProps).toBeDefined();
  });
});