48 lines
1.9 KiB
TypeScript
48 lines
1.9 KiB
TypeScript
// @vitest-environment jsdom
|
|
import { act } from 'react';
|
|
import { createRoot } from 'react-dom/client';
|
|
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
import { AssessorApiClient } from '../../src/api/assessor-api-client';
|
|
import { GpoFolderImport } from '../../src/features/project-import/GpoFolderImport';
|
|
|
|
afterEach(() => {
|
|
vi.useRealTimers();
|
|
vi.restoreAllMocks();
|
|
vi.unstubAllGlobals();
|
|
});
|
|
|
|
describe('timeslot import status polling', () => {
|
|
it('does not poll from idle hidden GPO import controls rendered in timeslot rows', async () => {
|
|
vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true);
|
|
vi.useFakeTimers();
|
|
const status = vi.spyOn(AssessorApiClient.prototype, 'listProjectGpoBackupStatus')
|
|
.mockResolvedValue({ records: [] } as never);
|
|
const container = document.createElement('div');
|
|
const root = createRoot(container);
|
|
try {
|
|
await act(async () => root.render(<GpoFolderImport projectId="synthetic-project" assessmentId="synthetic-slot" showStatus={false}/>));
|
|
await act(async () => vi.advanceTimersByTimeAsync(10_000));
|
|
expect(status).not.toHaveBeenCalled();
|
|
} finally {
|
|
await act(async () => root.unmount());
|
|
}
|
|
});
|
|
|
|
it('loads a visible terminal status once without starting a permanent poll', async () => {
|
|
vi.stubGlobal('IS_REACT_ACT_ENVIRONMENT', true);
|
|
vi.useFakeTimers();
|
|
const status = vi.spyOn(AssessorApiClient.prototype, 'listProjectGpoBackupStatus')
|
|
.mockResolvedValue({ records: [] } as never);
|
|
const container = document.createElement('div');
|
|
const root = createRoot(container);
|
|
try {
|
|
await act(async () => root.render(<GpoFolderImport projectId="synthetic-project" showStatus/>));
|
|
expect(status).toHaveBeenCalledOnce();
|
|
await act(async () => vi.advanceTimersByTimeAsync(10_000));
|
|
expect(status).toHaveBeenCalledOnce();
|
|
} finally {
|
|
await act(async () => root.unmount());
|
|
}
|
|
});
|
|
});
|