import React from 'react';
import Enzyme, { mount } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import { Provider } from 'react-redux';
import { createStore } from 'redux';
import { ICharacter } from '../../../../redux/ducks/characters/types';
import { IStarship } from '../../../../redux/ducks/starships/types';
import { ILocate } from 'app/redux/ducks/locate/types';
import Lang, { Locates } from '../../../../lang';
import { IntlProvider } from 'react-intl';
import Home from '../Home';
import HomeContainer from '../HomeContainer';
import rootReducer from '../../../../redux/ducks/rootReducer';
Enzyme.configure({ adapter: new Adapter() });
describe(`HomeContainer rendering`, () => {
let mountWithStore: any;
beforeEach(() => {
mountWithStore = (component: any, initialState: any = {}) => {
const store = createStore(rootReducer, initialState);
const currentLang = Lang[Locates.EN];
return mount(
{component}
);
};
});
it(`Should render a Home Page with h1 without character`, () => {
const character: ICharacter = {
id: 0,
name: '',
gender: '',
homeworld: '',
url: ''
};
const starship: IStarship = {
id: 0,
name: ''
};
const locate: ILocate = {
id: 'en',
label: 'en'
};
const initialState = {
character: {
data: character,
loading: false,
error: true
},
starship: {
data: starship,
loading: false,
error: false
},
locate: {
data: locate,
error: false,
loading: false
}
};
const container = mountWithStore(, initialState);
const component = container.find(Home);
expect(component.find('h1').text()).toEqual('');
});
it(`Should render a Home Page with character name`, () => {
const character: ICharacter = {
id: 1,
name: 'Luke Skywalker',
gender: 'Male',
homeworld: 'Tatooene',
url: ''
};
const starship: IStarship = {
id: 2,
name: 'X-Wing'
};
const locate: ILocate = {
id: 'en',
label: 'en'
};
const initialState = {
character: {
data: character,
loading: false,
error: false
},
starship: {
data: starship,
loading: false,
error: false
},
locate: {
data: locate,
error: false,
loading: false
}
};
const container = mountWithStore(, initialState);
const component = container.find(Home);
expect(component.find('h1').text()).toEqual('I am Luke Skywalker and I am a X-Wing pilot');
});
});