You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
1.1 KiB

import { describe, it, expect, vi } from 'vitest'
import { render, screen, fireEvent } from '@testing-library/svelte'
import Card from './Card.svelte'
describe('Card', () => {
it('renders card title, description, and image', () => {
const card = {
title: 'My Deck',
description: 'A cool flashcard deck.',
imageUrl: 'https://example.com/img.png',
}
render(Card, { props: { card } })
expect(screen.getByText('My Deck')).toBeInTheDocument()
expect(screen.getByText('A cool flashcard deck.')).toBeInTheDocument()
const img = screen.getByRole('img', { name: 'My Deck' })
expect(img).toBeInTheDocument()
expect(img).toHaveAttribute('src', 'https://example.com/img.png')
})
it('calls useCard when Use button is clicked', async () => {
const card = {
title: 'Test Deck',
description: 'Desc',
imageUrl: '/img.png',
}
const logSpy = vi.spyOn(console, 'log').mockImplementation(() => {})
render(Card, { props: { card } })
await fireEvent.click(screen.getByRole('button', { name: 'Use' }))
expect(logSpy).toHaveBeenCalledWith('Test Deck')
logSpy.mockRestore()
})
})

Powered by TurnKey Linux.