MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/Components/LinkButton/LinkButton.test.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import { shallow } from 'enzyme';
import toJSON from 'enzyme-to-json';
import LinkButton from './LinkButton';

describe('LinkButtonComponent', () => {
  const child = (<span>Text</span>);
  const toLink = '/test/100';
  it('is defined', () => {
    const wrapper = shallow(
      <LinkButton toLink={toLink}>
        {child}
      </LinkButton>,
    );
    expect(wrapper).toBeDefined();
  });

  it('matches snapshot', () => {
    const wrapper = shallow(
      <LinkButton toLink={toLink}>
        {child}
      </LinkButton>,
    );
    expect(toJSON(wrapper)).toMatchSnapshot();
  });

  it('supports external links', () => {
    const isExternal = true;
    const wrapper = shallow(
      <LinkButton className="test-class" toLink={toLink} isExternal={isExternal}>
        {child}
      </LinkButton>,
    );
    expect(wrapper.find('a').props().href).toBe(toLink);
    expect(wrapper.find('a.test-class')).toBeDefined();
  });

  it('supports external links with useDefaultClass as false', () => {
    const isExternal = true;
    const useDefaultClass = false;
    const wrapper = shallow(
      <LinkButton toLink={toLink} isExternal={isExternal} useDefaultClass={useDefaultClass}>
        {child}
      </LinkButton>,
    );
    expect(wrapper.find('a').props().href).toBe(toLink);
    expect(wrapper.find('a')).toBeDefined();
  });

  it('can take props with useDefaultClass as false', () => {
    const useDefaultClass = false;
    const wrapper = shallow(
      <LinkButton toLink={toLink} useDefaultClass={useDefaultClass}>
        {child}
      </LinkButton>,
    );
    expect(wrapper.find('Link').props().to).toBe(toLink);
    expect(wrapper.find('Link')).toBeDefined();
  });
});