fix: route scheduled watcher output by room role
This commit is contained in:
79
src/task-scheduler-github-delivery.test.ts
Normal file
79
src/task-scheduler-github-delivery.test.ts
Normal file
@@ -0,0 +1,79 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
const { checkGitHubActionsRunMock, sendScheduledMessageMock } = vi.hoisted(
|
||||
() => ({
|
||||
checkGitHubActionsRunMock: vi.fn(),
|
||||
sendScheduledMessageMock: vi.fn(async () => {}),
|
||||
}),
|
||||
);
|
||||
|
||||
vi.mock('./github-ci.js', () => ({
|
||||
checkGitHubActionsRun: checkGitHubActionsRunMock,
|
||||
computeGitHubWatcherDelayMs: vi.fn(() => 15_000),
|
||||
MAX_GITHUB_CONSECUTIVE_ERRORS: 5,
|
||||
parseGitHubCiMetadata: vi.fn((raw: string | null | undefined) =>
|
||||
raw ? JSON.parse(raw) : null,
|
||||
),
|
||||
serializeGitHubCiMetadata: vi.fn((metadata: unknown) =>
|
||||
JSON.stringify(metadata),
|
||||
),
|
||||
}));
|
||||
|
||||
vi.mock('./task-scheduler-runtime.js', () => ({
|
||||
sendScheduledMessage: sendScheduledMessageMock,
|
||||
}));
|
||||
|
||||
vi.mock('./task-status-tracker.js', () => ({
|
||||
createTaskStatusTracker: () => ({
|
||||
update: vi.fn(async () => {}),
|
||||
}),
|
||||
}));
|
||||
|
||||
import { _initTestDatabase, createTask, getTaskById } from './db.js';
|
||||
import { runGithubCiTask } from './task-scheduler-github.js';
|
||||
|
||||
describe('GitHub watcher delivery identity', () => {
|
||||
beforeEach(() => {
|
||||
_initTestDatabase();
|
||||
checkGitHubActionsRunMock.mockReset();
|
||||
sendScheduledMessageMock.mockClear();
|
||||
});
|
||||
|
||||
it('passes the scheduling agent type to completion delivery', async () => {
|
||||
checkGitHubActionsRunMock.mockResolvedValueOnce({
|
||||
terminal: true,
|
||||
resultSummary: '성공: owner/repo run 765432',
|
||||
completionMessage: 'CI 완료: GitHub Actions run 765432\n판정: 성공',
|
||||
});
|
||||
createTask({
|
||||
id: 'task-github-codex-paired-complete',
|
||||
group_folder: 'paired-group',
|
||||
chat_jid: 'paired@g.us',
|
||||
agent_type: 'codex',
|
||||
room_role: 'owner',
|
||||
ci_provider: 'github',
|
||||
ci_metadata: JSON.stringify({ repo: 'owner/repo', run_id: 765432 }),
|
||||
prompt: '[BACKGROUND CI WATCH]\nGitHub Actions run 765432',
|
||||
schedule_type: 'interval',
|
||||
schedule_value: '15000',
|
||||
context_mode: 'isolated',
|
||||
next_run: new Date().toISOString(),
|
||||
status: 'active',
|
||||
created_at: '2026-02-22T00:00:00.000Z',
|
||||
});
|
||||
|
||||
const task = getTaskById('task-github-codex-paired-complete');
|
||||
expect(task).toBeDefined();
|
||||
const deps = { sendMessage: vi.fn(async () => {}) } as any;
|
||||
|
||||
await runGithubCiTask(task!, deps);
|
||||
|
||||
expect(sendScheduledMessageMock).toHaveBeenCalledWith(
|
||||
deps,
|
||||
'paired@g.us',
|
||||
'CI 완료: GitHub Actions run 765432\n판정: 성공',
|
||||
'owner',
|
||||
);
|
||||
expect(getTaskById('task-github-codex-paired-complete')).toBeUndefined();
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user