import { describe, expect, it } from 'vitest'
import { render, screen } from '@testing-library/react'
import { I18nProvider } from '@/lib/i18n-context'
import { DiffView } from '@/components/DiffView'
describe('DiffView', () => {
it('counts blank-line additions and removals in diff stats', () => {
render(
)
expect(screen.getByText('+1')).toBeInTheDocument()
expect(screen.getByText('-1')).toBeInTheDocument()
expect(screen.getByText('example.ts')).toBeInTheDocument()
})
it('renders a single visible header in preview mode', () => {
render(
)
expect(screen.getAllByText('single-header.ts')).toHaveLength(1)
})
it('reports zero lines for an empty side of the diff', () => {
render(
)
expect(screen.getByText('0 → 1 lines')).toBeInTheDocument()
expect(screen.getAllByText('+1').length).toBeGreaterThan(0)
})
it('keeps comfortable diff rows left-aligned with aligned line-number columns', () => {
const oldString = Array.from({ length: 123 }, (_, index) => `old ${index + 1}`).join('\n')
const newString = `${oldString}\nnew line`
const { container } = render(
)
expect(container.querySelector('.leading-6')).not.toBeNull()
const row = container.querySelector('[style*="grid-template-columns: 3ch 3ch max-content"]')
expect(row).not.toBeNull()
expect(row?.children[0]).toHaveClass('text-left')
expect(row?.children[1]).toHaveClass('text-left')
})
})