Hayk Simonyan
Hayk Simonyan

Reputation: 236

Jest React - else path not taken

I'm trying to add test coverage for this React component and I'm getting this message on the component "else path is not taken" when there is no else after if statement.

Below is my component with jest warning. Can someone help to cover this part?

function CustomerSatisfaction(props: FeedbackProps) {
  const [status, setStatus] = useState<
    'idle' | 'active' | 'pending' | 'success' | 'error'
  >('idle');
  const handleSubmit = useCallback(
    async (smileyType: string, options: Record<string, string>) => {
      setStatus('pending');

      try {
        const result = await fetchWithError(() => {
          setStatus('error');
        })('/pub/feedback/feedbacks', 'POST', {
          surveyType: 'service',
          smileyType,
          comments: options.comment,
          ratings: {
            clearness: options['customer_satisfaction.clear'],
            ease: options['customer_satisfaction.easy'],
            speed: options['customer_satisfaction.fast'],
            performance: options['customer_satisfaction.perf'],
          },
          pageUrl: window.location.href,
          serviceId: props.serviceId,
          productId: props.productId,
        });

        **(else path not taken)** if (result.success) {
          setStatus('success');
        }
      } catch (e) {
        setStatus('error');
      }
    },
    [],
  );

  return (
    <CustomerSatisfactionComponent
      i18n={props.i18n}
      status={status}
      onSubmit={handleSubmit}
    />
  );
}

Upvotes: 0

Views: 3038

Answers (1)

Hayk Simonyan
Hayk Simonyan

Reputation: 236

Guys if someone faces this issue, here is the solution for my case

it('should render failure state', async () => {
    const component = shallow(
      <CustomerSatisfaction
        i18n={() => ({})}
        serviceId="123"
        productId="123"
      />,
    );

    (fetchWithError as jest.Mock).mockReturnValue(
      jest.fn().mockResolvedValue({
        success: false,
      }),
    );
    const onSubmit: any =
      component.find(CustomerSatisfactionComponent).prop('onSubmit') ||
      (() => {});
    await onSubmit('test', {});
    expect(component).toMatchSnapshot();
  });

Upvotes: -1

Related Questions