MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/Components/PositionDetailsItem/ServiceNeededToggle/ServiceNeededToggle.test.jsx

Summary

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

import mock from '../../../__mocks__/detailsObject';

const userMock = {
  is_superuser: true,
};

const props = {
  position: mock,
  userProfile: userMock,
};

describe('ServiceNeededToggle', () => {
  beforeEach(() => {
    props.userProfile.is_superuser = true;
  });

  it('is defined', () => {
    const toggle = shallow(<ServiceNeededToggle {...props} />);
    expect(toggle.html()).not.toBeNull();
  });

  it('only renders when user is superuser', () => {
    props.userProfile.is_superuser = false;
    const toggle = shallow(<ServiceNeededToggle {...props} />);
    expect(toggle.html()).toBeNull();
  });

  it('can call onClick', () => {
    props.onChange = jest.fn(() => {});
    const toggle = shallow(<ServiceNeededToggle {...props} />);
    toggle.find('InteractiveElement').simulate('click');
    expect(props.onChange).toHaveBeenCalled();
  });

  it('verifies loading state renders and refreshes', () => {
    let toggle;

    toggle = shallow(<ServiceNeededToggle {...props} loading />);
    expect(toggle.find('.ds-c-spinner').length).toBe(1);

    toggle = shallow(<ServiceNeededToggle {...props} loading={false} />);
    expect(toggle.find('.ds-c-spinner').length).toBe(0);
  });

  it('matches snapshot', () => {
    const toggle = shallow(<ServiceNeededToggle {...props} />);
    expect(toJSON(toggle)).toMatchSnapshot();
  });
});