import { describe, it, expect, vi, beforeEach } from 'vitest' import { BrowserEnum, DeviceEnum, OSEnum } from '#lib/enums' import { getDeviceHeaders } from '#lib/utils/helper' import { useDevice } from '#imports' vi.mock('#imports', () => ({ useDevice: vi.fn(), })) const OS_MAP = { [1 << 5]: OSEnum.IOS, [1 << 4]: OSEnum.ANDROID, [1 << 3]: OSEnum.WINDOWS, [1 << 2]: OSEnum.MACOS, [1 << 1]: OSEnum.APPLE, } const DEVICE_MAP = { [1 << 3]: DeviceEnum.MOBILE, [1 << 2]: DeviceEnum.MOBILE, [1 << 1]: DeviceEnum.DESKTOP, } const BROWSER_MAP = { [1 << 5]: BrowserEnum.SAFARI, [1 << 4]: BrowserEnum.FIREFOX, [1 << 3]: BrowserEnum.EDGE, [1 << 2]: BrowserEnum.CHROME, [1 << 1]: BrowserEnum.SAMSUNG, } describe('getDeviceHeaders', () => { it('should return correct headers for iOS, Mobile, Safari', () => { vi.mocked(useDevice).mockReturnValue({ isIos: true, isAndroid: false, isWindows: false, isMacOS: false, isApple: false, isMobile: true, isTablet: false, isDesktop: false, isSafari: true, isFirefox: false, isEdge: false, isChrome: false, isSamsung: false, }) const headers = getDeviceHeaders() expect(headers).toEqual({ os: OSEnum.IOS, device: DeviceEnum.MOBILE, browser: BrowserEnum.SAFARI, }) }) it('should get the largest value', () => { vi.mocked(useDevice).mockReturnValue({ isIos: true, isAndroid: true, isWindows: true, isMacOS: true, isApple: true, isMobile: true, isTablet: true, isDesktop: true, isSafari: true, isFirefox: true, isEdge: true, isChrome: true, isSamsung: true, }) const headers = getDeviceHeaders() expect(headers).toEqual({ os: OSEnum.IOS, device: DeviceEnum.MOBILE, browser: BrowserEnum.SAFARI, }) }) it('should return correct headers for Android, Tablet, Chrome', () => { vi.mocked(useDevice).mockReturnValue({ isIos: false, isAndroid: true, isWindows: false, isMacOS: false, isApple: false, isMobile: false, isTablet: true, isDesktop: false, isSafari: false, isFirefox: false, isEdge: false, isChrome: true, isSamsung: false, }) const headers = getDeviceHeaders() expect(headers).toEqual({ os: OSEnum.ANDROID, device: DeviceEnum.MOBILE, browser: BrowserEnum.CHROME, }) }) it('should return correct headers for Windows, Desktop, Firefox', () => { vi.mocked(useDevice).mockReturnValue({ isIos: false, isAndroid: false, isWindows: true, isMacOS: false, isApple: false, isMobile: false, isTablet: false, isDesktop: true, isSafari: false, isFirefox: true, isEdge: false, isChrome: false, isSamsung: false, }) const headers = getDeviceHeaders() expect(headers).toEqual({ os: OSEnum.WINDOWS, device: DeviceEnum.DESKTOP, browser: BrowserEnum.FIREFOX, }) }) })