feat(activity): add contribution ledger
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
import { test } from 'node:test';
|
||||
import assert from 'node:assert/strict';
|
||||
|
||||
import {
|
||||
activityGroupHasMixedSources,
|
||||
activitySessionMetaParts,
|
||||
activitySourceLabel,
|
||||
} from '../app/src/renderer/src/activity-ledger.mjs';
|
||||
|
||||
const claudeSession = {
|
||||
source: 'claude',
|
||||
project: '-Users-tomiya-Code-quiet-zero',
|
||||
message_count: 2716,
|
||||
};
|
||||
const codexSession = {
|
||||
source: 'codex',
|
||||
project: '-Users-tomiya-Code-quiet-zero',
|
||||
message_count: 2052,
|
||||
};
|
||||
|
||||
test('single-source activity groups omit provider provenance', () => {
|
||||
const split = { normal: [codexSession], noise: [{ ...codexSession, message_count: 12 }] };
|
||||
|
||||
assert.equal(activityGroupHasMixedSources(split), false);
|
||||
assert.deepEqual(
|
||||
activitySessionMetaParts(codexSession, {
|
||||
mixedSources: false,
|
||||
projectLabel: 'quiet-zero',
|
||||
}),
|
||||
[
|
||||
{ kind: 'project', text: 'quiet-zero' },
|
||||
{ kind: 'count', text: '2,052 msg' },
|
||||
],
|
||||
);
|
||||
});
|
||||
|
||||
test('mixed activity groups expose provider before project and count', () => {
|
||||
const split = { normal: [codexSession], noise: [claudeSession] };
|
||||
|
||||
assert.equal(activityGroupHasMixedSources(split), true);
|
||||
assert.deepEqual(
|
||||
activitySessionMetaParts(claudeSession, {
|
||||
mixedSources: true,
|
||||
projectLabel: 'quiet-zero',
|
||||
}),
|
||||
[
|
||||
{ kind: 'source', text: 'Claude Code' },
|
||||
{ kind: 'project', text: 'quiet-zero' },
|
||||
{ kind: 'count', text: '2,716 msg' },
|
||||
],
|
||||
);
|
||||
});
|
||||
|
||||
test('workspace activity omits redundant project scope', () => {
|
||||
assert.deepEqual(
|
||||
activitySessionMetaParts(codexSession, {
|
||||
mixedSources: false,
|
||||
projectLabel: 'quiet-zero',
|
||||
includeProject: false,
|
||||
}),
|
||||
[{ kind: 'count', text: '2,052 msg' }],
|
||||
);
|
||||
});
|
||||
|
||||
test('unknown providers retain their own provenance label', () => {
|
||||
assert.equal(activitySourceLabel({ source: 'opencode' }), 'Opencode');
|
||||
});
|
||||
Reference in New Issue
Block a user