import React from 'react'; import { mount } from 'enzyme'; import sinon from 'sinon'; import { stepsClasses } from '@douyinfe/semi-foundation/steps/constants'; import Steps from '../index'; import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants'; const Step = Steps.Step; describe('Steps', () => { it('current works', () => { const element = ( Step.1 Step.1 Step.1 ); const wrapper = mount(element); expect( wrapper .find('Step') .at(0) .props().status ).toEqual('process'); }); it('parent status works', () => { const wait = ( Step.1 Step.1 Step.1 ); const waitWrapper = mount(wait); expect( waitWrapper.props().status ).toEqual('wait'); waitWrapper.unmount(); const error = ( Step.1 Step.1 Step.1 ); const errorWrapper = mount(error); expect( errorWrapper.props().status ).toEqual('error'); errorWrapper.unmount(); const finish = ( Step.1 Step.1 Step.1 ); const finishWrapper = mount(finish); expect( finishWrapper.props().status ).toEqual('finish'); finishWrapper.unmount(); const process = ( Step.1 Step.1 Step.1 ); const processWrapper = mount(process); expect( processWrapper.props().status ).toEqual('process'); processWrapper.unmount(); const warning = ( Step.1 Step.1 Step.1 ); const warningWrapper = mount(warning); expect( warningWrapper.props().status ).toEqual('warning'); warningWrapper.unmount(); }); it('child status works', () => { const wait = ( Step.1 Step.1 Step.1 ); const waitWrapper = mount(wait); expect( waitWrapper .find('Step') .at(0) .props().status ).toEqual('wait'); waitWrapper.unmount(); const error = ( Step.1 Step.1 Step.1 ); const errorWrapper = mount(error); expect( errorWrapper .find('Step') .at(0) .props().status ).toEqual('error'); errorWrapper.unmount(); const finish = ( Step.1 Step.1 Step.1 ); const finishWrapper = mount(finish); expect( finishWrapper .find('Step') .at(0) .props().status ).toEqual('finish'); finishWrapper.unmount(); const process = ( Step.1 Step.1 Step.1 ); const processWrapper = mount(process); expect( processWrapper .find('Step') .at(0) .props().status ).toEqual('process'); processWrapper.unmount(); const warning = ( Step.1 Step.1 Step.1 ); const warningWrapper = mount(warning); expect( warningWrapper .find('Step') .at(0) .props().status ).toEqual('warning'); warningWrapper.unmount(); }); it('initial works', () => { const element = ( Step.1 Step.1 Step.1 ); const wrapper = mount(element); expect( wrapper .find('Step') .at(0) .props().status ).toEqual('warning'); }); it('FillStep onClick works', () => { const spyOnClick = sinon.fake(); const element = ( Step.1 Step.1 Step.1 ); const wrapper = mount(element); const fiestStepContainer = wrapper.find('Step').at(0).find(`.${stepsClasses.ITEM}`); fiestStepContainer.simulate('click'); expect(spyOnClick.calledOnce).toEqual(true); }); it('BasicStep onClick works', () => { const spyOnClick = sinon.fake(); const element = ( Step.1 Step.1 Step.1 ); const wrapper = mount(element); const fiestStepContainer = wrapper.find('Step').at(0).find(`.${stepsClasses.ITEM}`); fiestStepContainer.simulate('click'); expect(spyOnClick.calledOnce).toEqual(true); }); it('NavStep onClick works', () => { const spyOnClick = sinon.fake(); const element = ( Step.1 Step.1 Step.1 ); const wrapper = mount(element); const fiestStepContainer = wrapper.find('Step').at(0).find(`.${stepsClasses.ITEM}`); fiestStepContainer.simulate('click'); expect(spyOnClick.calledOnce).toEqual(true); }); it('Steps onChange works', () => { const spyOnChange = sinon.fake(); const element = ( Step.1 Step.1 Step.1 ); const wrapper = mount(element); const fiestStepContainer = wrapper.find('Step').at(1).find(`.${stepsClasses.ITEM}`); fiestStepContainer.simulate('click'); expect(spyOnChange.calledOnce).toEqual(false); const fiestStepContainer2 = wrapper.find('Step').at(0).find(`.${stepsClasses.ITEM}`); fiestStepContainer2.simulate('click'); expect(spyOnChange.calledOnce).toEqual(true); }); it('Steps type', () => { const nav = ( ); const navWrapper = mount(nav); expect(navWrapper.exists(`.${BASE_CLASS_PREFIX}-steps-nav`)).toEqual(true); navWrapper.unmount(); const basic = ( ); const basicWrapper = mount(basic); expect(basicWrapper.exists(`.${BASE_CLASS_PREFIX}-steps-basic`)).toEqual(true); basicWrapper.unmount(); const fill = ( ); const fillWrapper = mount(fill); expect(fillWrapper.exists(`.${BASE_CLASS_PREFIX}-steps`)).toEqual(true); fillWrapper.unmount(); }); it('Steps with custom className & style', () => { const wrapper = mount( ); expect(wrapper.exists('.test')).toEqual(true); expect(wrapper.find(`.${BASE_CLASS_PREFIX}-steps.test`)).toHaveStyle('color', 'red'); }); it('Step with custom className & style', () => { const wrapper = mount( ); const firstStep = wrapper.find('Step').at(0); expect(firstStep.exists('.test')).toEqual(true); expect(firstStep).toHaveStyle('color', 'blue'); }); it('Steps with size', () => { const wrapper = mount( ); expect(wrapper.exists(`.${BASE_CLASS_PREFIX}-steps-small`)).toEqual(true); }); it('Steps with hasLine', () => { const hasLineWrapper = mount( ); expect(hasLineWrapper.exists(`.${BASE_CLASS_PREFIX}-steps-hasline`)).toEqual(true); hasLineWrapper.unmount(); const noLineWrapper = mount( ); expect(noLineWrapper.exists(`.${BASE_CLASS_PREFIX}-steps-hasline`)).toEqual(false); noLineWrapper.unmount(); }); it('Steps with direction', () => { const verticalWrapper = mount( ); expect(verticalWrapper.exists(`.${BASE_CLASS_PREFIX}-steps-vertical`)).toEqual(true); verticalWrapper.unmount(); const horizontalWrapper = mount( ); expect(horizontalWrapper.exists(`.${BASE_CLASS_PREFIX}-steps-horizontal`)).toEqual(true); horizontalWrapper.unmount(); }); });