49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { buildInitialReviewFileScrollKey } from '@renderer/components/team/review/initialReviewFileScroll';
|
|
|
|
import type { TaskChangeSetV2 } from '@shared/types';
|
|
|
|
function makeChangeSet(sourceFingerprint: string): TaskChangeSetV2 {
|
|
return {
|
|
teamName: 'team-a',
|
|
taskId: 'task-1',
|
|
files: [],
|
|
totalFiles: 0,
|
|
totalLinesAdded: 0,
|
|
totalLinesRemoved: 0,
|
|
confidence: 'high',
|
|
computedAt: '2026-04-20T10:00:00.000Z',
|
|
scope: {
|
|
taskId: 'task-1',
|
|
memberName: 'alice',
|
|
startLine: 0,
|
|
endLine: 0,
|
|
startTimestamp: '',
|
|
endTimestamp: '',
|
|
toolUseIds: [],
|
|
filePaths: [],
|
|
confidence: { tier: 1, label: 'high', reason: 'ledger' },
|
|
},
|
|
warnings: [],
|
|
provenance: {
|
|
sourceKind: 'ledger',
|
|
sourceFingerprint,
|
|
},
|
|
};
|
|
}
|
|
|
|
describe('buildInitialReviewFileScrollKey', () => {
|
|
it('changes when the change set identity changes even if the initial file path is unchanged', () => {
|
|
const path = '/repo/src/shared.ts';
|
|
|
|
expect(buildInitialReviewFileScrollKey(makeChangeSet('fp-a'), path)).not.toBe(
|
|
buildInitialReviewFileScrollKey(makeChangeSet('fp-b'), path)
|
|
);
|
|
});
|
|
|
|
it('does not produce a key without a change set or file path', () => {
|
|
expect(buildInitialReviewFileScrollKey(null, '/repo/src/file.ts')).toBeNull();
|
|
expect(buildInitialReviewFileScrollKey(makeChangeSet('fp'), undefined)).toBeNull();
|
|
});
|
|
});
|