Files
hapi/web/src/lib/file-composer.test.ts
T
DebinandGitHub d124c106a4 feat(web): file context menu with copy path / absolute path / add to composer (#1808)
Add a right-click (desktop) / long-press (mobile) menu to file entries on
the Files page: git change rows, file search results, and the directory
tree. Actions:
- Copy path (workspace-relative)
- Copy absolute path (resolved against session.metadata.path)
- Add to composer (append a backticked reference to the session composer
  draft and navigate back to the chat)

Closes #1807
2026-09-11 14:20:22 +08:00

31 lines
1.2 KiB
TypeScript

import { beforeEach, describe, expect, it } from 'vitest'
import { formatFileReference, appendFileReferenceToComposerDraft } from './file-composer'
import { getDraft, saveDraft } from '@/lib/composer-drafts'
describe('file-composer', () => {
beforeEach(() => {
window.sessionStorage.clear()
})
it('formats a backticked reference', () => {
expect(formatFileReference('src/foo.ts')).toBe('`src/foo.ts`')
})
it('writes a new draft when none exists', () => {
appendFileReferenceToComposerDraft('file-composer-empty', 'src/foo.ts')
expect(getDraft('file-composer-empty')).toBe('`src/foo.ts`')
})
it('appends on a new line and preserves existing text', () => {
saveDraft('file-composer-existing', 'please review')
appendFileReferenceToComposerDraft('file-composer-existing', 'src/foo.ts')
expect(getDraft('file-composer-existing')).toBe('please review\n`src/foo.ts`')
})
it('trims trailing whitespace before appending', () => {
saveDraft('file-composer-trailing', 'please review\n\n')
appendFileReferenceToComposerDraft('file-composer-trailing', 'src/foo.ts')
expect(getDraft('file-composer-trailing')).toBe('please review\n`src/foo.ts`')
})
})