App.spec.ts 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import App from '@/App.vue'
  2. import router from '@/router'
  3. import HelloWorld from '@/views/HelloWorld.vue'
  4. import { mountComponent } from '@test/unit/testhelper'
  5. import { VueWrapper } from '@vue/test-utils'
  6. import { NConfigProvider, NSwitch, NLayoutSider } from 'naive-ui'
  7. import { ComponentPublicInstance } from 'vue'
  8. describe('App.vue', () => {
  9. let wrapper: VueWrapper<ComponentPublicInstance<typeof App>>
  10. beforeEach(() => {
  11. wrapper = mountComponent<InstanceType<typeof App>>(App, {}, {}, true)
  12. })
  13. afterEach(() => {
  14. wrapper?.unmount()
  15. })
  16. test('should mount', async () => {
  17. expect(wrapper.exists()).toBe(true)
  18. router.push({ name: 'home' })
  19. await router.isReady()
  20. expect(wrapper.findComponent(HelloWorld).exists()).toBe(true)
  21. })
  22. test('should switch to dark mode', async () => {
  23. const button = wrapper.findComponent(NSwitch)
  24. expect(button.exists()).toBe(true)
  25. button.trigger('click')
  26. await wrapper.vm.$nextTick()
  27. const confComp = wrapper.findComponent(NConfigProvider)
  28. expect(confComp.classes().includes('dark')).toBe(true)
  29. })
  30. test('should expand sider when hovered, and collapse when left', async () => {
  31. let sider = wrapper.findComponent(NLayoutSider)
  32. expect(sider.exists()).toBe(true)
  33. sider.trigger('mouseover')
  34. await wrapper.vm.$nextTick()
  35. sider = wrapper.findComponent(NLayoutSider)
  36. expect(sider.classes().includes('n-layout-sider--show-content')).toBe(true)
  37. sider.trigger('mouseleave')
  38. await wrapper.vm.$nextTick()
  39. sider = wrapper.findComponent(NLayoutSider)
  40. expect(sider.classes().includes('n-layout-sider--collapsed')).toBe(true)
  41. })
  42. })