import { describe, it, expect, vi } from 'vitest';
import { screen, fireEvent } from '@testing-library/react';
import userEvent from '@testing-library/user-event';
import { renderWithProviders } from '@/test/helpers/renderWithProviders';
import CoverLightbox from './CoverLightbox';
describe('CoverLightbox', () => {
it('renders the cover image with the supplied src and alt', () => {
renderWithProviders(
,
);
const img = screen.getByRole('img', { name: 'Album cover' });
expect(img).toHaveAttribute('src', 'https://example/cover.jpg');
});
it('calls onClose when the overlay is clicked', async () => {
const onClose = vi.fn();
renderWithProviders(
,
);
await userEvent.click(screen.getByRole('dialog'));
expect(onClose).toHaveBeenCalledOnce();
});
it('does not call onClose when the image itself is clicked (stops propagation)', async () => {
const onClose = vi.fn();
renderWithProviders(
,
);
await userEvent.click(screen.getByRole('img', { name: 'Album cover' }));
expect(onClose).not.toHaveBeenCalled();
});
it('calls onClose when Escape is pressed', () => {
const onClose = vi.fn();
renderWithProviders(
,
);
fireEvent.keyDown(window, { key: 'Escape' });
expect(onClose).toHaveBeenCalledOnce();
});
it('ignores other keys', () => {
const onClose = vi.fn();
renderWithProviders(
,
);
fireEvent.keyDown(window, { key: 'Enter' });
fireEvent.keyDown(window, { key: 'a' });
expect(onClose).not.toHaveBeenCalled();
});
});