实现用户角色权限区域管理模块
This commit is contained in:
		
							
								
								
									
										98
									
								
								ssyx-admin/tests/unit/components/Breadcrumb.spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								ssyx-admin/tests/unit/components/Breadcrumb.spec.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
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)
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										19
									
								
								ssyx-admin/tests/unit/components/Hamburger.spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								ssyx-admin/tests/unit/components/Hamburger.spec.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
import {shallowMount} from '@vue/test-utils'
 | 
			
		||||
import Hamburger from '@/components/Hamburger/index.vue'
 | 
			
		||||
 | 
			
		||||
describe('Hamburger.vue', () => {
 | 
			
		||||
  it('toggle click', () => {
 | 
			
		||||
    const wrapper = shallowMount(Hamburger)
 | 
			
		||||
    const mockFn = jest.fn()
 | 
			
		||||
    wrapper.vm.$on('toggleClick', mockFn)
 | 
			
		||||
    wrapper.find('.hamburger').trigger('click')
 | 
			
		||||
    expect(mockFn).toBeCalled()
 | 
			
		||||
  })
 | 
			
		||||
  it('prop isActive', () => {
 | 
			
		||||
    const wrapper = shallowMount(Hamburger)
 | 
			
		||||
    wrapper.setProps({isActive: true})
 | 
			
		||||
    expect(wrapper.contains('.is-active')).toBe(true)
 | 
			
		||||
    wrapper.setProps({isActive: false})
 | 
			
		||||
    expect(wrapper.contains('.is-active')).toBe(false)
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										23
									
								
								ssyx-admin/tests/unit/components/SvgIcon.spec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								ssyx-admin/tests/unit/components/SvgIcon.spec.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
import {shallowMount} from '@vue/test-utils'
 | 
			
		||||
import SvgIcon from '@/components/SvgIcon/index.vue'
 | 
			
		||||
 | 
			
		||||
describe('SvgIcon.vue', () => {
 | 
			
		||||
  it('iconClass', () => {
 | 
			
		||||
    const wrapper = shallowMount(SvgIcon, {
 | 
			
		||||
      propsData: {
 | 
			
		||||
        iconClass: 'test'
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    expect(wrapper.find('use').attributes().href).toBe('#icon-test')
 | 
			
		||||
  })
 | 
			
		||||
  it('className', () => {
 | 
			
		||||
    const wrapper = shallowMount(SvgIcon, {
 | 
			
		||||
      propsData: {
 | 
			
		||||
        iconClass: 'test'
 | 
			
		||||
      }
 | 
			
		||||
    })
 | 
			
		||||
    expect(wrapper.classes().length).toBe(1)
 | 
			
		||||
    wrapper.setProps({className: 'test'})
 | 
			
		||||
    expect(wrapper.classes().includes('test')).toBe(true)
 | 
			
		||||
  })
 | 
			
		||||
})
 | 
			
		||||
		Reference in New Issue
	
	Block a user