boldr/boldr-ui

View on GitHub
src/Accordion/__tests__/Accordion.test.js

Summary

Maintainability
A
3 hrs
Test Coverage
import React from 'react';
import { shallow } from 'enzyme';
import { shallowToJson } from 'enzyme-to-json';

import Accordion from '../Accordion';
import AccordionItem from '../AccordionItem';

describe('Accordion', () => {
  it('renders correctly with min params', () => {
    const wrapper = shallow(
      <Accordion>
        <AccordionItem>Fake child</AccordionItem>
        <AccordionItem>Fake child</AccordionItem>
      </Accordion>,
    );
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });

  it('renders correctly with accordion false', () => {
    const wrapper = shallow(
      <Accordion isAccordion={false}>
        <AccordionItem>Fake child</AccordionItem>
        <AccordionItem>Fake child</AccordionItem>
      </Accordion>,
    );
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });

  it('different className', () => {
    const wrapper = shallow(
      <Accordion isAccordion={false} className="testCSSClass">
        <AccordionItem>Fake Child</AccordionItem>
        <AccordionItem>Fake Child</AccordionItem>
      </Accordion>,
    );
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });

  it('handleClick function accordion true', () => {
    const wrapper = shallow(
      <Accordion>
        <AccordionItem>Fake Child</AccordionItem>
        <AccordionItem>Fake Child</AccordionItem>
      </Accordion>,
    );
    wrapper.instance().handleClick(1);
    expect(wrapper.instance().state.activeItems).toEqual([1]);
    expect(wrapper).toMatchSnapshot();

    wrapper.instance().handleClick(1);
    expect(wrapper.instance().state.activeItems).toEqual([]);
    expect(wrapper).toMatchSnapshot();
  });

  it('handleClick function accordion false', () => {
    const wrapper = shallow(
      <Accordion isAccordion={false}>
        <AccordionItem>Fake Child</AccordionItem>
        <AccordionItem>Fake Child</AccordionItem>
      </Accordion>,
    );
    wrapper.instance().handleClick(1);
    expect(wrapper.instance().state.activeItems).toEqual([1]);
    expect(wrapper).toMatchSnapshot();

    wrapper.instance().handleClick(1);
    expect(wrapper.instance().state.activeItems).toEqual([]);
    expect(wrapper).toMatchSnapshot();

    wrapper.instance().handleClick(0);
    wrapper.instance().handleClick(1);
    expect(wrapper.instance().state.activeItems).toEqual([0, 1]);
    expect(wrapper).toMatchSnapshot();
  });

  it('handles disabled children', () => {
    const wrapper = shallow(
      <Accordion isAccordion={false}>
        <AccordionItem disabled>Fake Child</AccordionItem>
        <AccordionItem>Fake Child</AccordionItem>
      </Accordion>,
    );
    wrapper.instance().handleClick(0);
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });

  it('pre expanded accordion', () => {
    const wrapper = shallow(
      <Accordion>
        <AccordionItem isExpanded>Fake Child</AccordionItem>
        <AccordionItem>Fake Child</AccordionItem>
      </Accordion>,
    );
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });

  it('works with multiple pre expanded accordion. Extra expands are just ignored.', () => {
    const wrapper = shallow(
      <Accordion>
        <AccordionItem isExpanded>Fake Child</AccordionItem>
        <AccordionItem isExpanded>Fake Child</AccordionItem>
      </Accordion>,
    );
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });

  it('pre expanded accordion when accordion is false', () => {
    const wrapper = shallow(
      <Accordion isAccordion={false}>
        <AccordionItem isExpanded>Fake Child</AccordionItem>
        <AccordionItem isExpanded>Fake Child</AccordionItem>
      </Accordion>,
    );
    expect(shallowToJson(wrapper)).toMatchSnapshot();
  });
});