This is the function I'm covering, however npm run coverage is still complaining that I don't have the 4th line before covered.
export const CardContainer = ({ index, icon, copy, click }) => (
<BlankCard variant="light" title={copy}>{icon}<p>{copy}</p>
{click && <a className="tile-learn-more" id={`tile-id-${index}`} onClick={() => click(index)}>Learn More</a>}
</BlankCard>
);
The line in question:
{click && <a className="tile-learn-more" id={`tile-id-${index}`} onClick={() => click(index)}>Learn More</a>}
describe('CardContainer component', () => {
it('will contain BlankCard component', () => {
const props = { icon: 'icon', copy: 'foo' };
const wrapperBlankCard = shallow(<CardContainer {...props} />);
const blankCard = wrapperBlankCard.find('BlankCard');
expect(blankCard).toHaveLength(1);
expect(blankCard.at(0).prop('variant')).toEqual('light');
expect(blankCard.at(0).prop('title')).toEqual('foo');
});
it('will contain a Learn More link if click contains a function', () => {
const mockOnClick = jest.fn();
const props = { index: 1, icon: 'icon', copy: 'foo', click: mockOnClick };
const wrapper = shallow(<CardContainer {...props} />);
const learnMore = wrapper.find('.tile-learn-more');
expect(learnMore).toEqual({});
expect(learnMore.prop('id')).toEqual('tile-id-1');
expect(learnMore.contains('Learn More'));
expect(learnMore.prop('onClick')).toEqual(expect.any(Function));
});
it('will not contain a Learn More link if click is undefined', () => {
const props = { icon: 'icon', copy: 'foo', click: null };
const wrapper = shallow(<CardContainer {...props} />);
expect(wrapper.find('.tile-learn-more')).toEqual({});
});
});
I'm testing for different states of the click prop, however so far unable to get the line covered, any thoughts here?