import { it, describe, expect } from 'vitest'
import { mount } from '@vue/test-utils'
import useHeaderResponsiveMode from '../useHeaderResponsiveMode'
describe('useHeaderResponsiveMode', () => {
it('should return isDesktop as true for desktop mode', () => {
// @ts-expect-error - Property 'happyDOM' does not exist on type 'Window & typeof globalThis'.
window.happyDOM.setInnerWidth(1200)
const wrapper = mount({
template: `
{{ isDesktop }}
`,
setup() {
const { isDesktop } = useHeaderResponsiveMode()
return { isDesktop }
},
})
expect(wrapper.vm.isDesktop).toBe(true)
wrapper.unmount()
})
it('should return isDesktop as false for mobile mode', () => {
// @ts-expect-error - Property 'happyDOM' does not exist on type 'Window & typeof globalThis'.
window.happyDOM.setInnerWidth(600)
const wrapper = mount({
template: `{{ isDesktop }}
`,
setup() {
const { isDesktop } = useHeaderResponsiveMode()
return { isDesktop }
},
})
expect(wrapper.vm.isDesktop).toBe(false)
wrapper.unmount()
})
it('should be reactive to window size changes', () => {
// @ts-expect-error - Property 'happyDOM' does not exist on type 'Window & typeof globalThis'.
window.happyDOM.setInnerWidth(1200)
const wrapper = mount({
template: `{{ isDesktop }}
`,
setup() {
const { isDesktop } = useHeaderResponsiveMode()
return { isDesktop }
},
})
expect(wrapper.vm.isDesktop).toBe(true)
wrapper.unmount()
// Note: In a real test environment, we'd need to trigger the matchMedia change event
// For now, we'll just verify the initial state based on window width
})
it('should return the correct responsive mode', async () => {
// Test mobile mode
const mobileWrapper = mount({
template: ``,
setup() {
const { isDesktop } = useHeaderResponsiveMode()
return { isDesktop }
},
})
expect(mobileWrapper.find('.is-desktop').exists()).toBe(false)
mobileWrapper.unmount()
// Test desktop mode
// @ts-expect-error - Property 'happyDOM' does not exist on type 'Window & typeof globalThis'.
window.happyDOM.setInnerWidth(1200)
const desktopWrapper = mount({
template: `{{ isDesktop }}
`,
setup() {
const { isDesktop } = useHeaderResponsiveMode()
return { isDesktop }
},
})
expect(desktopWrapper.vm.isDesktop).toBe(true)
desktopWrapper.unmount()
})
})