import { describe, it, expect } from 'vitest';
import { render, screen } from '@testing-library/react';
import GroundednessScore from './GroundednessScore.jsx';
describe('GroundednessScore', () => {
it('renders nothing when score is null', () => {
const { container } = render();
expect(container.innerHTML).toBe('');
});
it('renders nothing when score is undefined', () => {
const { container } = render();
expect(container.innerHTML).toBe('');
});
it('renders green level for score >= 0.75', () => {
render();
const el = screen.getByText(/Grounded: 85%/);
expect(el).toHaveClass('green');
});
it('renders green at exactly 0.75 boundary', () => {
render();
const el = screen.getByText(/Grounded: 75%/);
expect(el).toHaveClass('green');
});
it('renders gold level for score >= 0.50 and < 0.75', () => {
render();
const el = screen.getByText(/Grounded: 60%/);
expect(el).toHaveClass('gold');
});
it('renders gold at exactly 0.50 boundary', () => {
render();
const el = screen.getByText(/Grounded: 50%/);
expect(el).toHaveClass('gold');
});
it('renders red level for score < 0.50', () => {
render();
const el = screen.getByText(/Grounded: 30%/);
expect(el).toHaveClass('red');
});
it('renders 0% for score of 0', () => {
render();
const el = screen.getByText(/Grounded: 0%/);
expect(el).toHaveClass('red');
});
it('renders 100% for score of 1', () => {
render();
const el = screen.getByText(/Grounded: 100%/);
expect(el).toHaveClass('green');
});
it('includes the correct label text for each level', () => {
const { rerender } = render();
expect(screen.getByText(/Factually reliable response/)).toBeInTheDocument();
rerender();
expect(screen.getByText(/minor drift from source/)).toBeInTheDocument();
rerender();
expect(screen.getByText(/factually inaccurate or hallucination/)).toBeInTheDocument();
});
});