import React from "react";
import { Provider } from "react-redux";
import { configure, mount, shallow } from "enzyme";
import Adapter from "enzyme-adapter-react-16";
import { store } from "../store/store";
import "jest-enzyme";
import "jest-styled-components";
import { BrowserRouter as Router } from "react-router-dom";
import styled from "styled-components";

configure({ adapter: new Adapter() });

import CreateStore from "../components/Onboarding/CreateStore";
import {
  FormHeader,
  MainContainer,
  CreateStoreForm,
  StepperDiv,
  StoreTextDiv,
  URLPreviewDiv,
  CreateStoreButton,
  SkipCreateStoreButton,
} from "../components/Onboarding/Styled";

const wrapper = shallow(
  <Provider store={store}>
    <CreateStore />
  </Provider>
);

it("renders the CreateStore component", () => {
  expect(wrapper.length).toEqual(1);
});

it("renders the MainContainer styled component", () => {
  const component = shallow(<MainContainer />);
  expect(component).toMatchSnapshot();
});

it("renders the URLPreview", () => {
  const URLPreview = shallow(
    <Provider store={store}>
      <URLPreview />
    </Provider>
  );
  // expect(URLPreview).toMatchSnapshot();
  expect(URLPreview.length).toEqual(1);
});

it("renders the Create Store form", () => {
  const createForm = shallow(<CreateStoreForm />);
  expect(createForm.length).toEqual(1);
});

it("renders the Create Store button", () => {
  const storeButton = shallow(<CreateStoreButton />);
  expect(storeButton.length).toEqual(1);
});

it("renders the Skip for now button", () => {
  const skipButton = shallow(<SkipCreateStoreButton />);
  expect(skipButton.length).toEqual(1);
});

it("simulates the Create Store button being clicked", () => {
  const callSignup = jest.fn();
  const wrapper = shallow(<CreateStoreForm onSubmit={callSignup} />);
  const form = wrapper.find("form");
  form.simulate("submit");
  expect(callSignup).toHaveBeenCalledTimes(1);
});

it("simulates the Skip for Now button being clicked", () => {
  const skipCreate = jest.fn();
  const wrapper = shallow(<SkipCreateStoreButton onClick={skipCreate} />);
  const button = wrapper.find("button");
  button.simulate("click");
  expect(skipCreate).toHaveBeenCalledTimes(1);
});