1
import { makeAPICall, pruneDatabase } from "@/src/__tests__/test-utils";
2
import { v4 as uuidv4 } from "uuid";
4
describe("/api/public/metrics/daily API Endpoint", () => {
5
beforeEach(async () => await pruneDatabase());
6
afterEach(async () => await pruneDatabase());
8
it("should handle daily metrics correctly", async () => {
12
const traceId1 = uuidv4();
13
const traceId2 = uuidv4();
14
await makeAPICall("POST", "/api/public/traces", {
16
timestamp: "2021-01-01T00:00:00.000Z",
18
userId: "user-daily-metrics",
19
projectId: "project-daily-metrics",
21
await makeAPICall("POST", "/api/public/traces", {
23
timestamp: "2021-01-02T00:00:00.000Z",
25
userId: "user-daily-metrics",
26
projectId: "project-daily-metrics",
30
await makeAPICall("POST", "/api/public/generations", {
33
usage: { input: 100, output: 200, total: 300 },
34
startTime: "2021-01-01T00:00:00.000Z",
35
endTime: "2021-01-01T00:01:00.000Z",
37
await makeAPICall("POST", "/api/public/generations", {
40
usage: { input: 333 },
41
startTime: "2021-01-02T00:00:00.000Z",
42
endTime: "2021-01-02T00:02:00.000Z",
44
await makeAPICall("POST", "/api/public/generations", {
47
usage: { input: 666, output: 777, totalCost: 1024.22 },
48
startTime: "2021-01-02T00:00:00.000Z",
49
endTime: "2021-01-02T00:04:00.000Z",
53
const dailyMetricsResponse = await makeAPICall<{
54
data: Array<Record<string, unknown>>;
55
}>("GET", `/api/public/metrics/daily`);
56
const dailyMetricsData = dailyMetricsResponse.body.data;
59
expect(dailyMetricsData).toHaveLength(2);
60
if (!dailyMetricsData[0])
61
throw new Error("dailyMetricsData[0] is undefined");
62
expect(dailyMetricsData[0].date).toBe("2021-01-02");
63
expect(dailyMetricsData[0].countTraces).toBe(1);
64
expect(dailyMetricsData[0].totalCost).toEqual(1024.22);
65
expect(dailyMetricsData[0].usage).toEqual([
80
if (!dailyMetricsData[1])
81
throw new Error("dailyMetricsData[1] is undefined");
82
expect(dailyMetricsData[1].date).toBe("2021-01-01");
83
expect(dailyMetricsData[1].countTraces).toBe(1);
84
expect(dailyMetricsData[1].totalCost).toEqual(0);
85
expect(dailyMetricsData[1].usage).toEqual([