52 lines
1.9 KiB
TypeScript
52 lines
1.9 KiB
TypeScript
import { describe, it, expect, vi } from 'vitest'
|
|
import { render, screen } from '@testing-library/react'
|
|
import userEvent from '@testing-library/user-event'
|
|
import { Header } from './Header'
|
|
|
|
describe('Header', () => {
|
|
it('renders header with default title', () => {
|
|
render(<Header />)
|
|
expect(screen.getByTestId('header-title')).toHaveTextContent('Föräldraledigplannerare')
|
|
})
|
|
|
|
it('renders header with custom title', () => {
|
|
render(<Header title="Custom Title" />)
|
|
expect(screen.getByTestId('header-title')).toHaveTextContent('Custom Title')
|
|
})
|
|
|
|
it('renders logout button when onLogout provided', () => {
|
|
const onLogout = vi.fn()
|
|
render(<Header onLogout={onLogout} />)
|
|
const button = screen.getByTestId('logout-button')
|
|
expect(button).toBeInTheDocument()
|
|
})
|
|
|
|
it('calls onLogout when logout button clicked', async () => {
|
|
const onLogout = vi.fn()
|
|
render(<Header onLogout={onLogout} />)
|
|
const button = screen.getByTestId('logout-button')
|
|
await userEvent.click(button)
|
|
expect(onLogout).toHaveBeenCalled()
|
|
})
|
|
|
|
it('renders workspace selector button when onWorkspaceSelect provided', () => {
|
|
const onWorkspaceSelect = vi.fn()
|
|
render(<Header onWorkspaceSelect={onWorkspaceSelect} />)
|
|
expect(screen.getByTestId('workspace-selector')).toBeInTheDocument()
|
|
})
|
|
|
|
it('calls onWorkspaceSelect when workspace button clicked', async () => {
|
|
const onWorkspaceSelect = vi.fn()
|
|
render(<Header onWorkspaceSelect={onWorkspaceSelect} />)
|
|
const button = screen.getByTestId('workspace-selector')
|
|
await userEvent.click(button)
|
|
expect(onWorkspaceSelect).toHaveBeenCalled()
|
|
})
|
|
|
|
it('does not render buttons when no handlers provided', () => {
|
|
render(<Header />)
|
|
expect(screen.queryByTestId('logout-button')).not.toBeInTheDocument()
|
|
expect(screen.queryByTestId('workspace-selector')).not.toBeInTheDocument()
|
|
})
|
|
})
|