import { render, screen } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import { Carousel, CarouselContent, CarouselItem, CarouselPrevious, CarouselNext, } from './carousel'; import React from 'react'; // Mock Embla vi.mock('embla-carousel-react', () => ({ default: () => [ (node: HTMLElement) => node, // emblaRef { // api on: vi.fn(), off: vi.fn(), scrollPrev: vi.fn(), scrollNext: vi.fn(), canScrollPrev: () => true, canScrollNext: () => true, reInit: vi.fn(), }, ], })); describe('Carousel', () => { it('renders correctly with items', () => { render( Item 1 Item 2 ); expect(screen.getByText('Item 1')).toBeInTheDocument(); expect(screen.getByText('Item 2')).toBeInTheDocument(); }); it('has correct data-slot attributes', () => { const { container } = render( Item ); expect(container.querySelector('[data-slot="carousel"]')).toBeInTheDocument(); expect(container.querySelector('[data-slot="carousel-content"]')).toBeInTheDocument(); expect(container.querySelector('[data-slot="carousel-item"]')).toBeInTheDocument(); expect(container.querySelector('[data-slot="carousel-previous"]')).toBeInTheDocument(); expect(container.querySelector('[data-slot="carousel-next"]')).toBeInTheDocument(); }); it('accessibility roles are present', () => { const { container } = render( Item ); expect(container.querySelector('[role="region"]')).toBeInTheDocument(); expect(container.querySelector('[role="group"]')).toBeInTheDocument(); }); });