Reputation: 236
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
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