refactor: restore pre-v1 runtime follow-up flow
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { describe, it, expect, beforeEach, vi, afterEach } from 'vitest';
|
||||
import fs from 'fs';
|
||||
|
||||
import { GroupQueue } from './group-queue.js';
|
||||
|
||||
@@ -62,6 +63,32 @@ describe('GroupQueue', () => {
|
||||
expect(maxConcurrent).toBe(1);
|
||||
});
|
||||
|
||||
it('pipes follow-up messages to an active non-task process', async () => {
|
||||
let releaseRun!: (value: boolean) => void;
|
||||
const blocker = new Promise<boolean>((resolve) => {
|
||||
releaseRun = resolve;
|
||||
});
|
||||
|
||||
const processMessages = vi.fn(
|
||||
async () => await blocker,
|
||||
);
|
||||
|
||||
queue.setProcessMessagesFn(processMessages);
|
||||
queue.enqueueMessageCheck('group1@g.us', 'group-folder');
|
||||
await vi.advanceTimersByTimeAsync(10);
|
||||
|
||||
expect(queue.sendMessage('group1@g.us', '후속 메시지')).toBe(true);
|
||||
expect(fs.mkdirSync).toHaveBeenCalledWith(
|
||||
'/tmp/ejclaw-test-data/ipc/group-folder/input',
|
||||
{ recursive: true },
|
||||
);
|
||||
expect(fs.writeFileSync).toHaveBeenCalled();
|
||||
expect(fs.renameSync).toHaveBeenCalled();
|
||||
|
||||
releaseRun(true);
|
||||
await vi.advanceTimersByTimeAsync(10);
|
||||
});
|
||||
|
||||
// --- Global concurrency limit ---
|
||||
|
||||
it('respects global concurrency limit', async () => {
|
||||
|
||||
Reference in New Issue
Block a user