import { mount } from '@vue/test-utils'; import PageHeader from '..'; describe('PageHeader', () => { it('pageHeader should not contain back it back', () => { const routes = [ { path: 'index', breadcrumbName: 'First-level Menu', }, { path: 'first', breadcrumbName: 'Second-level Menu', }, { path: 'second', breadcrumbName: 'Third-level Menu', }, ]; const wrapper = mount({ render() { return <PageHeader title="Page Title" breadcrumb={{ routes }} />; }, }); expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0); }); it('pageHeader should have breadcrumb', () => { const routes = [ { path: 'index', breadcrumbName: 'First-level Menu', }, ]; const wrapper = mount({ render() { return <PageHeader title="Page Title" breadcrumb={{ routes }} />; }, }); expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1); expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0); }); it('pageHeader should no contain back', () => { const wrapper = mount({ render() { return <PageHeader title="Page Title" backIcon={false} />; }, }); expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(0); }); it('pageHeader should contain back it back', () => { const callback = jest.fn(() => true); const wrapper = mount( { render() { return <PageHeader title="Page Title" onBack={callback} />; }, }, { sync: false }, ); expect(wrapper.findAll('.ant-page-header-back')).toHaveLength(1); }); it('pageHeader onBack transfer', () => { const callback = jest.fn(() => true); const wrapper = mount( { render() { return <PageHeader title="Page Title" onBack={callback} />; }, }, { sync: false }, ); wrapper.find('div.ant-page-header-back-button').trigger('click'); expect(callback).toHaveBeenCalled(); }); it('pageHeader should support class', () => { const wrapper = mount({ render() { return <PageHeader title="Page Title" class="not-works" backIcon={false} />; }, }); expect(wrapper.element).toMatchSnapshot(); }); it('pageHeader should not render blank dom', () => { const wrapper = mount({ render() { return <PageHeader title={false} />; }, }); expect(wrapper.element).toMatchSnapshot(); }); it('breadcrumbs and back icon can coexist', () => { const routes = [ { path: 'index', breadcrumbName: 'First-level Menu', }, { path: 'first', breadcrumbName: 'Second-level Menu', }, { path: 'second', breadcrumbName: 'Third-level Menu', }, ]; const wrapper = mount({ render() { return <PageHeader title="Title" breadcrumb={{ routes }} />; }, }); expect(wrapper.findAll('.ant-breadcrumb')).toHaveLength(1); const wrapperBack = mount({ render() { return <PageHeader title="Title" breadcrumb={{ routes }} onBack={() => {}} />; }, }); expect(wrapperBack.findAll('.ant-breadcrumb')).toHaveLength(1); }); });