86 lines
2.6 KiB
TypeScript
86 lines
2.6 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { inferOpenCodeTaskRefsFromInboxMessage } from '../../../../src/main/services/team/opencode/delivery/OpenCodeRuntimeDeliveryTaskRefInference';
|
|
|
|
const TEAM_NAME = 'relay-works-69';
|
|
const TASKS = [
|
|
{ id: 'a7fd5f34-ff82-4ead-8089-34064454a623', displayId: 'a7fd5f34' },
|
|
{ id: '8dc34135-1111-4111-8111-8dc341350000', displayId: '8dc34135' },
|
|
{ id: '1', displayId: '1' },
|
|
];
|
|
|
|
describe('inferOpenCodeTaskRefsFromInboxMessage', () => {
|
|
it('preserves structured task refs', () => {
|
|
const structured = [{ teamName: TEAM_NAME, taskId: 'task-1', displayId: 'abcd1234' }];
|
|
|
|
expect(
|
|
inferOpenCodeTaskRefsFromInboxMessage({
|
|
teamName: TEAM_NAME,
|
|
message: {
|
|
text: 'Ignore text #a7fd5f34.',
|
|
taskRefs: structured,
|
|
},
|
|
tasks: TASKS,
|
|
})
|
|
).toEqual(structured);
|
|
});
|
|
|
|
it('uses the summary before ambiguous full text', () => {
|
|
expect(
|
|
inferOpenCodeTaskRefsFromInboxMessage({
|
|
teamName: TEAM_NAME,
|
|
message: {
|
|
text: [
|
|
'**Comment on task #a7fd5f34** _Calculator styles_',
|
|
'',
|
|
'> **Dependency resolved** - task #8dc34135 completed.',
|
|
'> All blockers for #a7fd5f34 are resolved - this task is ready to start.',
|
|
].join('\n'),
|
|
summary: 'Comment on #a7fd5f34',
|
|
},
|
|
tasks: TASKS,
|
|
})
|
|
).toEqual([{ teamName: TEAM_NAME, taskId: TASKS[0].id, displayId: 'a7fd5f34' }]);
|
|
});
|
|
|
|
it('uses a comment heading when the summary is missing', () => {
|
|
expect(
|
|
inferOpenCodeTaskRefsFromInboxMessage({
|
|
teamName: TEAM_NAME,
|
|
message: {
|
|
text: [
|
|
'**Comment on #a7fd5f34** _Calculator styles_',
|
|
'',
|
|
'Dependency #8dc34135 is resolved.',
|
|
].join('\n'),
|
|
},
|
|
tasks: TASKS,
|
|
})
|
|
).toEqual([{ teamName: TEAM_NAME, taskId: TASKS[0].id, displayId: 'a7fd5f34' }]);
|
|
});
|
|
|
|
it('does not infer from ambiguous text without a unique candidate field', () => {
|
|
expect(
|
|
inferOpenCodeTaskRefsFromInboxMessage({
|
|
teamName: TEAM_NAME,
|
|
message: {
|
|
text: 'Dependency resolved: #8dc34135 unblocks #a7fd5f34.',
|
|
},
|
|
tasks: TASKS,
|
|
})
|
|
).toEqual([]);
|
|
});
|
|
|
|
it('supports short display ids', () => {
|
|
expect(
|
|
inferOpenCodeTaskRefsFromInboxMessage({
|
|
teamName: TEAM_NAME,
|
|
message: {
|
|
summary: 'Comment on #1',
|
|
text: 'Ready.',
|
|
},
|
|
tasks: TASKS,
|
|
})
|
|
).toEqual([{ teamName: TEAM_NAME, taskId: '1', displayId: '1' }]);
|
|
});
|
|
});
|