/**
* Component: Flag Config Row Tests
* Documentation: documentation/phase3/ranking-algorithm.md
*/
// @vitest-environment jsdom
import { describe, expect, it, vi } from 'vitest';
import { fireEvent, render, screen } from '@testing-library/react';
import { FlagConfigRow } from '@/components/admin/FlagConfigRow';
import type { IndexerFlagConfig } from '@/lib/utils/ranking-algorithm';
describe('FlagConfigRow', () => {
it('updates name and modifier values and allows removal', () => {
const onChange = vi.fn();
const onRemove = vi.fn();
const config: IndexerFlagConfig = { name: 'Freeleech', modifier: 20 };
render();
fireEvent.change(screen.getByRole('textbox'), { target: { value: 'Internal' } });
fireEvent.change(screen.getByRole('slider'), { target: { value: '-15' } });
fireEvent.click(screen.getByTitle('Remove flag rule'));
expect(onChange).toHaveBeenCalledWith({ name: 'Internal', modifier: 20 });
expect(onChange).toHaveBeenCalledWith({ name: 'Freeleech', modifier: -15 });
expect(onRemove).toHaveBeenCalledTimes(1);
});
it('shows disqualification warning for large negative modifiers', () => {
render(
);
expect(screen.getByText(/Would disqualify/i)).toBeInTheDocument();
});
});