/**
* Component: Auth Method Step Tests
* Documentation: documentation/setup-wizard.md
*/
// @vitest-environment jsdom
import React from 'react';
import { fireEvent, render, screen } from '@testing-library/react';
import { describe, expect, it, vi } from 'vitest';
describe('AuthMethodStep', () => {
it('highlights the selected auth method', async () => {
const { AuthMethodStep } = await import('@/app/setup/steps/AuthMethodStep');
const { rerender } = render(
);
const oidcLabel = screen.getByRole('radio', { name: /OIDC Provider/i }).closest('label');
const manualLabel = screen.getByRole('radio', { name: /Manual Registration/i }).closest('label');
const bothLabel = screen.getByRole('radio', { name: /Both/i }).closest('label');
expect(oidcLabel).toHaveClass('border-blue-500');
expect(manualLabel).toHaveClass('border-gray-200');
expect(bothLabel).toHaveClass('border-gray-200');
rerender(
);
expect(screen.getByRole('radio', { name: /Manual Registration/i }).closest('label')).toHaveClass('border-blue-500');
rerender(
);
expect(screen.getByRole('radio', { name: /Both/i }).closest('label')).toHaveClass('border-blue-500');
});
it('updates auth method and navigates', async () => {
const onChange = vi.fn();
const onNext = vi.fn();
const onBack = vi.fn();
const { AuthMethodStep } = await import('@/app/setup/steps/AuthMethodStep');
const { rerender } = render(
);
fireEvent.click(screen.getByRole('radio', { name: /Manual Registration/i }));
expect(onChange).toHaveBeenCalledWith('manual');
rerender(
);
fireEvent.click(screen.getByRole('radio', { name: /OIDC Provider/i }));
expect(onChange).toHaveBeenCalledWith('oidc');
rerender(
);
fireEvent.click(screen.getByRole('radio', { name: /Both/i }));
expect(onChange).toHaveBeenCalledWith('both');
fireEvent.click(screen.getByRole('button', { name: 'Back' }));
fireEvent.click(screen.getByRole('button', { name: 'Next' }));
expect(onBack).toHaveBeenCalled();
expect(onNext).toHaveBeenCalled();
});
});