/** * Tests for DeveloperFab component */ import { describe, it, expect } from 'vitest'; import { render, screen } from '@testing-library/react'; import { DeveloperFab } from './DeveloperFab'; import type { AccessLevel, Profile } from './types'; describe('DeveloperFab', () => { it('should render in development mode', () => { const accessLevels: AccessLevel[] = [ { value: 'admin', label: 'Admin' }, { value: 'user', label: 'User' }, ]; render(); // FAB should be present (though button text depends on FAB implementation) expect(screen.getByRole('button')).toBeDefined(); }); // Note: Testing production mode behavior requires build-time environment // which is not feasible in unit tests. This would be tested in E2E tests. it('should render with access levels', () => { const accessLevels: AccessLevel[] = [ { value: 'admin', label: 'Admin' }, { value: 'user', label: 'User' }, ]; render(); // Main button should be present expect(screen.getByRole('button')).toBeDefined(); }); it('should render with profiles', () => { const profiles: Profile[] = [ { id: 'provider-1', name: 'Provider One' }, { id: 'client-1', name: 'Client One' }, ]; render(); // Main button should be present expect(screen.getByRole('button')).toBeDefined(); }); it('should render with storage category by default', () => { render(); // Main button should be present when storage is enabled by default expect(screen.getByRole('button')).toBeDefined(); }); it('should not render when showStorage is false and no other categories', () => { const { container } = render(); // Should render nothing when no categories are configured expect(container.firstChild).toBeNull(); }); it('should render all categories when provided', () => { const accessLevels: AccessLevel[] = [ { value: 'admin', label: 'Admin' }, ]; const profiles: Profile[] = [ { id: 'provider-1', name: 'Provider One' }, ]; render( ); // Main button should be present expect(screen.getByRole('button')).toBeDefined(); }); it('should use correct position prop', () => { const accessLevels: AccessLevel[] = [ { value: 'admin', label: 'Admin' }, ]; const { rerender } = render( ); expect(screen.getByRole('button')).toBeDefined(); rerender( ); expect(screen.getByRole('button')).toBeDefined(); }); });