UNPKG

@mozaic-ds/vue

Version:

Mozaic-Vue is the Vue.js implementation of ADEO Design system

71 lines (54 loc) 1.9 kB
import { describe, it, expect, beforeEach, vi } from 'vitest'; import { defineComponent } from 'vue'; import { mount } from '@vue/test-utils'; import { useIsMobile } from './use-is-mobile.composable'; describe('useIsMobile', () => { beforeEach(() => { window.matchMedia = vi.fn().mockImplementation((query: string) => ({ matches: false, media: query, addEventListener: vi.fn(), removeEventListener: vi.fn(), })); }); const createWrapper = (breakpoint?: number) => { const component = defineComponent({ setup() { const result = useIsMobile(breakpoint); return { isMobile: result.isMobile }; }, template: '<div>{{ isMobile }}</div>', }); return mount(component); }; it('should detect desktop screen', () => { const wrapper = createWrapper(); expect(wrapper.vm.isMobile).toBe(false); }); it('should detect mobile screen', () => { window.matchMedia = vi.fn().mockReturnValue({ matches: true, media: '', addEventListener: vi.fn(), removeEventListener: vi.fn(), }); const wrapper = createWrapper(); expect(wrapper.vm.isMobile).toBe(true); }); it('should use default breakpoint (780px)', () => { createWrapper(); expect(window.matchMedia).toHaveBeenCalledWith('(max-width: 780px)'); }); it('should accept custom breakpoint', () => { createWrapper(1024); expect(window.matchMedia).toHaveBeenCalledWith('(max-width: 1024px)'); }); it('should add and remove event listener', () => { const addSpy = vi.spyOn(window, 'addEventListener'); const removeSpy = vi.spyOn(window, 'removeEventListener'); const wrapper = createWrapper(); expect(addSpy).toHaveBeenCalledWith('resize', expect.any(Function)); wrapper.unmount(); expect(removeSpy).toHaveBeenCalledWith('resize', expect.any(Function)); }); });