/* @vitest-environment jsdom */ import { fireEvent, render, screen } from '@testing-library/react'; import { expect, test, vi } from 'vitest'; import { PlatformPillSwitch } from './PlatformPillSwitch'; test('renders checked pill switch with platform chrome', () => { render( {}} />, ); const switchInput = screen.getByRole('switch', { name: 'AI重绘' }); expect(switchInput).toHaveProperty('checked', true); expect(screen.getByText('AI重绘').closest('label')?.className).toContain( 'bg-white/94', ); expect(screen.getByText('AI重绘').closest('label')?.className).toContain( 'backdrop-blur', ); }); test('calls onChange when toggled', () => { const onChange = vi.fn(); render( , ); fireEvent.click(screen.getByRole('switch', { name: 'AI重绘' })); expect(onChange).toHaveBeenCalledTimes(1); }); test('keeps disabled switch inert and styled as disabled', () => { const onChange = vi.fn(); render( , ); const switchInput = screen.getByRole('switch', { name: 'AI重绘' }); expect(switchInput).toHaveProperty('disabled', true); expect(screen.getByText('AI重绘').closest('label')?.className).toContain( 'cursor-not-allowed', ); }); test('keeps local placement classes', () => { render( {}} />, ); expect(screen.getByText('AI重绘').closest('label')?.className).toContain( 'bottom-3', ); });