/** * Component: Card Size Controls Tests * Documentation: documentation/frontend/components.md */ // @vitest-environment jsdom import React from 'react'; import { fireEvent, render, screen } from '@testing-library/react'; import { beforeEach, describe, expect, it, vi } from 'vitest'; describe('CardSizeControls', () => { beforeEach(() => { window.innerWidth = 1300; }); it('moves to the next visible size when zooming in or out', async () => { const onSizeChange = vi.fn(); const { CardSizeControls } = await import('@/components/ui/CardSizeControls'); render(); fireEvent.click(screen.getByRole('button', { name: 'Zoom in' })); expect(onSizeChange).toHaveBeenCalledWith(6); onSizeChange.mockClear(); fireEvent.click(screen.getByRole('button', { name: 'Zoom out' })); expect(onSizeChange).toHaveBeenCalledWith(4); }); it('disables zoom controls at the size boundaries', async () => { const onSizeChange = vi.fn(); const { CardSizeControls } = await import('@/components/ui/CardSizeControls'); const { rerender } = render(); expect(screen.getByRole('button', { name: 'Zoom out' })).toBeDisabled(); rerender(); expect(screen.getByRole('button', { name: 'Zoom in' })).toBeDisabled(); }); });