59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
/**
|
|
* 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();
|
|
});
|
|
}); |