Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
e914b2b
Generated with Hive: Add mock Stakwork prompt_daily_runs endpoint for…
gonzaloaune Jul 4, 2026
e1e7be3
Merge remote-tracking branch 'origin/master' into feature/CMR6AKBGL-a…
gonzaloaune Jul 4, 2026
8eb7c26
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 4, 2026
9c362da
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 4, 2026
a54b46a
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 4, 2026
18d80a2
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 4, 2026
51d178d
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 4, 2026
1f28026
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
b1bef94
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
dc16a3f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
2e81e52
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
d0814bb
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
fe41ec2
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
4131b34
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
aae528b
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
a6c79fe
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
9a60ce8
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
358d41a
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
955da57
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 5, 2026
c759672
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
efb0b5f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
db0502e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
106d234
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
b454269
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
1c2880e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
7003b43
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
8b158d9
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
e68c88a
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
c07042e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
c7058a8
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
cca302b
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
fb45661
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
f82c673
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
3360dd5
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
9e56471
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
68ba71e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
54e8624
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 6, 2026
a931f61
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
681de14
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
7f0c907
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
e34c64f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
fbf610d
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
28fd6fb
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
70d39ab
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
04af4e4
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
1782e83
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
b39f667
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 7, 2026
76f6225
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
24c2ddd
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
095bfc6
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
8e4dd2b
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
b90a4f0
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
25afe00
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
38aacdb
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 8, 2026
81e179e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
543445d
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
cdca178
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
151411e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
7ebe50c
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
c4331b6
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
211855b
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
5250482
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 9, 2026
e35a5a8
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 10, 2026
c86df88
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 10, 2026
701737c
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 10, 2026
1cd317e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 10, 2026
2c5bac8
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 10, 2026
0e01fd8
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 10, 2026
747ada0
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 11, 2026
e3f84c3
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 11, 2026
39e57a0
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 11, 2026
78a865c
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 12, 2026
e9206bb
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 12, 2026
fecea67
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 12, 2026
c10bac6
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 12, 2026
f19d6db
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
4875462
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
c4c1db7
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
d3ce3c2
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
19b2830
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
de4ff0d
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
6766d33
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 13, 2026
7f09e70
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 14, 2026
b9f13e0
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 14, 2026
b828c6a
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 14, 2026
da76b74
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 14, 2026
5de72a1
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 15, 2026
4e9b085
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 15, 2026
65e267d
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 15, 2026
8901b83
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 15, 2026
ba5065d
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 15, 2026
4c5cdfb
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
c8d62e3
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
e47a281
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
5d6ff63
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
935989e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
6e3d382
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
a00a599
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
236763e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
6901755
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 16, 2026
732d098
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 17, 2026
8f66b04
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 17, 2026
58d263c
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 17, 2026
176cd6f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 17, 2026
36b964b
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 17, 2026
80db391
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 18, 2026
64483e8
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 18, 2026
a36e9d0
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 18, 2026
b300b99
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 18, 2026
6fcfa3f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 18, 2026
5a650f5
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 19, 2026
b88fc54
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
f97f661
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
81bae5c
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
af720a7
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
4ae812e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
5e06e87
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
d54e75f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 20, 2026
fe28f18
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 21, 2026
c9db2f7
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 21, 2026
1459cff
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 21, 2026
0a36d3f
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 21, 2026
38a8149
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 21, 2026
bd2bc4a
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 21, 2026
36c9edd
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 22, 2026
9126c17
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 22, 2026
98a540b
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 22, 2026
f296400
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 22, 2026
b671594
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 23, 2026
78eb37e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 23, 2026
ca31f4e
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 23, 2026
290a0fe
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 23, 2026
700ad6a
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 23, 2026
248c719
Merge branch 'master' into feature/CMR6AKBGL-add-mock-stakwork-prompt…
tomsmith8 Jul 23, 2026
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
138 changes: 138 additions & 0 deletions src/__tests__/integration/api/mock/stakwork-prompt-daily-runs.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
import { describe, test, expect, beforeEach } from "vitest";
import { NextRequest } from "next/server";
import { GET } from "@/app/api/mock/stakwork/prompt_daily_runs/route";
import { mockPromptDailyRunsStore } from "@/app/api/mock/stakwork/prompt_daily_runs/store";

