fix: keep review requests pending without owner workspace
This commit is contained in:
@@ -124,17 +124,74 @@ describe('paired /review command path', () => {
|
||||
'owner',
|
||||
);
|
||||
|
||||
expect(result).not.toBeNull();
|
||||
expect(result!.ownerWorkspace.workspace_dir).toBe(ownerWorkspaceDir);
|
||||
expect(result!.reviewerWorkspace.snapshot_source_dir).toBe(
|
||||
expect(result?.status).toBe('ready');
|
||||
if (result?.status !== 'ready') {
|
||||
throw new Error('expected ready review result');
|
||||
}
|
||||
expect(result.ownerWorkspace.workspace_dir).toBe(ownerWorkspaceDir);
|
||||
expect(result.reviewerWorkspace.snapshot_source_dir).toBe(
|
||||
ownerWorkspaceDir,
|
||||
);
|
||||
expect(
|
||||
fs.readFileSync(
|
||||
path.join(result!.reviewerWorkspace.workspace_dir, 'README.md'),
|
||||
path.join(result.reviewerWorkspace.workspace_dir, 'README.md'),
|
||||
'utf-8',
|
||||
),
|
||||
).toBe('owner change\n');
|
||||
expect(fs.existsSync(reviewerLocalOwnerDir)).toBe(false);
|
||||
});
|
||||
|
||||
it('returns pending and keeps review_pending when reviewer handles /review before any owner workspace exists', async () => {
|
||||
const canonicalDir = path.join(tempRoot, 'canonical');
|
||||
fs.mkdirSync(canonicalDir, { recursive: true });
|
||||
runGit(['init'], canonicalDir);
|
||||
runGit(['config', 'user.email', 'test@example.com'], canonicalDir);
|
||||
runGit(['config', 'user.name', 'EJClaw Test'], canonicalDir);
|
||||
fs.writeFileSync(path.join(canonicalDir, 'README.md'), 'original\n');
|
||||
runGit(['add', 'README.md'], canonicalDir);
|
||||
runGit(['commit', '-m', 'initial'], canonicalDir);
|
||||
|
||||
const group: RegisteredGroup = {
|
||||
name: 'Paired Room',
|
||||
folder: 'paired-room',
|
||||
trigger: '@codex',
|
||||
added_at: '2026-03-28T00:00:00.000Z',
|
||||
agentType: 'codex',
|
||||
workDir: canonicalDir,
|
||||
};
|
||||
|
||||
process.env.EJCLAW_DATA_DIR = path.join(tempRoot, 'data-review');
|
||||
process.env.SERVICE_ID = 'codex-review';
|
||||
vi.resetModules();
|
||||
const { db, executionContext } = await loadModules();
|
||||
db.initDatabase();
|
||||
|
||||
const result = executionContext.markRoomReviewReady({
|
||||
group,
|
||||
chatJid: 'dc:test',
|
||||
roomRoleContext: reviewerContext,
|
||||
});
|
||||
|
||||
const reviewerLocalOwnerDir = path.join(
|
||||
tempRoot,
|
||||
'data-review',
|
||||
'workspaces',
|
||||
'paired-room',
|
||||
'tasks',
|
||||
result?.task.id ?? 'missing-task',
|
||||
'owner',
|
||||
);
|
||||
|
||||
expect(result).toEqual(
|
||||
expect.objectContaining({
|
||||
status: 'pending',
|
||||
pendingReason: 'owner-workspace-not-ready',
|
||||
task: expect.objectContaining({
|
||||
status: 'review_pending',
|
||||
}),
|
||||
}),
|
||||
);
|
||||
expect(result?.task.review_requested_at).toBeTruthy();
|
||||
expect(fs.existsSync(reviewerLocalOwnerDir)).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user