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) } }