/**
* 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();
});
});