import { describe, it, expect, vi } from 'vitest' import { render, screen, fireEvent } from '@testing-library/react' import { AiActionCard } from './AiActionCard' describe('AiActionCard', () => { it('renders label text', () => { render() expect(screen.getByText('Created test.md')).toBeTruthy() }) it('shows pending spinner', () => { render() expect(screen.getByTestId('status-pending')).toBeTruthy() }) it('shows done check', () => { render() expect(screen.getByTestId('status-done')).toBeTruthy() }) it('shows error icon', () => { render() expect(screen.getByTestId('status-error')).toBeTruthy() }) it('is clickable when path and onOpenNote provided', () => { const onOpenNote = vi.fn() render() fireEvent.click(screen.getByTestId('ai-action-card')) expect(onOpenNote).toHaveBeenCalledWith('/vault/test.md') }) it('has button role when clickable', () => { render() expect(screen.getByRole('button')).toBeTruthy() }) it('is not clickable without path', () => { const onOpenNote = vi.fn() render() fireEvent.click(screen.getByTestId('ai-action-card')) expect(onOpenNote).not.toHaveBeenCalled() }) it('is not clickable without onOpenNote', () => { render() const card = screen.getByTestId('ai-action-card') expect(card.getAttribute('role')).toBeNull() }) it('uses lighter background for ui_ tools', () => { render() const card = screen.getByTestId('ai-action-card') expect(card.style.background).toContain('0.06') }) it('uses standard background for vault tools', () => { render() const card = screen.getByTestId('ai-action-card') expect(card.style.background).toContain('0.1') }) })