function makeRequest(params: Record<string, string> = {}): NextRequest {
const url = new URL("http://localhost/api/mock/stakwork/prompt_daily_runs");
for (const [key, value] of Object.entries(params)) {
url.searchParams.set(key, value);
}
return new NextRequest(url.toString());
}

describe("GET /api/mock/stakwork/prompt_daily_runs", () => {
describe("response envelope shape", () => {
test("returns correct envelope with success, total, size, prompt_daily_runs", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-15" }));
expect(res.status).toBe(200);

const body = await res.json();
expect(body.success).toBe(true);
expect(body.data).toBeDefined();
expect(typeof body.data.total).toBe("number");
expect(typeof body.data.size).toBe("number");
expect(Array.isArray(body.data.prompt_daily_runs)).toBe(true);
});

test("each row has all required fields", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-15" }));
const { data } = await res.json();

for (const row of data.prompt_daily_runs) {
expect(row).toHaveProperty("id");
expect(row).toHaveProperty("prompt_id");
expect(row).toHaveProperty("prompt_version_id");
expect(row).toHaveProperty("workflow_id");
expect(row).toHaveProperty("customer_id");
expect(row).toHaveProperty("run_date");
expect(row).toHaveProperty("run_count");
expect(row).toHaveProperty("hive_version_id");
expect(row).toHaveProperty("created_at");
expect(row).toHaveProperty("updated_at");
}
});
});

describe("filtering by run_date", () => {
test("returns only rows matching run_date", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-15" }));
const { data } = await res.json();

expect(data.prompt_daily_runs.length).toBeGreaterThan(0);
for (const row of data.prompt_daily_runs) {
expect(row.run_date).toBe("2024-01-15");
}
});

test("returns different rows for a different run_date", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-16" }));
const { data } = await res.json();

expect(data.prompt_daily_runs.length).toBeGreaterThan(0);
for (const row of data.prompt_daily_runs) {
expect(row.run_date).toBe("2024-01-16");
}
});

test("returns empty prompt_daily_runs for a date with no rows", async () => {
const res = await GET(makeRequest({ run_date: "1999-01-01" }));
const { data } = await res.json();

expect(data.total).toBe(0);
expect(data.size).toBe(0);
expect(data.prompt_daily_runs).toHaveLength(0);
});

test("total reflects filtered count, not store total", async () => {
const allRows = mockPromptDailyRunsStore.filter((r) => r.run_date === "2024-01-15");
const res = await GET(makeRequest({ run_date: "2024-01-15" }));
const { data } = await res.json();

expect(data.total).toBe(allRows.length);
});
});

describe("pagination", () => {
test("page=1 returns first slice", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-15", page: "1" }));
const { data } = await res.json();
expect(data.size).toBe(data.prompt_daily_runs.length);
});

test("page beyond available rows returns empty prompt_daily_runs", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-15", page: "9999" }));
const { data } = await res.json();
expect(data.size).toBe(0);
expect(data.prompt_daily_runs).toHaveLength(0);
});

test("size equals the number of items in prompt_daily_runs", async () => {
const res = await GET(makeRequest({ run_date: "2024-01-15" }));
const { data } = await res.json();
expect(data.size).toBe(data.prompt_daily_runs.length);
});

test("no page param defaults to page 1", async () => {
const resPage1 = await GET(makeRequest({ run_date: "2024-01-15", page: "1" }));
const resDefault = await GET(makeRequest({ run_date: "2024-01-15" }));

const page1Data = (await resPage1.json()).data;
const defaultData = (await resDefault.json()).data;

expect(defaultData.prompt_daily_runs).toEqual(page1Data.prompt_daily_runs);
});
});

