Add targeted Vitest coverage
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
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));
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user