token-wizard/test/components/Home/index.spec.js

119 lines
3.3 KiB
JavaScript

import React from 'react'
import Adapter from 'enzyme-adapter-react-15'
import { configure, mount, shallow, render } from 'enzyme'
import { MemoryRouter } from 'react-router'
import { Provider } from 'mobx-react'
import { Home } from '../../../src/components/Home/index'
import { ButtonChooseCrowdsale } from '../../../src/components/Home/ButtonChooseCrowdsale'
import { ButtonCreateCrowdsale } from '../../../src/components/Home/ButtonCreateCrowdsale'
import storage from 'store2'
import { deploymentStore } from '../../../src/stores'
configure({ adapter: new Adapter() })
describe('Home', () => {
const history = {
push: jest.fn()
}
const stores = { deploymentStore }
it('should render screen with shallow without throwing an error', () => {
// Given
const wrapper = shallow(
<Provider {...stores}>
<Home />
</Provider>
)
// When
const tree = wrapper.find('div.hm-Home_MainInfo')
// Then
expect(tree).toMatchSnapshot()
})
it('should render screen with mount without throwing an error', () => {
// Given
const wrapper = mount(
<Provider {...stores}>
<MemoryRouter initialEntries={['/']}>
<Home />
</MemoryRouter>
</Provider>
)
// Given
const tree = wrapper.html()
// Then
expect(tree).toMatchSnapshot()
})
it('should render screen with render without throwing an error', () => {
// When
const wrapper = render(
<Provider {...stores}>
<MemoryRouter initialEntries={['/']}>
<Home />
</MemoryRouter>
</Provider>
)
// Given
const tree = wrapper.html()
// Then
expect(tree).toMatchSnapshot()
})
it(`should navigate to StepOne`, async () => {
// Given
const wrapper = mount(
<Provider {...stores}>
<MemoryRouter initialEntries={['/']}>
<Home history={history} />
</MemoryRouter>
</Provider>
)
const createCrowdsaleComponentWrapper = wrapper.find(ButtonCreateCrowdsale)
const instance = createCrowdsaleComponentWrapper.instance()
const goToStepOneHandler = jest.spyOn(instance, 'goToStepOne')
instance.forceUpdate()
storage.clearAll()
// When
const buttonCreateCrowdsale = createCrowdsaleComponentWrapper.find('.hm-ButtonCreateCrowdsale')
buttonCreateCrowdsale.simulate('click')
// Then
expect(buttonCreateCrowdsale.length).toBe(1)
expect(goToStepOneHandler).toHaveBeenCalledTimes(1)
expect(goToStepOneHandler).toHaveBeenCalledWith()
})
it(`should navigate to Crowdsales List`, async () => {
// Given
const wrapper = mount(
<Provider {...stores}>
<MemoryRouter initialEntries={['/']}>
<Home history={history} />
</MemoryRouter>
</Provider>
)
const chooseCrowdsaleComponentWrapper = wrapper.find(ButtonChooseCrowdsale)
const instance = chooseCrowdsaleComponentWrapper.instance()
const goToCrowdsalesHandler = jest.spyOn(instance, 'goToCrowdsales')
instance.forceUpdate()
storage.clearAll()
// When
const chooseCrowdsale = chooseCrowdsaleComponentWrapper.find('.hm-ButtonChooseCrowdsale')
chooseCrowdsale.simulate('click')
// Then
expect(chooseCrowdsale.length).toBe(1)
expect(goToCrowdsalesHandler).toHaveBeenCalledTimes(1)
expect(goToCrowdsalesHandler).toHaveBeenCalledWith()
})
})