Files
stockfill/e2e/unit/useServiceWorker.spec.tsx

42 lines
1.2 KiB
TypeScript

import { renderHook, waitFor } from '@testing-library/react';
import { describe, expect, test, vi, beforeEach } from 'vitest';
const setupHook = async () => {
const module = await import('../../src/hooks/useServiceWorker');
return module.useServiceWorker;
};
describe('useServiceWorker', () => {
beforeEach(() => {
vi.resetModules();
vi.clearAllMocks();
});
test('registers service worker successfully', async () => {
const register = vi.fn().mockResolvedValue({});
Object.defineProperty(navigator, 'serviceWorker', {
value: { register },
configurable: true,
});
const useServiceWorker = await setupHook();
const { result } = renderHook(() => useServiceWorker());
await waitFor(() => expect(result.current).toBe(true));
expect(register).toHaveBeenCalledWith('/service-worker.js');
});
test('handles registration failure', async () => {
const register = vi.fn().mockRejectedValue(new Error('fail'));
Object.defineProperty(navigator, 'serviceWorker', {
value: { register },
configurable: true,
});
const useServiceWorker = await setupHook();
const { result } = renderHook(() => useServiceWorker());
await waitFor(() => expect(result.current).toBe(false));
});
});