- Remove legacy compute-worker monolith under `src/compute/`, including PDF and Whisper inference, control-plane, and runtime orchestration - Move PDF and Whisper inference logic to new `src/inference/` module - Move control-plane, orchestrator, and state machine logic to `src/operations/` - Move NATS/JetStream adapters to `src/infrastructure/` - Move job orchestration, progress, and artifact persistence to `src/jobs/` - Update imports throughout tests and main app to reference new module structure - Update Dockerfile and scripts to use new asset paths - Add new entrypoints: `src/api/app.ts` and `src/api/contracts.ts` - Remove obsolete files and update `.gitignore` for new dev artifacts This refactor modularizes the compute-worker, improving maintainability and separation of concerns. No functional changes to inference or orchestration logic. BREAKING CHANGE: compute-worker internal APIs, directory structure, and imports have changed; downstream code must update imports and integration points.
33 lines
1.2 KiB
TypeScript
33 lines
1.2 KiB
TypeScript
import { describe, expect, test, vi } from 'vitest';
|
|
import { persistParsedPdfWhileSourceExists } from '../../src/jobs/pdf-artifact-persistence';
|
|
|
|
describe('PDF artifact persistence', () => {
|
|
test('does not write parsed output after the source was deleted', async () => {
|
|
const putParsedObject = vi.fn(async () => 'parsed.json');
|
|
|
|
await expect(persistParsedPdfWhileSourceExists({
|
|
sourceObjectKey: 'document.pdf',
|
|
sourceExists: async () => false,
|
|
putParsedObject,
|
|
deleteParsedObject: async () => undefined,
|
|
})).rejects.toThrow('before parsed output');
|
|
|
|
expect(putParsedObject).not.toHaveBeenCalled();
|
|
});
|
|
|
|
test('removes parsed output when the source disappears during the write', async () => {
|
|
const sourceExists = vi.fn()
|
|
.mockResolvedValueOnce(true)
|
|
.mockResolvedValueOnce(false);
|
|
const deleteParsedObject = vi.fn(async () => undefined);
|
|
|
|
await expect(persistParsedPdfWhileSourceExists({
|
|
sourceObjectKey: 'document.pdf',
|
|
sourceExists,
|
|
putParsedObject: async () => 'parsed.json',
|
|
deleteParsedObject,
|
|
})).rejects.toThrow('while parsed output');
|
|
|
|
expect(deleteParsedObject).toHaveBeenCalledWith('parsed.json');
|
|
});
|
|
});
|