eigent/test/unit/components/WorkspaceCommitTimeline.test.tsx
4pmtong 6efe8394d8
Some checks are pending
Pre-commit / pre-commit (push) Waiting to run
Test / Run Web + Local Brain Smoke (push) Waiting to run
Test / Run Frontend Guardrails (push) Waiting to run
Test / Run Python Tests (push) Waiting to run
feat: make workspace version history user friendly
2026-08-19 21:39:16 +08:00

80 lines
2.5 KiB
TypeScript

// ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========
import {
buildWorkspaceTimelineEvents,
classifyWorkspaceCommit,
resolveWorkspaceCommitInitiator,
} from '@/components/Workspace/WorkspaceCommitTimeline';
import { describe, expect, it } from 'vitest';
describe('workspace commit timeline', () => {
it('fails closed to Agent when legacy history lacks provenance', () => {
expect(resolveWorkspaceCommitInitiator(undefined)).toBe('agent');
expect(resolveWorkspaceCommitInitiator('agent')).toBe('agent');
expect(resolveWorkspaceCommitInitiator('user')).toBe('user');
});
it('classifies merge commits by their graph parents', () => {
expect(
classifyWorkspaceCommit({
parent_oids: ['parent-a', 'parent-b'],
subject: 'Custom integration message',
})
).toBe('merge');
});
it('recognizes user save points and internal checkpoints', () => {
expect(
classifyWorkspaceCommit({
parent_oids: ['parent-a'],
subject: 'Save progress',
})
).toBe('save_point');
expect(
classifyWorkspaceCommit({
parent_oids: ['parent-a'],
subject: 'Checkpoint bounded workspace process delta',
})
).toBe('checkpoint');
});
it('places user pushes alongside commits in chronological order', () => {
const events = buildWorkspaceTimelineEvents(
[
{
oid: 'a'.repeat(40),
parent_oids: [],
author: 'Eigent',
committed_at: 10,
subject: 'Initialize workspace',
kind: 'commit',
initiated_by: 'agent',
},
],
[
{
operation_id: 'push-1',
kind: 'push',
initiated_by: 'user',
occurred_at: 20,
head_oid: 'a'.repeat(40),
remote_name: 'origin',
},
]
);
expect(events.map((event) => event.type)).toEqual(['operation', 'commit']);
});
});