1
import { renderHook } from '@testing-library/react';
2
import { describe, expect, it, vi } from 'vitest';
4
import * as platformUtils from '@/utils/platform';
6
import { usePlatform } from './usePlatform';
9
vi.mock('@/utils/platform', () => ({
12
isInStandaloneMode: vi.fn(),
13
isSonomaOrLaterSafari: vi.fn(),
16
describe('usePlatform', () => {
17
it('should return correct platform info for Mac OS and Chrome', () => {
18
vi.mocked(platformUtils.getPlatform).mockReturnValue('Mac OS');
19
vi.mocked(platformUtils.getBrowser).mockReturnValue('Chrome');
20
vi.mocked(platformUtils.isInStandaloneMode).mockReturnValue(false);
21
vi.mocked(platformUtils.isSonomaOrLaterSafari).mockReturnValue(false);
23
const { result } = renderHook(() => usePlatform());
25
expect(result.current).toEqual({
34
isSonomaOrLaterSafari: false,
35
isSupportInstallPWA: true,
39
it('should return correct platform info for iOS and Safari', () => {
40
vi.mocked(platformUtils.getPlatform).mockReturnValue('iOS');
41
vi.mocked(platformUtils.getBrowser).mockReturnValue('Safari');
42
vi.mocked(platformUtils.isInStandaloneMode).mockReturnValue(true);
43
vi.mocked(platformUtils.isSonomaOrLaterSafari).mockReturnValue(true);
45
const { result } = renderHook(() => usePlatform());
47
expect(result.current).toEqual({
56
isSonomaOrLaterSafari: true,
57
isSupportInstallPWA: false,
61
it('should return correct platform info for Windows and Edge', () => {
62
vi.mocked(platformUtils.getPlatform).mockReturnValue('Windows');
63
vi.mocked(platformUtils.getBrowser).mockReturnValue('Edge');
64
vi.mocked(platformUtils.isInStandaloneMode).mockReturnValue(false);
65
vi.mocked(platformUtils.isSonomaOrLaterSafari).mockReturnValue(false);
67
const { result } = renderHook(() => usePlatform());
69
expect(result.current).toEqual({
78
isSonomaOrLaterSafari: false,
79
isSupportInstallPWA: true,