| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import { Context } from '@deepseek-ai/cordis'
- import { describe, expect, it } from 'vitest'
- import { SlotRegistry } from '@deepseek-ai/dsh-client-ui-renderer/client'
- import { apply as applyHost } from '../src/index.ts'
- import { apply, inject } from '../src/client/index.ts'
- import { ComposerAttachments } from '../src/client/ComposerAttachments.tsx'
- import { MessageImages } from '../src/client/MessageImages.tsx'
- async function bench() {
- const ctx = new Context()
- await ctx.plugin(SlotRegistry).await()
- ctx.slots.register({
- name: 'root',
- children: {
- 'conversation.input.attachments': { kind: 'single', scope: 'session-maybe' },
- 'conversation.message.images': { kind: 'single', scope: 'session' },
- 'conversation.trajectory.images': { kind: 'single', scope: 'session' },
- 'tool.call.images': { kind: 'single', scope: 'session' },
- },
- } as never, () => null)
- const fiber = ctx.plugin({ inject: [...inject], apply })
- await fiber.await()
- return { ctx, fiber }
- }
- describe('attachment plugin', () => {
- it('keeps the host half empty', () => {
- expect(() => { applyHost() }).not.toThrow()
- })
- it('registers all entries and removes them with the plugin fiber', async () => {
- const { ctx, fiber } = await bench()
- expect(inject).toEqual(['slots'])
- expect(ctx.slots.entries('conversation.input.attachments')).toMatchObject([{
- locale: 'conversation',
- component: ComposerAttachments,
- }])
- expect(ctx.slots.entries('conversation.message.images')).toMatchObject([{
- locale: 'conversation',
- component: MessageImages,
- }])
- expect(ctx.slots.entries('conversation.trajectory.images')).toMatchObject([{
- locale: 'conversation',
- component: MessageImages,
- }])
- expect(ctx.slots.entries('tool.call.images')).toMatchObject([{
- locale: 'conversation',
- component: MessageImages,
- }])
- await fiber.dispose()
- expect(ctx.slots.entries('conversation.input.attachments')).toHaveLength(0)
- expect(ctx.slots.entries('conversation.message.images')).toHaveLength(0)
- expect(ctx.slots.entries('conversation.trajectory.images')).toHaveLength(0)
- expect(ctx.slots.entries('tool.call.images')).toHaveLength(0)
- })
- })
|