From 3be9aee6b4a67d0cf9df8c7afd05f93fed49e847 Mon Sep 17 00:00:00 2001 From: JeremyWuuuuu <15975785+JeremyWuuuuu@users.noreply.github.com> Date: Sat, 19 Mar 2022 12:17:15 +0800 Subject: [PATCH] chore(components): [el-breadcrumb] enhancement (#6713) - Remove some unnecessary code for breadcrumb - Update tests --- .../breadcrumb/__tests__/breadcrumb.spec.tsx | 64 +++++++++++++++++-- .../breadcrumb/src/breadcrumb-item.vue | 26 ++++---- 2 files changed, 74 insertions(+), 16 deletions(-) diff --git a/packages/components/breadcrumb/__tests__/breadcrumb.spec.tsx b/packages/components/breadcrumb/__tests__/breadcrumb.spec.tsx index a8444ed725..f4775a7b57 100644 --- a/packages/components/breadcrumb/__tests__/breadcrumb.spec.tsx +++ b/packages/components/breadcrumb/__tests__/breadcrumb.spec.tsx @@ -4,17 +4,22 @@ import Breadcrumb from '../src/breadcrumb.vue' import BreadcrumbItem from '../src/breadcrumb-item.vue' import type { VNode } from 'vue' -const _mount = (render: () => VNode) => +const _mount = (render: () => VNode, $router = {}) => mount(render, { global: { provide: { breadcrumb: {}, }, + config: { + globalProperties: { + $router, + }, + }, }, }) describe('Breadcrumb.vue', () => { - test('separator', () => { + it('separator', () => { const wrapper = _mount(() => ( A @@ -23,7 +28,7 @@ describe('Breadcrumb.vue', () => { expect(wrapper.find('.el-breadcrumb__separator').text()).toBe('?') }) - test('separatorIcon', () => { + it('separatorIcon', () => { const wrapper = _mount(() => ( A @@ -33,7 +38,7 @@ describe('Breadcrumb.vue', () => { expect(wrapper.findComponent(Check).exists()).toBe(true) }) - test('to', () => { + it('to', () => { const wrapper = _mount(() => ( A @@ -42,9 +47,58 @@ describe('Breadcrumb.vue', () => { expect(wrapper.find('.el-breadcrumb__inner').classes()).toContain('is-link') }) - test('single', () => { + it('single', () => { const wrapper = _mount(() => A) expect(wrapper.find('.el-breadcrumb__inner').text()).toBe('A') expect(wrapper.find('.el-breadcrumb__separator').text()).toBe('') }) + + describe('BreadcrumbItem', () => { + it('should set the last item as current page', () => { + const wrapper = _mount(() => ( + + A + B + + )) + + const items = wrapper.findAllComponents(BreadcrumbItem) + expect(items.at(1)!.element.getAttribute('aria-current')).toBe('page') + }) + + it('click event', async () => { + const replace = jest.fn() + const push = jest.fn() + let wrapper = _mount( + () => ( + + A + + ), + { + replace, + push, + } + ) + await wrapper.find('.el-breadcrumb__inner').trigger('click') + expect(push).toHaveBeenCalled() + wrapper.unmount() + wrapper = _mount( + () => ( + + + A + + + ), + { + replace, + push, + } + ) + + await wrapper.find('.el-breadcrumb__inner').trigger('click') + expect(replace).toHaveBeenCalled() + }) + }) }) diff --git a/packages/components/breadcrumb/src/breadcrumb-item.vue b/packages/components/breadcrumb/src/breadcrumb-item.vue index c87cd2ffec..9aaaf08f7f 100644 --- a/packages/components/breadcrumb/src/breadcrumb-item.vue +++ b/packages/components/breadcrumb/src/breadcrumb-item.vue @@ -1,6 +1,11 @@