test(client): cover unnamed results and versionless update tooltips
This commit is contained in:
1 parent
be5a84ad0b
commit
274bb97e0a
3 files changed
+26
-3
No files matched your search
@@ -164,3 +164,16 @@ it.each(['checking', 'verifying', 'installing'] as const)('shows only the versio
|
||||
expect((await screen.findByRole('tooltip')).textContent).toBe('0.1.7-alpha.2')
|
||||
} finally { f.view.unmount(); f.status.resolve({ phase: 'idle' }) }
|
||||
})
|
||||
|
||||
it.each([
|
||||
['checking', '正在检查更新…'],
|
||||
['verifying', '正在校验更新文件…'],
|
||||
['installing', '正在准备重启…'],
|
||||
] as const)('retains the state label when %s has no version', async (phase, label) => {
|
||||
const f = fixture()
|
||||
try {
|
||||
await f.emit({ phase })
|
||||
fireEvent.focus(screen.getByRole('button', { name: label }))
|
||||
expect((await screen.findByRole('tooltip')).textContent).toBe(label)
|
||||
} finally { f.view.unmount(); f.status.resolve({ phase: 'idle' }) }
|
||||
})
|
||||
@@ -119,8 +119,8 @@ describe('session rename through the assembled browser', () => {
|
||||
registerAction('last', 600, -2, 'Last action')
|
||||
const view = runtime.renderRoot()
|
||||
|
||||
const row = (await view.findByText('Session title')).closest('[role="treeitem"]')!
|
||||
const trigger = within(row as HTMLElement).getByLabelText('会话“Session title”的操作')
|
||||
const row = (await view.findByText('Persisted title')).closest('[role="treeitem"]')!
|
||||
const trigger = within(row as HTMLElement).getByLabelText('会话“Persisted title”的操作')
|
||||
fireEvent.click(trigger)
|
||||
expect(view.getAllByRole('menuitem').map(item => item.textContent)).toEqual([
|
||||
'置顶会话', '重命名', '分叉会话', '归档会话', 'Export action', 'Last action',
|
||||
@@ -134,7 +134,7 @@ describe('session rename through the assembled browser', () => {
|
||||
fireEvent.keyDown(last, { key: 'ArrowUp' })
|
||||
expect(document.activeElement).toBe(exportRow)
|
||||
fireEvent.click(exportRow)
|
||||
expect(selected).toHaveBeenCalledWith('export', SID, 'Session title')
|
||||
expect(selected).toHaveBeenCalledWith('export', SID, 'Persisted title')
|
||||
// The plugin row dismissed the menu through the bound open-state hook;
|
||||
// the list returns focus to the trigger.
|
||||
expect(view.queryByRole('menu')).toBeNull()
|
||||
|
||||
@@ -1088,3 +1088,13 @@ it.each([['未命名', t], ['Untitled', tEn]])('labels unnamed history as %s', (
|
||||
renderSlot={() => null} t={translate} />)
|
||||
expect(screen.getByText(label)).toBeTruthy()
|
||||
})
|
||||
|
||||
it.each([['未命名', t], ['Untitled', tEn]])('labels unnamed search results as %s', (label, translate) => {
|
||||
const result: SearchResultNode = { id: sid('unnamed-search'), title: '', workspace: 'Project',
|
||||
running: false, runningSubagentCount: 0, completed: false, archived: false }
|
||||
const onOpen = vi.fn()
|
||||
render(<SearchResultItem result={result} currentId={undefined} onOpen={onOpen}
|
||||
onUnarchive={vi.fn()} t={translate} />)
|
||||
fireEvent.click(screen.getByText(label))
|
||||
expect(onOpen).toHaveBeenCalledWith(result.id)
|
||||
})
|
||||
Reference in new issue
Block a user