describe("store contains unresolvable hive_version_id row", () => {
test("store has at least one row with hive_version_id=unresolvable-version-id for negative testing", () => {
const unresolvable = mockPromptDailyRunsStore.find(
(r) => r.hive_version_id === "unresolvable-version-id"
);
expect(unresolvable).toBeDefined();
});

test("unresolvable row is still returned by the mock (sync service handles skipping)", async () => {
const unresolvableRow = mockPromptDailyRunsStore.find(
(r) => r.hive_version_id === "unresolvable-version-id"
)!;
const res = await GET(makeRequest({ run_date: unresolvableRow.run_date }));
const { data } = await res.json();

const found = data.prompt_daily_runs.find(
(r: { hive_version_id: string }) => r.hive_version_id === "unresolvable-version-id"
);
expect(found).toBeDefined();
});
});
});
35 changes: 35 additions & 0 deletions src/app/api/mock/stakwork/prompt_daily_runs/route.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { NextRequest, NextResponse } from "next/server";
import { mockPromptDailyRunsStore } from "./store";
export type { MockPromptDailyRunEntry } from "./store";

const PAGE_SIZE = 20;

// ── GET /api/mock/stakwork/prompt_daily_runs ───────────────────────────────────
// Query params:
// run_date — YYYY-MM-DD to filter by (required in production; defaults to today in mock)
// page — 1-based page number (default: 1)
//
// Response envelope (matches real Stakwork contract):
// { success: true, data: { total, size, prompt_daily_runs: [...] } }
export async function GET(request: NextRequest) {
const { searchParams } = new URL(request.url);
const runDate = searchParams.get("run_date") ?? "";
const page = Math.max(1, parseInt(searchParams.get("page") || "1", 10));

const filtered = runDate
? mockPromptDailyRunsStore.filter((row) => row.run_date === runDate)
: mockPromptDailyRunsStore;

const total = filtered.length;
const start = (page - 1) * PAGE_SIZE;
const pageItems = filtered.slice(start, start + PAGE_SIZE);

return NextResponse.json({
success: true,
data: {
total,
size: pageItems.length,
prompt_daily_runs: pageItems,
},
});
}
66 changes: 66 additions & 0 deletions src/app/api/mock/stakwork/prompt_daily_runs/store.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
export interface MockPromptDailyRunEntry {
id: number;
prompt_id: number;
prompt_version_id: number;
workflow_id: number;
customer_id: number;
run_date: string; // YYYY-MM-DD
run_count: number;
hive_version_id: string;
created_at: string;
updated_at: string;
}

// In-memory store — all rows must have hive_version_id set.
// Seeded with sample rows: some matching known PromptVersion ids, one unresolvable.
export const mockPromptDailyRunsStore: MockPromptDailyRunEntry[] = [
{
id: 1,
prompt_id: 1,
prompt_version_id: 10,
workflow_id: 101,
customer_id: 1001,
run_date: "2024-01-15",
run_count: 42,
hive_version_id: "mock-version-id-1",
created_at: "2024-01-16T02:00:00Z",
updated_at: "2024-01-16T02:00:00Z",
},
{
id: 2,
prompt_id: 2,
prompt_version_id: 20,
workflow_id: 201,
customer_id: 1001,
run_date: "2024-01-15",
run_count: 17,
hive_version_id: "mock-version-id-2",
created_at: "2024-01-16T02:00:00Z",
updated_at: "2024-01-16T02:00:00Z",
},
{
// Unresolvable hive_version_id — for negative-path testing
id: 3,
prompt_id: 99,
prompt_version_id: 990,
workflow_id: 999,
customer_id: 9999,
run_date: "2024-01-15",
run_count: 5,
hive_version_id: "unresolvable-version-id",
created_at: "2024-01-16T02:00:00Z",
updated_at: "2024-01-16T02:00:00Z",
},
{
id: 4,
prompt_id: 1,
prompt_version_id: 10,
workflow_id: 101,
customer_id: 1001,
run_date: "2024-01-16",
run_count: 55,
hive_version_id: "mock-version-id-1",
created_at: "2024-01-17T02:00:00Z",
updated_at: "2024-01-17T02:00:00Z",
},
];
Loading