import { Context } from '@deepseek-ai/cordis' import { describe, expect, it } from 'vitest' import { SettingsProvider, settingsNamespace, type SettingsNamespace } from '@deepseek-ai/dsh-settings' import { CONVERSATION_SETTINGS_NAMESPACE, DEFAULT_BUSY_ENTER_BEHAVIOR, apply, } from '@deepseek-ai/dsh-client-ui-conversation' class MemorySettings extends SettingsProvider { readonly writable = true protected load(): Promise> { return Promise.resolve({}) } protected persist(_ns: SettingsNamespace, _section: Record): Promise { return Promise.resolve() } } describe('ui-conversation host', () => { it('registers, validates, and disposes the durable busy-Enter preference', async () => { const ctx = new Context() await ctx.plugin(MemorySettings).await() const fiber = ctx.plugin({ apply }) await fiber.await() const ns = settingsNamespace(CONVERSATION_SETTINGS_NAMESPACE) expect(ctx.settings.get(ns)).toEqual({ busyEnter: DEFAULT_BUSY_ENTER_BEHAVIOR }) await ctx.settings.update(ns, { busyEnter: 'steer' }) expect(ctx.settings.get(ns)).toEqual({ busyEnter: 'steer' }) await expect(ctx.settings.update(ns, { busyEnter: 'invalid' })).rejects.toThrow() await fiber.dispose() expect(ctx.settings.describe().map(row => row.ns)).not.toContain(ns) }) })