import { describe, expect, it } from 'vitest'; import { defaultBrowseRoot, joinRemotePath, parseListDirMessage, pathBreadcrumbs, } from './remoteDirBrowser'; describe('remoteDirBrowser helpers', () => { it('parseListDirMessage reads agent JSON', () => { const msg = JSON.stringify({ path: '/home/alice', home_dir: '/home/alice', platform: 'linux', entries: [{ name: 'docs', is_dir: true, size: 0 }], }); const parsed = parseListDirMessage(msg); expect(parsed?.path).toBe('/home/alice'); expect(parsed?.entries).toHaveLength(1); }); it('defaultBrowseRoot returns empty for agent home resolution', () => { expect(defaultBrowseRoot('windows')).toBe(''); expect(defaultBrowseRoot('linux')).toBe(''); }); it('joinRemotePath handles unix parent', () => { expect(joinRemotePath('/home/alice/docs', '..')).toBe('/home/alice'); expect(joinRemotePath('/home/alice/docs', 'file.txt')).toBe('/home/alice/docs/file.txt'); }); it('joinRemotePath handles windows parent', () => { expect(joinRemotePath('C:\\Users\\alice', '..')).toBe('C:\\Users'); expect(joinRemotePath('C:\\Users\\alice', 'Desktop')).toBe('C:\\Users\\alice\\Desktop'); }); it('pathBreadcrumbs splits mixed separators', () => { expect(pathBreadcrumbs('/var/log')).toEqual(['var', 'log']); expect(pathBreadcrumbs('C:\\Users\\bob')).toEqual(['C:', 'Users', 'bob']); }); });