mirror of
https://github.com/MBombeck/HealthLog.git
synced 2026-11-08 12:32:43 +00:00
test: bring fixtures in line with the nap rule and the recovery read
Correlation fixtures wrote minute-long midday sleeps, which the nap rule now reads as naps; they write nights. The analytics test mocks the user read the empty recovery reason makes, and the control-byte guard asserts the size of its sweep.
This commit is contained in:
1 parent
c2133203fb
commit
40cf10ba20
5 files changed
+15
-5
No files matched your search
@@ -35,6 +35,8 @@ import { describe, it, expect, vi, beforeEach } from "vitest";
|
||||
vi.mock("@/lib/db", () => ({
|
||||
prisma: {
|
||||
measurement: { findMany: vi.fn() },
|
||||
// The empty recovery page reads the Oura fields for its reason.
|
||||
user: { findUnique: vi.fn().mockResolvedValue(null) },
|
||||
},
|
||||
}));
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@ describe("source files carry no raw control bytes", () => {
|
||||
floor: 3000,
|
||||
extensions: [".ts", ".tsx", ".js", ".mjs", ".css", ".json", ".md"],
|
||||
}).filter((file) => !file.startsWith("generated/"));
|
||||
// A sweep that read nothing would agree with any tree.
|
||||
expect(files.length).toBeGreaterThan(3000);
|
||||
const offenders: string[] = [];
|
||||
for (const file of files) {
|
||||
const lines = readFileSync(join(src, file), "utf8").split("\n");
|
||||
|
||||
@@ -250,8 +250,9 @@ describe("readCoachCorrelations", () => {
|
||||
// Next-day sleep falls as today's burden rises (8h baseline − burden).
|
||||
measurements.push({
|
||||
type: "SLEEP_DURATION",
|
||||
value: 8 - burden,
|
||||
measuredAt: new Date(base + (i + 1) * 86_400_000),
|
||||
// A night of hours waking at 07:00, not a midday minute-long nap.
|
||||
value: (8 - burden) * 60,
|
||||
measuredAt: new Date(base + (i + 1) * 86_400_000 - 5 * 3_600_000),
|
||||
});
|
||||
}
|
||||
|
||||
@@ -346,8 +347,9 @@ describe("readCoachCorrelations", () => {
|
||||
// Higher pressure today → shorter sleep tomorrow (a clean negative r).
|
||||
measurements.push({
|
||||
type: "SLEEP_DURATION",
|
||||
value: 8 - swing * 0.5,
|
||||
measuredAt: new Date(base + (i + 1) * 86_400_000),
|
||||
// A night of hours waking at 07:00, not a midday minute-long nap.
|
||||
value: (8 - swing * 0.5) * 60,
|
||||
measuredAt: new Date(base + (i + 1) * 86_400_000 - 5 * 3_600_000),
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,10 @@ describe("stripImageMetadata — passthrough", () => {
|
||||
describe("stripImageMetadata — JPEG", () => {
|
||||
// SOI + APP0(JFIF) + APP1(Exif w/ GPS) + APP2(ICC) + COM + DQT + SOS + scan.
|
||||
const soi = Buffer.from([0xff, 0xd8]);
|
||||
const app0 = jpegSegment(0xe0, Buffer.from("JFIF\0\x01\x01\0\0\x01\0\x01\0\0"));
|
||||
const app0 = jpegSegment(
|
||||
0xe0,
|
||||
Buffer.from("JFIF\0\x01\x01\0\0\x01\0\x01\0\0"),
|
||||
);
|
||||
const exifPayload = Buffer.concat([
|
||||
Buffer.from("Exif\0\0"),
|
||||
// A recognisable GPS marker string we can assert is gone.
|
||||
|
||||
@@ -76,6 +76,7 @@ const sleepScore: SleepScoreValue = {
|
||||
],
|
||||
windowNights: 20,
|
||||
rhythmNights: 20,
|
||||
rhythmMinNights: 3,
|
||||
series: [78, 82],
|
||||
};
|
||||
|
||||
|
||||
Reference in new issue
Block a user