Files
HoneyOS/wetter_test.go
T
marcandClaude Opus 5 52deffa30e refactor: aufgeraeumt — Pakete hinten, Widgets vorne
Go: store, auth, weather und config sind eigene Pakete unter internal/. Vorher
lagen fuenf Dateien in einem Topf, und jede kannte jede.

Web: os.js hatte 1425 Zeilen und alles darin. Jetzt core.js (Zustand, Server,
Einstellungen), glyphs.js (die Pixelraster), js/widgets/ mit einem Widget je
Datei, os.js nur noch die Ansichten. Stylesheet nach css/.

Die HoneyBar bleibt eine einzelne Datei ohne Importe — sie wird von fremden
Seiten mit einer Zeile eingebunden, da darf nichts nachladen.

Nebenbei: Das gebaute Binary lag mit 9,8 MB im Repo und ist jetzt ignoriert.
Und der Test gegen eine zweite Versionsnummer geht nicht mehr auf os.js, sondern
durch alle .js — sonst haette ihn dieser Umbau still ausgehebelt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 20:51:21 +02:00

46 lines
1.3 KiB
Go

package main
import (
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
"honeyos/internal/store"
"honeyos/internal/weather"
)
// Ohne eingestellten Ort ist 204 die richtige Antwort: kein Fehler, nur nichts
// zu zeigen. Die Leiste lässt das Symbol dann weg, statt etwas zu melden.
func TestOhneOrtGibtEsKeinWetter(t *testing.T) {
s := newTestServer(t, "") // ohne Anbieter: offener Betrieb, kein Anmelden nötig
s.wetter = weather.FakeFuerTest(t, 0, 20)
rec := httptest.NewRecorder()
s.routes().ServeHTTP(rec, httptest.NewRequest("GET", "/api/weather", nil))
if rec.Code != http.StatusNoContent {
t.Fatalf("ohne Ort erwartet 204, bekam %d", rec.Code)
}
}
func TestMitOrtKommtDasWetter(t *testing.T) {
s := newTestServer(t, "")
s.wetter = weather.FakeFuerTest(t, 3, 8.6)
if err := s.store.SetSettings(store.LocalSub, map[string]string{
"weatherCity": "Köln", "weatherLat": "50.938", "weatherLon": "6.96",
}); err != nil {
t.Fatal(err)
}
rec := httptest.NewRecorder()
s.routes().ServeHTTP(rec, httptest.NewRequest("GET", "/api/weather", nil))
if rec.Code != http.StatusOK {
t.Fatalf("erwartet 200, bekam %d: %s", rec.Code, rec.Body)
}
var w weather.Wetter
json.Unmarshal(rec.Body.Bytes(), &w)
if w.Ort != "Köln" || w.Glyph != "wolke" {
t.Fatalf("falsches Wetter: %+v", w)
}
}