service.spec.ts 1.0 KB

123456789101112131415161718192021
  1. /** The abstract service preserves the provider's discovery contract. */
  2. import { Context } from '@deepseek-ai/cordis'
  3. import { describe, expect, it, vi } from 'vitest'
  4. import type { Agent } from '@deepseek-ai/dsh-agent'
  5. import { FileReferenceService } from '../src/index.ts'
  6. import type { FileReferenceCandidate } from '../src/types.ts'
  7. describe('FileReferenceService', () => {
  8. it('registers a provider implementation without wrapping its discovery member', async () => {
  9. const candidates: FileReferenceCandidate[] = [{ path: 'src', kind: 'directory' }]
  10. const list = vi.fn((_agent: Agent, _query: string, _signal: AbortSignal) => Promise.resolve(candidates))
  11. class StubProvider extends FileReferenceService {
  12. list = list
  13. }
  14. const provider = new StubProvider(new Context())
  15. const agent = { id: 'target' } as unknown as Agent
  16. const signal = new AbortController().signal
  17. await expect(provider.list(agent, 'sr', signal)).resolves.toBe(candidates)
  18. expect(list).toHaveBeenCalledWith(agent, 'sr', signal)
  19. })
  20. })