agent-ecosystem/test/features/recent-projects/renderer/utils/navigation.test.ts

62 lines
1.7 KiB
TypeScript

import { describe, expect, it, vi } from 'vitest';
import {
buildSyntheticRepositoryGroup,
findMatchingWorktree,
} from '@features/recent-projects/renderer/utils/navigation';
import type { RepositoryGroup } from '@renderer/types/data';
describe('recent-projects navigation utils', () => {
it('finds a matching worktree across normalized candidate paths', () => {
const groups: RepositoryGroup[] = [
{
id: 'repo-alpha',
identity: null,
name: 'alpha',
mostRecentSession: 1_000,
totalSessions: 2,
worktrees: [
{
id: 'wt-alpha',
path: '/Users/test/Alpha',
name: 'alpha',
isMainWorktree: true,
source: 'unknown',
sessions: [],
totalSessions: 2,
createdAt: 1_000,
},
],
},
];
expect(
findMatchingWorktree(groups, ['/users/test/alpha/', '/users/test/other'])
).toEqual({
repoId: 'repo-alpha',
worktreeId: 'wt-alpha',
});
});
it('builds a synthetic repository group with encoded repo and worktree ids', () => {
vi.useFakeTimers();
vi.setSystemTime(new Date('2026-04-14T12:00:00Z'));
const group = buildSyntheticRepositoryGroup('/Users/test/dev/my project');
expect(group.id).toBe('-Users-test-dev-my project');
expect(group.name).toBe('my project');
expect(group.worktrees).toHaveLength(1);
expect(group.worktrees[0]).toMatchObject({
id: '-Users-test-dev-my project',
path: '/Users/test/dev/my project',
name: 'my project',
isMainWorktree: true,
totalSessions: 0,
});
expect(group.worktrees[0].createdAt).toBe(Date.parse('2026-04-14T12:00:00Z'));
vi.useRealTimers();
});
});