Files
AgentCompany/tests/unit/office-sky.test.ts
T
ZacharyZhang-NY 07d0b4587d Promote AgentCompany-New to the repository root and retire the old app
The legacy application - its src, tests, landing site, promo assets, docs,
release tooling, CI workflows, and root configs - leaves the tree; it stays
reachable in history. Everything under AgentCompany-New moves up unchanged:
same package name, so the production userData/database path is untouched,
and e2e/build scripts already resolved paths relative to the project. The
developer cred.txt stays gitignored at its new location. Full verify:ci
passes from the new root.
2026-07-07 00:04:13 -04:00

54 lines
1.9 KiB
TypeScript

import { describe, expect, test } from "vitest";
import { phaseAt, skyScene } from "../../src/renderer/src/pages/office/sky";
function at(hours: number, minutes: number): Date {
return new Date(2026, 6, 6, hours, minutes, 0);
}
describe("office window sky", () => {
test("maps local time to the four phases", () => {
expect(phaseAt(at(3, 0))).toBe("night");
expect(phaseAt(at(6, 30))).toBe("dawn");
expect(phaseAt(at(12, 0))).toBe("day");
expect(phaseAt(at(18, 30))).toBe("dusk");
expect(phaseAt(at(22, 0))).toBe("night");
});
test("the sun crosses the sky through the day and hands over to the moon", () => {
const morning = skyScene(at(8, 0));
const noon = skyScene(at(13, 0));
const evening = skyScene(at(18, 0));
const night = skyScene(at(23, 0));
expect(morning.sun).not.toBeNull();
expect(noon.sun!.elevation).toBeGreaterThan(morning.sun!.elevation);
expect(evening.sun!.x).toBeGreaterThan(morning.sun!.x);
expect(morning.moon).toBeNull();
expect(night.sun).toBeNull();
expect(night.moon).not.toBeNull();
});
test("stars and city lights belong to the night, not midday", () => {
const night = skyScene(at(1, 30));
const noon = skyScene(at(13, 0));
expect(night.starIntensity).toBe(1);
expect(night.cityLights).toBe(true);
expect(noon.starIntensity).toBe(0);
expect(noon.cityLights).toBe(false);
});
test("dawn blends smoothly instead of snapping palettes", () => {
const early = skyScene(at(5, 45));
const later = skyScene(at(6, 15));
expect(early.top).not.toEqual(later.top);
const delta = Math.abs(early.bottom.r - later.bottom.r);
expect(delta).toBeGreaterThan(0);
expect(delta).toBeLessThan(120);
});
test("sunrise and sunset windows glow with city lights while the sun is low", () => {
const sunrise = skyScene(at(6, 10));
expect(sunrise.sun).not.toBeNull();
expect(sunrise.cityLights).toBe(true);
});
});