Files
mission-control-v2/frontend/src/lib/zeit.test.ts
T
HitonabiandClaude Opus 5.5 790de19f1a
Ampel / ampel (push) Failing after 22s
boxwart: Update-Verlauf zeigt das echte Ergebnis je Baustein, festgehaltene Bausteine sichtbar
Der Verlauf las bisher nur den Hermes-Cron-Status ("Skript lief") und zeigte die
Laeufe vom 06. und 13.09. als "durchgelaufen", obwohl dort zurueckgerollt und
festgehalten wurde; ein abgebrochener Lauf stand als "laeuft" da. Jetzt kommt der
Verlauf aus dem Meldeprotokoll (~/mc2-notify.log), also aus dem, was autoupdate.sh
selbst je Baustein meldet.

Festgehaltene Bausteine (Pin-Register) werden zum Waechter-Hinweis mit Knopf
"Freigeben", auf der Updates-Seite markiert und in der Updates-Lampe gezaehlt.
Hermes zeigt seine laufende Version und die Zahl der neuen Aenderungen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 21:56:19 +02:00

71 lines
3.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { flugplanZeit, gbText, laufzeit, seit, vor } from "./zeit"
import { rolleVon, temperaturFarbe, versionen } from "./anzeige"
import type { Modell } from "./typen"
// Fester Bezugspunkt: Mittwoch, 23.09.2026, 20:45 Uhr Berliner Zeit.
const JETZT = new Date("2026-09-23T20:45:00+02:00")
describe("flugplanZeit", () => {
it("benennt heute, gestern und morgen", () => {
expect(flugplanZeit("2026-09-23T03:00:00+02:00", JETZT)).toBe("HEUTE 03:00")
expect(flugplanZeit("2026-09-22T23:10:00+02:00", JETZT)).toBe("GESTERN 23:10")
expect(flugplanZeit("2026-09-24T03:00:00+02:00", JETZT)).toBe("MORGEN 03:00")
})
it("nimmt für die nächsten Tage den Wochentag", () => {
expect(flugplanZeit("2026-09-27T04:30:00+02:00", JETZT)).toBe("SO 04:30")
})
it("rechnet UTC-Zeiten in Berliner Zeit um", () => {
expect(flugplanZeit("2026-09-23T05:00:00Z", JETZT)).toBe("HEUTE 07:00")
})
})
describe("kleine Helfer", () => {
it("seit und vor", () => {
expect(seit(new Date("2026-09-07T11:03:00+02:00").getTime() / 1000, JETZT)).toBe("seit 07.09., 11:03")
expect(vor(JETZT.getTime() / 1000 - 40, JETZT.getTime())).toBe("vor 40 s")
expect(vor(JETZT.getTime() / 1000 - 2 * 86_400, JETZT.getTime())).toBe("vor 2 Tagen")
})
it("laufzeit und gbText", () => {
expect(laufzeit(10 * 86_400 + 14 * 3600 + 59)).toEqual([10, 14])
expect(gbText(55 * 1024 ** 3)).toBe("55 GB")
expect(gbText(1.9 * 1024 ** 4, 1)).toBe("1,9 TB")
})
it("Temperaturfarbe wechselt bei 70 und 85 Grad", () => {
expect(temperaturFarbe(37)).toBe("var(--gruen)")
expect(temperaturFarbe(70)).toBe("var(--bernstein)")
expect(temperaturFarbe(85)).toBe("var(--rot)")
})
})
describe("versionen", () => {
it("zeigt Motor-Builds mit b und nur echte Neuerungen", () => {
expect(versionen("engine", { kind: "engine", installed_build: 11057, latest_build: 11139 })).toEqual({ laeuft: "b11057", neu: "b11139" })
expect(versionen("engine", { kind: "engine", installed_build: 11139, latest_build: 11139 })).toEqual({ laeuft: "b11139", neu: null })
})
it("zählt beim Betriebssystem die Pakete", () => {
expect(versionen("os", { kind: "os", count: 24 })).toEqual({ laeuft: "Ubuntu", neu: "24 Pakete" })
})
it("zeigt bei Hermes die Version und die Zahl der Änderungen", () => {
expect(versionen("hermes", { kind: "hermes", installed_version: "0.21.3", behind: 2523 }))
.toEqual({ laeuft: "v0.21.3", neu: "+2.523 Änderungen" })
expect(versionen("hermes", { kind: "hermes", behind: 0 })).toEqual({ laeuft: "", neu: null })
})
})
describe("rolleVon", () => {
const m = (aliases: string[]): Modell => ({
name: "x", role: null, aliases, ctx: null, ttl: null, filename: "", quant: "", size_bytes: null, spec_active: false, parallel_slots: 1,
})
it("erkennt Hirn und Coder an den Aliasen", () => {
expect(rolleVon(m(["hermes", "fast"]))).toBe("hirn")
expect(rolleVon(m(["coder", "heavy"]))).toBe("coder")
expect(rolleVon(m(["debugger"]))).toBeNull()
})
})