99 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			99 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| 
								 | 
							
								import { mount, createLocalVue } from '@vue/test-utils'
							 | 
						||
| 
								 | 
							
								import VueRouter from 'vue-router'
							 | 
						||
| 
								 | 
							
								import ElementUI from 'element-ui'
							 | 
						||
| 
								 | 
							
								import Breadcrumb from '@/components/Breadcrumb/index.vue'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const localVue = createLocalVue()
							 | 
						||
| 
								 | 
							
								localVue.use(VueRouter)
							 | 
						||
| 
								 | 
							
								localVue.use(ElementUI)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const routes = [
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    path: '/',
							 | 
						||
| 
								 | 
							
								    name: 'home',
							 | 
						||
| 
								 | 
							
								    children: [{
							 | 
						||
| 
								 | 
							
								      path: 'dashboard',
							 | 
						||
| 
								 | 
							
								      name: 'dashboard'
							 | 
						||
| 
								 | 
							
								    }]
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    path: '/menu',
							 | 
						||
| 
								 | 
							
								    name: 'menu',
							 | 
						||
| 
								 | 
							
								    children: [{
							 | 
						||
| 
								 | 
							
								      path: 'menu1',
							 | 
						||
| 
								 | 
							
								      name: 'menu1',
							 | 
						||
| 
								 | 
							
								      meta: { title: 'menu1' },
							 | 
						||
| 
								 | 
							
								      children: [{
							 | 
						||
| 
								 | 
							
								        path: 'menu1-1',
							 | 
						||
| 
								 | 
							
								        name: 'menu1-1',
							 | 
						||
| 
								 | 
							
								        meta: { title: 'menu1-1' }
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      {
							 | 
						||
| 
								 | 
							
								        path: 'menu1-2',
							 | 
						||
| 
								 | 
							
								        name: 'menu1-2',
							 | 
						||
| 
								 | 
							
								        redirect: 'noredirect',
							 | 
						||
| 
								 | 
							
								        meta: { title: 'menu1-2' },
							 | 
						||
| 
								 | 
							
								        children: [{
							 | 
						||
| 
								 | 
							
								          path: 'menu1-2-1',
							 | 
						||
| 
								 | 
							
								          name: 'menu1-2-1',
							 | 
						||
| 
								 | 
							
								          meta: { title: 'menu1-2-1' }
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          path: 'menu1-2-2',
							 | 
						||
| 
								 | 
							
								          name: 'menu1-2-2'
							 | 
						||
| 
								 | 
							
								        }]
							 | 
						||
| 
								 | 
							
								      }]
							 | 
						||
| 
								 | 
							
								    }]
							 | 
						||
| 
								 | 
							
								  }]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const router = new VueRouter({
							 | 
						||
| 
								 | 
							
								  routes
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								describe('Breadcrumb.vue', () => {
							 | 
						||
| 
								 | 
							
								  const wrapper = mount(Breadcrumb, {
							 | 
						||
| 
								 | 
							
								    localVue,
							 | 
						||
| 
								 | 
							
								    router
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  it('dashboard', () => {
							 | 
						||
| 
								 | 
							
								    router.push('/dashboard')
							 | 
						||
| 
								 | 
							
								    const len = wrapper.findAll('.el-breadcrumb__inner').length
							 | 
						||
| 
								 | 
							
								    expect(len).toBe(1)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  it('normal route', () => {
							 | 
						||
| 
								 | 
							
								    router.push('/menu/menu1')
							 | 
						||
| 
								 | 
							
								    const len = wrapper.findAll('.el-breadcrumb__inner').length
							 | 
						||
| 
								 | 
							
								    expect(len).toBe(2)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  it('nested route', () => {
							 | 
						||
| 
								 | 
							
								    router.push('/menu/menu1/menu1-2/menu1-2-1')
							 | 
						||
| 
								 | 
							
								    const len = wrapper.findAll('.el-breadcrumb__inner').length
							 | 
						||
| 
								 | 
							
								    expect(len).toBe(4)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  it('no meta.title', () => {
							 | 
						||
| 
								 | 
							
								    router.push('/menu/menu1/menu1-2/menu1-2-2')
							 | 
						||
| 
								 | 
							
								    const len = wrapper.findAll('.el-breadcrumb__inner').length
							 | 
						||
| 
								 | 
							
								    expect(len).toBe(3)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								  // it('click link', () => {
							 | 
						||
| 
								 | 
							
								  //   router.push('/menu/menu1/menu1-2/menu1-2-2')
							 | 
						||
| 
								 | 
							
								  //   const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
							 | 
						||
| 
								 | 
							
								  //   const second = breadcrumbArray.at(1)
							 | 
						||
| 
								 | 
							
								  //   console.log(breadcrumbArray)
							 | 
						||
| 
								 | 
							
								  //   const href = second.find('a').attributes().href
							 | 
						||
| 
								 | 
							
								  //   expect(href).toBe('#/menu/menu1')
							 | 
						||
| 
								 | 
							
								  // })
							 | 
						||
| 
								 | 
							
								  // it('noRedirect', () => {
							 | 
						||
| 
								 | 
							
								  //   router.push('/menu/menu1/menu1-2/menu1-2-1')
							 | 
						||
| 
								 | 
							
								  //   const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
							 | 
						||
| 
								 | 
							
								  //   const redirectBreadcrumb = breadcrumbArray.at(2)
							 | 
						||
| 
								 | 
							
								  //   expect(redirectBreadcrumb.contains('a')).toBe(false)
							 | 
						||
| 
								 | 
							
								  // })
							 | 
						||
| 
								 | 
							
								  it('last breadcrumb', () => {
							 | 
						||
| 
								 | 
							
								    router.push('/menu/menu1/menu1-2/menu1-2-1')
							 | 
						||
| 
								 | 
							
								    const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner')
							 | 
						||
| 
								 | 
							
								    const redirectBreadcrumb = breadcrumbArray.at(3)
							 | 
						||
| 
								 | 
							
								    expect(redirectBreadcrumb.contains('a')).toBe(false)
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 |