fix: harden heartbeat and adapter runtime workflows

This commit is contained in:
Dotta 2026-04-10 22:26:21 -05:00
parent 548721248e
commit c566a9236c
48 changed files with 14922 additions and 600 deletions

View file

@ -1,8 +1,6 @@
import express from "express";
import request from "supertest";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { approvalRoutes } from "../routes/approvals.js";
import { errorHandler } from "../middleware/index.js";
const mockApprovalService = vi.hoisted(() => ({
list: vi.fn(),
@ -39,7 +37,11 @@ vi.mock("../services/index.js", () => ({
secretService: () => mockSecretService,
}));
function createApp(actorOverrides: Record<string, unknown> = {}) {
async function createApp(actorOverrides: Record<string, unknown> = {}) {
const [{ approvalRoutes }, { errorHandler }] = await Promise.all([
import("../routes/approvals.js"),
import("../middleware/index.js"),
]);
const app = express();
app.use(express.json());
app.use((req, _res, next) => {
@ -58,7 +60,11 @@ function createApp(actorOverrides: Record<string, unknown> = {}) {
return app;
}
function createAgentApp() {
async function createAgentApp() {
const [{ approvalRoutes }, { errorHandler }] = await Promise.all([
import("../routes/approvals.js"),
import("../middleware/index.js"),
]);
const app = express();
app.use(express.json());
app.use((req, _res, next) => {
@ -78,7 +84,8 @@ function createAgentApp() {
describe("approval routes idempotent retries", () => {
beforeEach(() => {
vi.clearAllMocks();
vi.resetModules();
vi.resetAllMocks();
mockHeartbeatService.wakeup.mockResolvedValue({ id: "wake-1" });
mockIssueApprovalService.listIssuesForApproval.mockResolvedValue([{ id: "issue-1" }]);
mockLogActivity.mockResolvedValue(undefined);
@ -105,7 +112,7 @@ describe("approval routes idempotent retries", () => {
applied: false,
});
const res = await request(createApp())
const res = await request(await createApp())
.post("/api/approvals/approval-1/approve")
.send({});
@ -134,7 +141,7 @@ describe("approval routes idempotent retries", () => {
applied: false,
});
const res = await request(createApp())
const res = await request(await createApp())
.post("/api/approvals/approval-1/reject")
.send({});
@ -151,7 +158,7 @@ describe("approval routes idempotent retries", () => {
payload: {},
});
const res = await request(createApp())
const res = await request(await createApp())
.post("/api/approvals/approval-2/approve")
.send({});
@ -168,7 +175,7 @@ describe("approval routes idempotent retries", () => {
payload: {},
});
const res = await request(createApp())
const res = await request(await createApp())
.post("/api/approvals/approval-3/request-revision")
.send({ decisionNote: "Need changes" });
@ -192,7 +199,7 @@ describe("approval routes idempotent retries", () => {
updatedAt: new Date("2026-04-06T00:00:00.000Z"),
});
const res = await request(createAgentApp())
const res = await request(await createAgentApp())
.post("/api/companies/company-1/approvals")
.send({
type: "request_board_approval",