Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/__tests__/unit/api/api-chat-message.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -582,7 +582,8 @@ describe("POST /api/chat/message", () => {

expect(fetchCall).toBeTruthy();

const body = JSON.parse(fetchCall![1]!.body as string);
const _rawBody = JSON.parse(fetchCall![1]!.body as string);
const body = (_rawBody && typeof _rawBody === "object" && "project" in _rawBody) ? _rawBody.project : _rawBody;
expect(body.workflow_params.set_var.attributes.vars).toMatchObject({
alias: "testuser",
username: "testuser",
Expand Down Expand Up @@ -616,7 +617,8 @@ describe("POST /api/chat/message", () => {

const fetchCall = mockFetch.mock.calls.find((call) => call[0].toString().includes("stakwork"));

const body = JSON.parse(fetchCall![1]!.body as string);
const _rawBody = JSON.parse(fetchCall![1]!.body as string);
const body = (_rawBody && typeof _rawBody === "object" && "project" in _rawBody) ? _rawBody.project : _rawBody;
expect(body.workflow_id).toBe(parseInt(expectedWorkflowId));
});
});
Expand Down
18 changes: 12 additions & 6 deletions src/__tests__/unit/api/chat/call-stakwork.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,13 +206,15 @@ const TestHelpers = {
);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const _rawPayload = JSON.parse(fetchCall[1]?.body as string);
const payload = (_rawPayload && typeof _rawPayload === 'object' && 'project' in _rawPayload) ? _rawPayload.project : _rawPayload;
expect(payload.workflow_id).toBe(workflowId);
},

expectFetchCalledWithVarsContaining: (expectedVars: Record<string, unknown>) => {
const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const _rawPayload = JSON.parse(fetchCall[1]?.body as string);
const payload = (_rawPayload && typeof _rawPayload === 'object' && 'project' in _rawPayload) ? _rawPayload.project : _rawPayload;
const vars = payload.workflow_params.set_var.attributes.vars;

Object.entries(expectedVars).forEach(([key, value]) => {
Expand Down Expand Up @@ -500,7 +502,8 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const _rawPayload = JSON.parse(fetchCall[1]?.body as string);
const payload = (_rawPayload && typeof _rawPayload === 'object' && 'project' in _rawPayload) ? _rawPayload.project : _rawPayload;
expect(payload.webhook_url).toBe("http://localhost:3000/api/stakwork/webhook?task_id=test-task-id");
});

Expand Down Expand Up @@ -719,7 +722,8 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const _rawPayload = JSON.parse(fetchCall[1]?.body as string);
const payload = (_rawPayload && typeof _rawPayload === 'object' && 'project' in _rawPayload) ? _rawPayload.project : _rawPayload;

expect(payload).toMatchObject({
name: expect.stringMatching(/^hive-task-/),
Expand All @@ -745,7 +749,8 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const _rawPayload = JSON.parse(fetchCall[1]?.body as string);
const payload = (_rawPayload && typeof _rawPayload === 'object' && 'project' in _rawPayload) ? _rawPayload.project : _rawPayload;

expect(payload.name).toBe("hive-task-test-task-id");
});
Expand All @@ -757,7 +762,8 @@ describe("callStakwork Function Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const payload = JSON.parse(fetchCall[1]?.body as string);
const _rawPayload = JSON.parse(fetchCall[1]?.body as string);
const payload = (_rawPayload && typeof _rawPayload === 'object' && 'project' in _rawPayload) ? _rawPayload.project : _rawPayload;

expect(payload.workflow_params).toHaveProperty("set_var");
expect(payload.workflow_params.set_var).toHaveProperty("attributes");
Expand Down
21 changes: 14 additions & 7 deletions src/__tests__/unit/api/chat/message/call-stakwork.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,8 @@ describe("callStakwork Function - Chat Message Processing", () => {

// Verify context tags were passed to Stakwork API
const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.contextTags).toEqual(contextTags);
Expand Down Expand Up @@ -1027,7 +1028,8 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(101); // First ID from "101,102,103"
});
Expand All @@ -1048,7 +1050,8 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(103); // Third ID from "101,102,103"
});
Expand All @@ -1069,7 +1072,8 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(102); // Second ID from "101,102,103"
});
Expand Down Expand Up @@ -1239,7 +1243,8 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars).toMatchObject({
Expand Down Expand Up @@ -1309,7 +1314,8 @@ describe("callStakwork Function - Chat Message Processing", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.webhook_url).toBe(
`http://localhost:3000/api/stakwork/webhook?task_id=${mockTaskId}`
Expand Down Expand Up @@ -1386,7 +1392,8 @@ describe("callStakwork Function - Chat Message Processing", () => {
expect(mockS3Service.generatePresignedDownloadUrl).toHaveBeenCalledWith("uploads/file2.jpg");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.attachments).toEqual([
Expand Down
51 changes: 34 additions & 17 deletions src/__tests__/unit/api/chat/message/route.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -709,7 +709,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(101); // First workflow ID
});
Expand All @@ -728,7 +729,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(103); // Third workflow ID
});
Expand All @@ -747,7 +749,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(103); // Third workflow ID
});
Expand All @@ -766,7 +769,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(102); // Second workflow ID (default)
});
Expand All @@ -784,7 +788,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.workflow_id).toBe(102); // Second workflow ID (default)
});
Expand Down Expand Up @@ -850,7 +855,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars).toMatchObject({
Expand Down Expand Up @@ -919,7 +925,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(s3Service.generatePresignedDownloadUrl).toHaveBeenCalledWith("uploads/test/file.pdf");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.attachments).toEqual(["https://s3.test.com/presigned-url"]);
Expand Down Expand Up @@ -948,7 +955,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(vi.mocked(getBaseUrl)).toHaveBeenCalledWith();

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.webhookUrl).toBe("https://production.example.com/api/chat/response");
Expand All @@ -969,7 +977,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.webhookUrl).toBe("https://custom-webhook.example.com");
Expand All @@ -990,7 +999,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;

