import { render, screen, fireEvent } from '@testing-library/react'; import { describe, it, expect, vi } from 'vitest'; import BookCard from './BookCard'; describe('BookCard', () => { const mockBook = { title: 'Test Book', author: 'Test Author', image_url: 'http://example.com/image.jpg' }; it('renders book details correctly', () => { render(); expect(screen.getByText('Test Book')).toBeInTheDocument(); expect(screen.getByText('Test Author')).toBeInTheDocument(); expect(screen.getByRole('img')).toHaveAttribute('src', mockBook.image_url); }); it('calls onRecommend when a method button is clicked', () => { const onRecommend = vi.fn(); render(); const hybridButton = screen.getByTitle('Hybrid'); fireEvent.click(hybridButton); expect(onRecommend).toHaveBeenCalledWith(mockBook.title, 'hybrid'); }); });