import { render, fireEvent, waitFor, screen } from '../../../test-utils';
import ProcessingStep from '.';
describe('ProcessingStep', () => {
const PROCESSING_STEP_PROPS = {
isComplete: false,
isError: false,
isSuccess: false,
onAnimationCompleted: jest.fn(),
onClear: jest.fn(),
psButtonText: 'psButtonText',
psProcessingText: 'psProcessingText',
psButtonDisabled: false,
};
let container: HTMLElement;
beforeEach(() => {
const view = render();
container = view.container;
});
test('renders container', async () => {
await waitFor(() => {
const processing = container.querySelector('.droppable-processing-card');
expect(processing).toBeInTheDocument();
});
});
test('renders ProcessIndicator with default status', () => {
expect(screen.getByText(PROCESSING_STEP_PROPS.psProcessingText)).toBeInTheDocument();
});
test('renders ProcessIndicator with success status', async () => {
const { container } = render();
await waitFor(() => {
const processIndicator = container.querySelector('.process-success');
expect(processIndicator).toBeInTheDocument();
});
});
test('renders ProcessIndicator with error status', async () => {
const { container } = render();
await waitFor(() => {
const processIndicator = container.querySelector('.process-danger');
expect(processIndicator).toBeInTheDocument();
});
});
test('renders button when psButtonText is set up', () => {
expect(screen.getByText(PROCESSING_STEP_PROPS.psButtonText)).toBeInTheDocument();
});
test('calls onClear when button is clicked', () => {
fireEvent.click(screen.getByText(PROCESSING_STEP_PROPS.psButtonText));
expect(PROCESSING_STEP_PROPS.onClear).toHaveBeenCalledTimes(1);
});
});