assembly-dependencies.client.spec.ts 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. /** Real bundle dependency closures activate their requested client plugins without extra roster rows. */
  2. import { FiberState } from '@deepseek-ai/cordis'
  3. import { describe, expect, vi } from 'vitest'
  4. import { createClientTest, webApp } from '../src/assembly/index.ts'
  5. const HMR = '@deepseek-ai/dsh-client-hmr'
  6. const MODULES = '@deepseek-ai/dsh-client-modules'
  7. const SESSIONS = '@deepseek-ai/dsh-api-session-controller'
  8. const FILE_UPLOAD = '@deepseek-ai/dsh-client-file-upload'
  9. const hmrRoster = webApp.closure([HMR])
  10. const sessionRoster = webApp.closure([SESSIONS])
  11. const hmrTest = createClientTest({ roster: hmrRoster }, { awaitConnected: false })
  12. const sessionTest = createClientTest({ roster: sessionRoster })
  13. describe('bundle dependency closures', () => {
  14. hmrTest('activates HMR with its declared module provider and no Connection', async ({ start }) => {
  15. expect(hmrRoster.rows.map(row => row.name)).toContain(MODULES)
  16. const client = await start()
  17. const entry = [...client.ctx.loader.entries()].find(row => row.options.name === HMR)
  18. expect(entry?.fiber?.state).toBe(FiberState.ACTIVE)
  19. expect(client.ctx.get('modules')).toBeDefined()
  20. expect(client.ctx.get('connection')).toBeUndefined()
  21. }, 60_000)
  22. sessionTest('activates Session Controller with its declared file-upload provider', async ({ mock, start }) => {
  23. expect(sessionRoster.rows.map(row => row.name)).toContain(FILE_UPLOAD)
  24. const client = await start()
  25. const entry = [...client.ctx.loader.entries()].find(row => row.options.name === SESSIONS)
  26. expect(entry?.fiber?.state).toBe(FiberState.ACTIVE)
  27. expect(client.ctx.get('fileUpload')).toBeDefined()
  28. await vi.waitFor(() => {
  29. expect(client.ctx.sessions.list.getSnapshot().phase).toBe('ready')
  30. expect(mock.log.calls('session/list')).toHaveLength(1)
  31. expect(mock.log.streams('session/control')).toHaveLength(1)
  32. })
  33. }, 60_000)
  34. })