import React from "react";
import { render, getAllByText } from "@testing-library/react";
import { shallow, mount } from "enzyme";

import { Provider } from "react-redux";
import thunk from "redux-thunk";
import configureStore from "redux-mock-store";

import { BrowserRouter as Router } from "react-router-dom";

import UserDashobard from "../pages/UserDashboard";
import { fetchUserTeams } from "../redux/actions/userActions";

const mockStore = configureStore([thunk]);

describe("Examining the User dashboard component", () => {
	it("should render without crashing", () => {
		shallow(
			<Provider store={mockStore(defaultStore)}>
				<UserDashobard />
			</Provider>
		);
	});

	it("renders add team button", () => {
		const userDash = mount(
			<Provider store={mockStore(defaultStore)}>
				<Router>
					<UserDashobard />
				</Router>
			</Provider>
		);
		expect(userDash.exists("button")).toBeTruthy();
	});

	it("should render 'Your Teams' on DOM", () => {
		const wrapper = mount(
			<Provider store={mockStore(defaultStore)}>
				<Router>
					<UserDashobard />
				</Router>
			</Provider>
		);
		const { getAllByText } = render(wrapper);
		getAllByText(/My Teams/i);
	});

	it("should render 'Your Videos' on DOM", () => {
		const wrapper = mount(
			<Provider store={mockStore(defaultStore)}>
				<Router>
					<UserDashobard />
				</Router>
			</Provider>
		);
		const { getAllByText } = render(wrapper);
		getAllByText(/My Videos/i);
	});

	const defaultStore = {
		User: {
			isLogged: true,
			userId: 1,
			first_name: "Curr",
			last_name: "Ladley",
			email: "[email protected]",
			username: "fwilloughley0",
			defaultOrganization: {id: 1, name: "orgOne"},
			selectedOrganization: {id: 1, name: "orgOne"},
			organizations: [{id: 1, name: 'orgOne'}],
			invite: {
				invite_code: null,
				invited_team_id: null,
				error: null,
			},
			error: null,
			isFetching: false,
			teams: [
				{
					id: 20,
					name: "Borer, Nienow and Kunde",
					description: "Insect bite (nonvenomous) of unspecified shoulder, sequela",
					created_at: "2019-01-30T15:29:39.000Z",
					updated_at: "2019-10-14T22:46:29.000Z",
					role_id: 2,
				},
				{
					id: 21,
					name: "New Team",
					description: "Awesome new team",
					created_at: "2020 - 02 - 12T17: 37: 10.139Z",
					updated_at: "2020 - 02 - 12T17: 37: 10.139Z",
					role_id: 2,
				},
			],
			videos: [
				{
					id: 9,
					owner_id: 1,
					title: "suspendisse potenti",
					description:
						"nunc vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae mauris",
					created_at: "2019 - 09 - 27T07: 53: 14.000Z",
					updated_at: "2019 - 10 - 02T04: 31: 10.000Z",
					video_url: "https://www.youtube.com/embed/6Gw5dK48MtI",
					prompt_id: 22,
					feedback:[
						{
							"id": 101,
							"post": "test",
							"video_id": 9,
							"owner_id": 1,
							"created_at": "2020-03-22T00:13:14.561Z",
							"updated_at": "2020-03-22T00:13:14.561Z"
						}
					]
				},
				{
					id: 19,
					owner_id: 1,
					title: "primis",
					description: "rutrum rutrum neque aenean auctor gravida sem praesent id massa id nisl venenatis",
					created_at: "2019-05-31T09:24:43.000Z",
					updated_at: "2019-10-28T01:15:43.000Z",
					video_url: "https://www.youtube.com/embed/LQMLFryA_7k",
					prompt_id: 10,
					feedback:[]
				},
			],
			videoDetailFocus: {
				feedback: [],
			},
		},

		Team: {
			team: {}
		}
	};
});