import React from 'react';
import { render, fireEvent } from '@testing-library/react-native';
import Rate from '../Rate';
describe('Rate', () => {
it('renders correctly with default props', () => {
const { getByTestId } = render();
expect(getByTestId('rate')).toBeTruthy();
});
it('renders correct number of stars', () => {
const { getAllByTestId } = render();
expect(getAllByTestId(/start.*/)).toHaveLength(5);
});
it('handles star click correctly', () => {
const handleChange = jest.fn();
const { getAllByTestId } = render(
);
const stars = getAllByTestId(/start.*/);
fireEvent.press(stars[2]!);
expect(handleChange).toHaveBeenCalledWith(3);
});
it('handles allowClear correctly false', () => {
const handleChange = jest.fn();
const { getAllByTestId } = render(
);
const stars = getAllByTestId(/start.*/);
fireEvent.press(stars[2]!);
expect(handleChange).not.toHaveBeenCalled();
fireEvent.press(stars[1]!);
expect(handleChange).toHaveBeenCalled();
});
it('renders correct number of stars when count is 3', () => {
const { getAllByTestId } = render();
expect(getAllByTestId(/start.*/)).toHaveLength(3);
});
it('renders correct number of stars when count is 7', () => {
const { getAllByTestId } = render();
expect(getAllByTestId(/start.*/)).toHaveLength(7);
});
});