feat(cli): enforce minio ingestion extractor checks in setup and doctor

This commit is contained in:
William Valentin
2026-02-16 14:43:20 -08:00
parent 0548ab3833
commit 289fc44380
8 changed files with 275 additions and 4 deletions
+41
View File
@@ -0,0 +1,41 @@
import { describe, it, expect } from 'vitest';
import {
checkMinioExtractorStatus,
renderMinioExtractorSetupLines,
summarizeMinioExtractorStatus,
} from './minioExtractors.js';
describe('minio extractor requirements', () => {
it('skips checks when backup.minio is not enabled', async () => {
const status = await checkMinioExtractorStatus({});
expect(status.minioEnabled).toBe(false);
expect(status.missingRequirements).toEqual([]);
expect(renderMinioExtractorSetupLines(status)).toEqual([]);
});
it('reports missing pdf/docx extractors', async () => {
const status = await checkMinioExtractorStatus(
{ backup: { minio: { enabled: true } } },
async () => false,
);
expect(status.minioEnabled).toBe(true);
expect(status.pdfSupported).toBe(false);
expect(status.docxSupported).toBe(false);
expect(status.missingRequirements).toEqual(['pdftotext', 'pandoc or docx2txt']);
expect(summarizeMinioExtractorStatus(status)).toBe('pdf:missing(pdftotext), docx:missing(pandoc|docx2txt)');
});
it('accepts pandoc as docx extractor', async () => {
const status = await checkMinioExtractorStatus(
{ backup: { minio: { enabled: true } } },
async (command) => command === 'pdftotext' || command === 'pandoc',
);
expect(status.pdfSupported).toBe(true);
expect(status.docxSupported).toBe(true);
expect(status.availableDocxExtractors).toEqual(['pandoc']);
expect(status.missingRequirements).toEqual([]);
});
});