agent-ecosystem/test/features/recent-projects/main/adapters/input/recentProjectsDiagnostics.test.ts

49 lines
1.7 KiB
TypeScript

import {
estimateDashboardRecentProjectsPayloadBytes,
getRecentProjectsMemoryDiagnostics,
} from '@features/recent-projects/main/adapters/input/recentProjectsDiagnostics';
import { afterEach, describe, expect, it, vi } from 'vitest';
import type { DashboardRecentProjectsPayload } from '@features/recent-projects/contracts';
describe('recentProjectsDiagnostics', () => {
afterEach(() => {
vi.restoreAllMocks();
});
it('estimates payload size without stringifying the whole payload', () => {
const stringifySpy = vi.spyOn(JSON, 'stringify');
const payload: DashboardRecentProjectsPayload = {
degraded: false,
projects: [
{
id: 'repo:alpha',
name: 'alpha',
primaryPath: '/Users/test/projects/alpha',
associatedPaths: ['/Users/test/projects/alpha', '/Users/test/worktrees/alpha-feature'],
mostRecentActivity: 1_777_000_000_000,
providerIds: ['codex', 'anthropic'],
source: 'mixed',
openTarget: {
type: 'existing-worktree',
repositoryId: 'repo-alpha',
worktreeId: 'worktree-alpha-main',
},
primaryBranch: 'main',
filesystemState: 'available',
},
],
};
expect(estimateDashboardRecentProjectsPayloadBytes(payload)).toBeGreaterThan(0);
expect(stringifySpy).not.toHaveBeenCalled();
});
it('returns bounded numeric memory diagnostics', () => {
const diagnostics = getRecentProjectsMemoryDiagnostics();
expect(diagnostics.rssBytes).toEqual(expect.any(Number));
expect(diagnostics.heapUsedBytes).toEqual(expect.any(Number));
expect(diagnostics.heapTotalBytes).toEqual(expect.any(Number));
});
});