Files
learning-planner/src/App.test.tsx

37 lines
1.8 KiB
TypeScript

import { render, screen } from '@testing-library/react'
import userEvent from '@testing-library/user-event'
import { describe, expect, it } from 'vitest'
import App from './App'
describe('Learning Planner', () => {
it('renders a useful seeded dashboard', () => {
render(<App />)
expect(screen.getByRole('heading', { name: /good progress starts/i })).toBeInTheDocument()
expect(screen.getAllByText('Master practical TypeScript patterns').length).toBeGreaterThan(0)
expect(screen.getByText('Due this week')).toBeInTheDocument()
})
it('validates and creates a goal', async () => {
const user = userEvent.setup()
render(<App />)
await user.click(screen.getByRole('button', { name: 'Learning goals' }))
await user.click(screen.getByRole('button', { name: 'New goal' }))
await user.click(screen.getByRole('button', { name: 'Save goal' }))
expect(screen.getByText('Enter a goal title.')).toBeInTheDocument()
await user.type(screen.getByLabelText(/Goal title/), 'Learn browser APIs')
await user.type(screen.getByLabelText(/Category/), 'Web platform')
await user.type(screen.getByLabelText(/Target date/), '2026-12-01')
await user.click(screen.getByRole('button', { name: 'Save goal' }))
expect(screen.getByRole('heading', { name: 'Learn browser APIs' })).toBeInTheDocument()
})
it('filters the task library', async () => {
const user = userEvent.setup()
render(<App />)
await user.click(screen.getByRole('button', { name: 'All tasks' }))
await user.type(screen.getByLabelText('Search tasks'), 'Firefox')
expect(screen.getByRole('heading', { name: 'Run Firefox regression suite' })).toBeInTheDocument()
expect(screen.queryByRole('heading', { name: 'Add safe import validation' })).not.toBeInTheDocument()
})
})