expect(requestBody.webhook_url).toBe(`http://localhost:3000/api/stakwork/webhook?task_id=${mockTaskId}`);
});
Expand All @@ -1012,7 +1022,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(vi.mocked(transformSwarmUrlToRepo2Graph)).toHaveBeenCalledWith("https://test-swarm.com/api");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.repo2graph_url).toBe("https://custom-graph.com:3355");
Expand Down Expand Up @@ -1404,7 +1415,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.runBuild).toBe(false);
Expand All @@ -1427,7 +1439,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.runTestSuite).toBe(false);
Expand All @@ -1450,7 +1463,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.autoMergePr).toBe(true);
Expand All @@ -1473,7 +1487,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
await POST(request);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.runBuild).toBe(false);
Expand Down Expand Up @@ -1557,7 +1572,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
]);

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.contextTags).toEqual([
Expand Down Expand Up @@ -1679,7 +1695,8 @@ describe("POST /api/chat/message - callStakwork Unit Tests", () => {
expect(s3Service.generatePresignedDownloadUrl).toHaveBeenCalledWith("uploads/file2.jpg");

const fetchCall = mockFetch.mock.calls[0];
const requestBody = JSON.parse(fetchCall[1].body as string);
const _rawRequestBody = JSON.parse(fetchCall[1].body as string);
const requestBody = (_rawRequestBody && typeof _rawRequestBody === 'object' && 'project' in _rawRequestBody) ? _rawRequestBody.project : _rawRequestBody;
const vars = requestBody.workflow_params.set_var.attributes.vars;

expect(vars.attachments).toEqual(["https://s3.test.com/file1.pdf", "https://s3.test.com/file2.jpg"]);
Expand Down
Loading
Loading