import React from 'react';
import { render } from '@testing-library/react-native';
import CarouselPageIndicator from '../CarouselPageIndicator';
import { ReactTestRendererJSON } from 'react-test-renderer';
import {
  DEFAULT_CAROUSEL_INDICATOR_ACTIVE_STYLE,
  DEFAULT_CAROUSEL_INDICATOR_INACTIVE_STYLE,
} from '../constants';
describe('CarouselPageIndicator', () => {
  it('renders with multiple items', () => {
    const { toJSON } = render(
      
    );
    expect(toJSON()).toMatchSnapshot();
    const { children } = toJSON() as ReactTestRendererJSON;
    expect(children).toHaveLength(3);
  });
  it('renders with just one item', () => {
    const { toJSON } = render(
      
    );
    expect(toJSON()).toMatchSnapshot();
    const { children } = toJSON() as ReactTestRendererJSON;
    expect(children).toHaveLength(1);
  });
  it('handles null numberOfItems value', () => {
    // Ideally, this should not happen but, if it does, we should be able to handle gracefully
    const { toJSON } = render(
      
    );
    expect(toJSON()).toMatchSnapshot();
  });
  it('renders indicator styles based on current index', () => {
    const { toJSON } = render(
      
    );
    const { children } = toJSON() as ReactTestRendererJSON;
    expect(toJSON()).toMatchSnapshot();
    expect((children?.[0] as ReactTestRendererJSON).props.style).toStrictEqual([
      DEFAULT_CAROUSEL_INDICATOR_INACTIVE_STYLE,
      undefined,
    ]);
    expect((children?.[1] as ReactTestRendererJSON).props.style).toStrictEqual([
      DEFAULT_CAROUSEL_INDICATOR_ACTIVE_STYLE,
      undefined,
    ]);
    expect((children?.[2] as ReactTestRendererJSON).props.style).toStrictEqual([
      DEFAULT_CAROUSEL_INDICATOR_INACTIVE_STYLE,
      undefined,
    ]);
  });
  it('handles null index value', () => {
    // Ideally, this should not happen but, if it does, we should be able to handle gracefully
    const { toJSON } = render(
      
    );
    expect(toJSON()).toMatchSnapshot();
  });
});