import React from 'react';
import { shallow } from 'enzyme';
import ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';
import AnnotationCreation from '../src/AnnotationCreation';
import AnnotationDrawing from '../src/AnnotationDrawing';
import TextEditor from '../src/TextEditor';
import ImageFormField from '../src/ImageFormField';

/** */
function createWrapper(props) {
  return shallow(
    <AnnotationCreation
      id="x"
      config={{ annotation: {} }}
      receiveAnnotation={jest.fn()}
      windowId="abc"
      {...props}
    />,
  );
}

describe('AnnotationCreation', () => {
  let wrapper;
  it('renders a form', () => {
    wrapper = createWrapper();
    expect(wrapper.dive().find('form').length).toBe(1);
  });
  it('form has button toggles', () => {
    wrapper = createWrapper();
    expect(wrapper.dive().find(ToggleButtonGroup).length).toBe(3);
  });
  it('adds the AnnotationDrawing component', () => {
    wrapper = createWrapper();
    expect(wrapper.dive().find(AnnotationDrawing).length).toBe(1);
  });
  it('adds the TextEditor component', () => {
    wrapper = createWrapper();
    expect(wrapper.dive().find(TextEditor).length).toBe(1);
  });
  it('adds the ImageFormField component', () => {
    wrapper = createWrapper();
    expect(wrapper.dive().find(ImageFormField).length).toBe(1);
  });
  it('can handle annotations without target selector', () => {
    wrapper = createWrapper({
      annotation: {
        body: {
          purpose: 'commenting',
          value: 'Foo bar',
        },
        target: {},
      },
    });
    wrapper.dive();
  });
});