import { describe, expect, it } from 'vitest';

import * as documentApi from '@/lib/document';
import {
  DEFAULT_DOCUMENT_TRANSFORMS,
  DocumentTransformRegistry,
  createDefaultDocumentTransformRegistry,
} from '@/lib/document';

describe('document transform registry', () => {
  it('exposes the deterministic default transform order', () => {
    const registry = createDefaultDocumentTransformRegistry();

    expect(registry.list().map((transform) => transform.id)).toEqual(['normalize', 'remove-noise']);
    expect(DEFAULT_DOCUMENT_TRANSFORMS).toHaveLength(2);
    expect(documentApi).not.toHaveProperty('detectDocumentStructureTransform');
  });

  it('rejects duplicate IDs and reports missing required transforms', () => {
    const transform = DEFAULT_DOCUMENT_TRANSFORMS[0];
    const registry = new DocumentTransformRegistry([transform]);

    expect(() => registry.register(transform)).toThrow(/already registered/);
    expect(() => registry.require('missing')).toThrow(/Unknown document transform/);
  });
});