fix(FN-5188): complete Step 5 — restore green verification
Fusion-Task-Id: FN-5188 Fusion-Task-Lineage: 6d238ff1-2d69-44e7-8694-ec19e412f8ef
This commit is contained in:
committed by
gsxdsm
parent
9c59f1da0d
commit
7fe6cd362a
@@ -306,8 +306,15 @@ const mockListen = vi.fn((port: number) => {
|
|||||||
|
|
||||||
vi.mock("@fusion/dashboard", () => ({
|
vi.mock("@fusion/dashboard", () => ({
|
||||||
createServer: vi.fn((_store: unknown, opts: Record<string, any> = {}) => {
|
createServer: vi.fn((_store: unknown, opts: Record<string, any> = {}) => {
|
||||||
if (opts.engine && !opts.onMerge) {
|
if (!opts.onMerge) {
|
||||||
opts.onMerge = (taskId: string) => opts.engine.onMerge(taskId);
|
if (opts.engine) {
|
||||||
|
opts.onMerge = (taskId: string) => opts.engine.onMerge(taskId);
|
||||||
|
} else if (opts.engineManager?.ensureEngine) {
|
||||||
|
opts.onMerge = async (taskId: string) => {
|
||||||
|
const engine = await opts.engineManager.ensureEngine("project-1");
|
||||||
|
return engine?.onMerge(taskId);
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
opts.onProjectFirstAccessed?.("project-1");
|
opts.onProjectFirstAccessed?.("project-1");
|
||||||
return { listen: mockListen };
|
return { listen: mockListen };
|
||||||
@@ -1249,7 +1256,9 @@ describe("runDashboard — WorktreePool wiring", () => {
|
|||||||
|
|
||||||
await managerInstance.getEngine("project-1").onMerge("FN-TEST");
|
await managerInstance.getEngine("project-1").onMerge("FN-TEST");
|
||||||
|
|
||||||
expect(aiMergeTask).toHaveBeenCalled();
|
await waitForAsyncExpectation(() => {
|
||||||
|
expect(aiMergeTask).toHaveBeenCalled();
|
||||||
|
});
|
||||||
const mergeCallOpts = (aiMergeTask as ReturnType<typeof vi.fn>).mock.calls[0][3];
|
const mergeCallOpts = (aiMergeTask as ReturnType<typeof vi.fn>).mock.calls[0][3];
|
||||||
expect(mergeCallOpts.pool).toBeInstanceOf(WorktreePool);
|
expect(mergeCallOpts.pool).toBeInstanceOf(WorktreePool);
|
||||||
});
|
});
|
||||||
@@ -1267,6 +1276,11 @@ describe("runDashboard — WorktreePool wiring", () => {
|
|||||||
|
|
||||||
await managerInstance.getEngine("project-1").onMerge("FN-TEST");
|
await managerInstance.getEngine("project-1").onMerge("FN-TEST");
|
||||||
|
|
||||||
|
await waitForAsyncExpectation(() => {
|
||||||
|
expect(capturedExecutorOpts).toBeDefined();
|
||||||
|
expect((aiMergeTask as ReturnType<typeof vi.fn>).mock.calls[0]?.[3]?.pool).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
const executorPool = capturedExecutorOpts!.pool;
|
const executorPool = capturedExecutorOpts!.pool;
|
||||||
const mergerPool = (aiMergeTask as ReturnType<typeof vi.fn>).mock.calls[0][3].pool;
|
const mergerPool = (aiMergeTask as ReturnType<typeof vi.fn>).mock.calls[0][3].pool;
|
||||||
|
|
||||||
@@ -2524,7 +2538,7 @@ describe("runDashboard — PR feedback follow-up wiring", () => {
|
|||||||
await capturedOnClosedPrFeedback("FN-001", mockPrInfo, mockComments);
|
await capturedOnClosedPrFeedback("FN-001", mockPrInfo, mockComments);
|
||||||
|
|
||||||
// The PrCommentHandler mock should have been called
|
// The PrCommentHandler mock should have been called
|
||||||
const handlerInstance = (PrCommentHandler as unknown as ReturnType<typeof vi.fn>).mock.results[0].value;
|
const handlerInstance = (PrCommentHandler as unknown as ReturnType<typeof vi.fn>).mock.results.at(-1)?.value;
|
||||||
expect(handlerInstance.createFollowUpTask).toHaveBeenCalledWith("FN-001", mockPrInfo, mockComments);
|
expect(handlerInstance.createFollowUpTask).toHaveBeenCalledWith("FN-001", mockPrInfo, mockComments);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ describe("Database", () => {
|
|||||||
expect(bootstrappedAt).toBeGreaterThan(0);
|
expect(bootstrappedAt).toBeGreaterThan(0);
|
||||||
expect(bootstrappedAt).toBeLessThanOrEqual(Date.now());
|
expect(bootstrappedAt).toBeLessThanOrEqual(Date.now());
|
||||||
|
|
||||||
const reopened = new Database(tempDir);
|
const reopened = new Database(fusionDir);
|
||||||
reopened.init();
|
reopened.init();
|
||||||
try {
|
try {
|
||||||
expect(reopened.getBootstrappedAt()).toBe(bootstrappedAt);
|
expect(reopened.getBootstrappedAt()).toBe(bootstrappedAt);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ function createStore(): TaskStore & EventEmitter {
|
|||||||
(emitter as any).moveTask = vi.fn().mockResolvedValue(undefined);
|
(emitter as any).moveTask = vi.fn().mockResolvedValue(undefined);
|
||||||
(emitter as any).logEntry = vi.fn().mockResolvedValue(undefined);
|
(emitter as any).logEntry = vi.fn().mockResolvedValue(undefined);
|
||||||
(emitter as any).recordRunAuditEvent = vi.fn().mockResolvedValue(undefined);
|
(emitter as any).recordRunAuditEvent = vi.fn().mockResolvedValue(undefined);
|
||||||
|
(emitter as any).getBootstrappedAt = vi.fn(() => null);
|
||||||
(emitter as any).createTask = vi.fn();
|
(emitter as any).createTask = vi.fn();
|
||||||
(emitter as any).clearStaleExecutionStartBranchReferences = vi.fn().mockReturnValue([]);
|
(emitter as any).clearStaleExecutionStartBranchReferences = vi.fn().mockReturnValue([]);
|
||||||
return emitter;
|
return emitter;
|
||||||
|
|||||||
@@ -159,6 +159,7 @@ function createMockStore(overrides: Record<string, unknown> = {}): TaskStore & E
|
|||||||
listTasks: vi.fn().mockResolvedValue([]),
|
listTasks: vi.fn().mockResolvedValue([]),
|
||||||
createTask: vi.fn().mockResolvedValue({ id: "FN-RESCUE", lineageId: "lin-rescue" }),
|
createTask: vi.fn().mockResolvedValue({ id: "FN-RESCUE", lineageId: "lin-rescue" }),
|
||||||
recordRunAuditEvent: vi.fn().mockResolvedValue(undefined),
|
recordRunAuditEvent: vi.fn().mockResolvedValue(undefined),
|
||||||
|
getBootstrappedAt: vi.fn().mockReturnValue(null),
|
||||||
getRootDir: vi.fn().mockReturnValue("/tmp/test-project"),
|
getRootDir: vi.fn().mockReturnValue("/tmp/test-project"),
|
||||||
clearStaleExecutionStartBranchReferences: vi.fn().mockReturnValue([]),
|
clearStaleExecutionStartBranchReferences: vi.fn().mockReturnValue([]),
|
||||||
...overrides,
|
...overrides,
|
||||||
|
|||||||
Reference in New Issue
Block a user