import path from 'path';
// Set env BEFORE loading config
const FIXTURE_ROOT = path.resolve('tests/fixtures');
process.env.RUNBOOK_ROOT = FIXTURE_ROOT;
import { createFsAdapter } from '../../src/adapters/fsio.mjs';
import { loadConfig } from '../../src/adapters/config.mjs';
import { createIndexer } from '../../src/services/indexer.mjs';
import { runTests, test, expect, describe } from '../unit/core/_harness.mjs';
// Integration test for indexer (T028)
// (RUNBOOK_ROOT already set above)
const config = loadConfig(process.env);
const fsAdapter = createFsAdapter(config.root);
const logger = { log: (event, meta) => console.log('[log]', event, JSON.stringify(meta)) };
const indexer = createIndexer({ fsAdapter, config, logger });
describe('integration:indexer', () => {
test('builds index with expected documents/chunks and skips invalid', async () => {
const idx = await indexer.buildIndex();
expect(idx.documents.length).toBe(2); // invalid skipped
const titles = idx.documents.map(d => d.title).sort();
expect(titles.includes('Service A Restart')).toBe(true);
expect(titles.includes('Legacy Cleanup Task')).toBe(true);
const svcA = idx.documents.find(d => d.title === 'Service A Restart');
expect(typeof svcA.freshness.stale).toBe('boolean');
expect(idx.chunks.length > 0).toBe(true);
expect(idx.stats.skipped).toBe(1);
});
});
await runTests();