mirror of
https://github.com/davidkaya/aryx.git
synced 2026-07-24 13:38:43 +02:00
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
92 lines
2.5 KiB
TypeScript
92 lines
2.5 KiB
TypeScript
import { describe, expect, test } from 'bun:test';
|
|
|
|
import {
|
|
SCRATCHPAD_PROJECT_ID,
|
|
SCRATCHPAD_PROJECT_NAME,
|
|
createScratchpadProject,
|
|
isScratchpadProject,
|
|
mergeScratchpadProject,
|
|
} from '@shared/domain/project';
|
|
|
|
describe('scratchpad project helpers', () => {
|
|
test('creates a stable built-in scratchpad project', () => {
|
|
const project = createScratchpadProject('C:\\Users\\me\\AppData\\Roaming\\aryx\\scratchpad');
|
|
|
|
expect(project.id).toBe(SCRATCHPAD_PROJECT_ID);
|
|
expect(project.name).toBe(SCRATCHPAD_PROJECT_NAME);
|
|
expect(project.path).toContain('scratchpad');
|
|
expect(project.git).toBeUndefined();
|
|
});
|
|
|
|
test('recognizes scratchpad project ids and records', () => {
|
|
expect(isScratchpadProject(SCRATCHPAD_PROJECT_ID)).toBe(true);
|
|
expect(
|
|
isScratchpadProject({
|
|
id: SCRATCHPAD_PROJECT_ID,
|
|
}),
|
|
).toBe(true);
|
|
expect(isScratchpadProject('project-normal')).toBe(false);
|
|
});
|
|
|
|
test('merges scratchpad project ahead of normal user projects and preserves user projects', () => {
|
|
const merged = mergeScratchpadProject(
|
|
[
|
|
{
|
|
id: 'project-a',
|
|
name: 'Repo A',
|
|
path: 'C:\\repo-a',
|
|
addedAt: '2026-03-23T00:00:00.000Z',
|
|
},
|
|
],
|
|
'C:\\Users\\me\\AppData\\Roaming\\aryx\\scratchpad',
|
|
);
|
|
|
|
expect(merged[0].id).toBe(SCRATCHPAD_PROJECT_ID);
|
|
expect(merged[1].id).toBe('project-a');
|
|
});
|
|
|
|
test('preserves git context on non-scratchpad projects when merging scratchpad project', () => {
|
|
const merged = mergeScratchpadProject(
|
|
[
|
|
{
|
|
id: 'project-a',
|
|
name: 'Repo A',
|
|
path: 'C:\\repo-a',
|
|
addedAt: '2026-03-23T00:00:00.000Z',
|
|
git: {
|
|
status: 'ready',
|
|
scannedAt: '2026-03-23T00:05:00.000Z',
|
|
repoRoot: 'C:\\repo-a',
|
|
branch: 'main',
|
|
isDirty: true,
|
|
changedFileCount: 2,
|
|
changes: {
|
|
staged: 1,
|
|
unstaged: 1,
|
|
untracked: 0,
|
|
conflicted: 0,
|
|
},
|
|
},
|
|
},
|
|
],
|
|
'C:\\Users\\me\\AppData\\Roaming\\aryx\\scratchpad',
|
|
);
|
|
|
|
expect(merged[0].git).toBeUndefined();
|
|
expect(merged[1].git).toEqual({
|
|
status: 'ready',
|
|
scannedAt: '2026-03-23T00:05:00.000Z',
|
|
repoRoot: 'C:\\repo-a',
|
|
branch: 'main',
|
|
isDirty: true,
|
|
changedFileCount: 2,
|
|
changes: {
|
|
staged: 1,
|
|
unstaged: 1,
|
|
untracked: 0,
|
|
conflicted: 0,
|
|
},
|
|
});
|
|
});
|
|
});
|