62 lines
1.7 KiB
TypeScript
62 lines
1.7 KiB
TypeScript
|
|
/**
|
||
|
|
* Integration Test: Document Workflow
|
||
|
|
* Tests document creation, versioning, and workflow
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { describe, it, expect, beforeAll, afterAll } from 'vitest';
|
||
|
|
import { setupTestContext, teardownTestContext, cleanupDatabase, TestContext } from './setup';
|
||
|
|
|
||
|
|
describe('Document Workflow - Integration', () => {
|
||
|
|
let context: TestContext;
|
||
|
|
|
||
|
|
beforeAll(async () => {
|
||
|
|
context = await setupTestContext();
|
||
|
|
await cleanupDatabase(context.dbPool);
|
||
|
|
});
|
||
|
|
|
||
|
|
afterAll(async () => {
|
||
|
|
await cleanupDatabase(context.dbPool);
|
||
|
|
await teardownTestContext(context);
|
||
|
|
});
|
||
|
|
|
||
|
|
describe('Document Lifecycle', () => {
|
||
|
|
it('should create, update, and version a document', async () => {
|
||
|
|
// 1. Create document via intake service
|
||
|
|
const createResponse = await context.intakeService.inject({
|
||
|
|
method: 'POST',
|
||
|
|
url: '/api/v1/documents',
|
||
|
|
payload: {
|
||
|
|
title: 'Test Document',
|
||
|
|
contentType: 'application/pdf',
|
||
|
|
// Add other required fields
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(createResponse.statusCode).toBe(201);
|
||
|
|
const document = createResponse.json();
|
||
|
|
|
||
|
|
// 2. Update document
|
||
|
|
const updateResponse = await context.intakeService.inject({
|
||
|
|
method: 'PATCH',
|
||
|
|
url: `/api/v1/documents/${document.id}`,
|
||
|
|
payload: {
|
||
|
|
title: 'Updated Test Document',
|
||
|
|
},
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(updateResponse.statusCode).toBe(200);
|
||
|
|
|
||
|
|
// 3. Check version history
|
||
|
|
const versionsResponse = await context.intakeService.inject({
|
||
|
|
method: 'GET',
|
||
|
|
url: `/api/v1/documents/${document.id}/versions`,
|
||
|
|
});
|
||
|
|
|
||
|
|
expect(versionsResponse.statusCode).toBe(200);
|
||
|
|
const versions = versionsResponse.json();
|
||
|
|
expect(versions).toHaveLength(2); // Original + update
|
||
|
|
});
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|