import { Icon, SideSheet, Modal } from '../../index'; import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants'; // import toJson from 'enzyme-to-json'; function getSideSheet(SideSheetProps, children) { let props = SideSheetProps ? SideSheetProps : {}; return ( {children ? children :

This is content of basic sideSheet

}
); } function mountToBody(component) { return mount(component, { attachTo: document.getElementById('container') }); } describe('SideSheet', () => { beforeEach(() => { // Avoid `attachTo: document.body` Warning const div = document.createElement('div'); div.setAttribute('id', 'container'); document.body.appendChild(div); }); afterEach(() => { const div = document.getElementById('container'); if (div) { document.body.removeChild(div); } }); it('className / style / maskStyle / bodyStyle / headerStyle / zIndex', () => { debugger let component = getSideSheet({ className: 'test', style: { color: 'red' }, visible: true, maskStyle: { color: 'grey' }, headerStyle: { color: 'green' }, bodyStyle: { color: 'pink' }, zIndex: 500, }); let sideSheet = mount(component, { attachTo: document.getElementById('container') }); // let sideSheet = mount(component, { attachTo: document.body }); // test className expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet.test`)).toEqual(true); // test style expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle('color', 'red') // test bodyStyle expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-body`)).toHaveStyle('color', 'pink'); // test headerStyle expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-header`)).toHaveStyle('color', 'green'); // test maskStyle expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-mask`)).toHaveStyle('color', 'grey'); // test zIndex expect(document.querySelector(`.${BASE_CLASS_PREFIX}-portal`).style.zIndex).toEqual("500"); sideSheet.unmount(); }); it('visible', () => { let component = getSideSheet(); // let sideSheet = mount(component, { attachTo: document.body }); // 如果用body的话,第一个测试用例可以过,但第二个就不行 let sideSheet = mount(component, { attachTo: document.getElementById('container') }); expect(sideSheet.exists(`div.${BASE_CLASS_PREFIX}-sidesheet`)).toEqual(false); sideSheet.setProps({ visible: true }); sideSheet.update(); // 必须调用一次update expect(sideSheet.exists(`div.${BASE_CLASS_PREFIX}-sidesheet`)).toEqual(true); sideSheet.unmount(); }); it('test', () => { let bottomCom = getSideSheet({ placement: 'bottom', visible: true }); let bottomSideSheet = mount(bottomCom, { attachTo: document.getElementById('container') }); expect(bottomSideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-bottom`)).toEqual(true); bottomSideSheet.unmount(); }) it('different position', () => { let topCom = getSideSheet({ placement: 'top', visible: true }); let sideSheet = mount(topCom, { attachTo: document.getElementById('container') }); // top expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-top`)).toEqual(true); // expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ transform: 'translateY(-100%)', width: '100%' }); // bottom sideSheet.setProps({ placement: 'bottom' }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-bottom`)).toEqual(true); // expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ transform: 'translateY(100%)', width: '100%' }); // left sideSheet.setProps({ placement: 'left' }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-left`)).toEqual(true); // expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ transform: 'translateX(-0%)', height: '100%' }); // right sideSheet.setProps({ placement: 'right' }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-right`)).toEqual(true); // expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ transform: 'translateX(0%)', height: '100%' }); sideSheet.unmount(); }); // it('onCancel', () => { // }); it('render basiclly', () => { let com = getSideSheet({ title: 'SemiTitle', visible: true }) let sideSheet = mount(com, { attachTo: document.getElementById('container') }); // test title let sheetTitle = document.querySelector(`.${BASE_CLASS_PREFIX}-sidesheet-title`); expect(sheetTitle.textContent).toEqual('SemiTitle'); // test content let sheetContent = document.querySelector(`.${BASE_CLASS_PREFIX}-sidesheet-body`); // the content in getSideSheet could not be overwritten expect(sheetContent.textContent).toEqual('This is content of basic sideSheet'); sideSheet.unmount(); }); it('size', () => { let com = getSideSheet({ size: 'small', visible: true }) let sideSheet = mount(com, { attachTo: document.getElementById('container') }); // test small size expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveClassName("semi-sidesheet-size-small"); // test medium size sideSheet.setProps({ size: 'medium' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveClassName("semi-sidesheet-size-medium"); // test large size sideSheet.setProps({ size: 'large' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveClassName("semi-sidesheet-size-large"); sideSheet.unmount(); }); it('height / width', () => { let com = getSideSheet({ width: '413px', visible: true }) let sideSheet = mount(com, { attachTo: document.getElementById('container') }); // test width on left expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ width: '413px' }); // test height on left sideSheet.setProps({ height: '413px' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ height: '100%' }); // test width on right sideSheet.setProps({ placement: 'right' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ width: '413px' }); // test height on right sideSheet.setProps({ height: '413px' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ height: '100%' }); // test height on top sideSheet.setProps({ height: '413px', placement: 'top' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ height: '413px' }); // test width on top sideSheet.setProps({ width: '413px' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ width: '100%' }); // test height on bottom sideSheet.setProps({ height: '413px', placement: 'bottom' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ height: '413px' }); // test width on bottom sideSheet.setProps({ width: '413px' }); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).toHaveStyle({ width: '100%' }); sideSheet.unmount(); }); it('disableScroll', () => { let com = getSideSheet({ visible: true }) let sideSheet = mount(com, { attachTo: document.getElementById('container') }); // test default expect(document.body.style.overflow).toEqual('hidden'); sideSheet.setProps({ visible: false }); expect(document.body.style.overflow).not.toEqual('hidden'); // test disableScroll sideSheet.setProps({ disableScroll: false, visible: true }); expect(document.body.style.overflow).not.toEqual('hidden'); sideSheet.unmount(); }); it('closable', () => { let closeCom = getSideSheet({ closable: true, visible: true }); let nocloseCom = getSideSheet({ closable: false, visible: true }); let sideSheet = mount(closeCom, { attachTo: document.getElementById('container') }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-close`)).toEqual(true); sideSheet.unmount(); let notClosableSideSheet = mount(nocloseCom, { attachTo: document.getElementById('container') }); expect(notClosableSideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-close`)).toEqual(false); notClosableSideSheet.unmount(); }); it('maskClosable', () => { let onCancel = () => { }; let spyOnCancel = sinon.spy(onCancel); let spyOnCancel2 = sinon.spy(onCancel); let closeCom = getSideSheet({ maskClosable: true, visible: true, onCancel: spyOnCancel }); let sideSheet = mount(closeCom, { attachTo: document.getElementById('container') }); // maskClosable sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-mask`).simulate('click'); expect(spyOnCancel.calledOnce).toBe(true); sideSheet.unmount(); // mask not closable let notMaskClosableSideSheet = mount(getSideSheet({ maskClosable: false, visible: true, onCancel: spyOnCancel2 }), { attachTo: document.getElementById('container') }); notMaskClosableSideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-mask`).simulate('click'); expect(spyOnCancel2.calledOnce).toBe(false); notMaskClosableSideSheet.unmount(); }); it('onCancel', () => { // onCancel on mask tested in [maskClosable] // onCancel on close btn // debugger let onCancel = () => { }; let spyOnCancel = sinon.spy(onCancel); let closeCom = getSideSheet({ visible: true, onCancel: spyOnCancel }); let sideSheet = mount(closeCom, { attachTo: document.getElementById('container') }); // let dom = sideSheet.find('div.${BASE_CLASS_PREFIX}-sidesheet-close').getDOMNode(); sideSheet.find(`button.${BASE_CLASS_PREFIX}-sidesheet-close`).simulate('click'); expect(spyOnCancel.calledOnce).toBe(true); sideSheet.unmount(); }); it('no mask', () => { let com = getSideSheet({ mask: false }); let sideSheet = mount(com, { attachTo: document.getElementById('container') }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-modal-mask`)).toEqual(false); // TODO: add a button to see if could be clicked sideSheet.unmount(); }); it('getPopupContainer', () => { debugger let containedcom = (
document.querySelector('.sidesheet-container')} />
) let wrapper1 = mount(containedcom, { attachTo: document.getElementById('container') }); let container1 = document.querySelector('.sidesheet-container').querySelector(`.${BASE_CLASS_PREFIX}-sidesheet`); expect(wrapper1.find(`div.${BASE_CLASS_PREFIX}-sidesheet`).html()).toEqual(container1.outerHTML); // get popup container no body overflow debugger expect(document.body.style.overflow).not.toEqual('hidden'); wrapper1.unmount(); // no getPopupContainer let com = (
) let wrapper2 = mount(com, { attachTo: document.getElementById('container') }); let container2 = document.querySelector('.sidesheet-container').querySelector(`.${BASE_CLASS_PREFIX}-sidesheet`); expect(container2).toEqual(null); wrapper2.unmount(); }); it('motion false', () => { let topCom = getSideSheet({ placement: 'top', visible: true, motion: false }); let sideSheet = mount(topCom, { attachTo: document.getElementById('container') }); // top expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-top`)).toEqual(true); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).not.toHaveStyle({ transform: 'translateY(-100%)' }); // bottom sideSheet.setProps({ placement: 'bottom' }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-bottom`)).toEqual(true); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).not.toHaveStyle({ transform: 'translateY(100%)' }); // left sideSheet.setProps({ placement: 'left' }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-left`)).toEqual(true); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).not.toHaveStyle({ transform: 'translateX(-0%)' }); // right sideSheet.setProps({ placement: 'right' }); expect(sideSheet.exists(`.${BASE_CLASS_PREFIX}-sidesheet-right`)).toEqual(true); expect(sideSheet.find(`.${BASE_CLASS_PREFIX}-sidesheet-inner`)).not.toHaveStyle({ transform: 'translateX(0%)' }); // visible false sideSheet.setProps({ visible: false }); sideSheet.update(); // 必须调用一次update expect(sideSheet.exists(`div.${BASE_CLASS_PREFIX}-sidesheet`)).toEqual(false); sideSheet.unmount(); }); })