MetaPhase-Consulting/State-TalentMAP

View on GitHub
src/Components/Accordion/AccordionItem/AccordionItem.test.jsx

Summary

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

describe('AccordionItemComponent', () => {
  const props = {
    id: 'id',
    title: 'title',
    expanded: true,
    setAccordion: () => {},
  };

  it('receives props', () => {
    const wrapper = shallow(
      <AccordionItem
        {...props}
      >
        <span>child</span>
      </AccordionItem>,
    );
    expect(wrapper.instance().props.id).toBe('id');
  });

  it('is defined when controlled = true', () => {
    const wrapper = shallow(
      <AccordionItem
        {...props}
        controlled
      >
        <span>child</span>
      </AccordionItem>,
    );
    expect(wrapper).toBeDefined();
  });

  it('returns correct value for isExpanded()', () => {
    const wrapper = shallow(
      <AccordionItem
        {...props}
      >
        <span>child</span>
      </AccordionItem>,
    );
    wrapper.instance().setState({ expanded: true });
    expect(wrapper.instance().isExpanded()).toBe(true);
    wrapper.instance().setState({ expanded: false });
    expect(wrapper.instance().isExpanded()).toBe(false);
  });

  it('sets state on setExpandedFromRef()', () => {
    const wrapper = shallow(
      <AccordionItem
        {...props}
      >
        <span>child</span>
      </AccordionItem>,
    );
    wrapper.instance().setState({ expanded: false });
    expect(wrapper.instance().state.expanded).toBe(false);
    wrapper.instance().setExpandedFromRef(true);
    expect(wrapper.instance().state.expanded).toBe(true);
  });

  it('receives different props', () => {
    const wrapper = shallow(
      <AccordionItem
        {...props}
        preContent={<span />}
      >
        <span>child</span>
      </AccordionItem>,
    );
    expect(wrapper.instance().props.id).toBe('id');
  });

  it('clicks the button', () => {
    const expanded = { value: null };
    const wrapper = shallow(
      <AccordionItem
        {...props}
        expanded={false}
        setAccordion={(e) => { expanded.value = e; }}
      >
        <span>child</span>
      </AccordionItem>,
    );
    wrapper.find('button').simulate('click');
    expect(expanded.value).toBe('id');
  });

  it('matches snapshot', () => {
    const wrapper = shallow(
      <AccordionItem
        {...props}
        setAccordion={() => {}}
      >
        <span>child</span>
      </AccordionItem>,
    );
    expect(toJSON(wrapper)).toMatchSnapshot();
  });
});