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>
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
package weather
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// FakeFuerTest gibt einen Dienst, der einen erfundenen Wetterserver befragt.
|
|
//
|
|
// Steht bewusst nicht in der _test.go: Auch die Server-Tests im Wurzelpaket
|
|
// brauchen ihn, und kein Test in diesem Projekt fragt je wirklich bei
|
|
// Open-Meteo an — das wäre langsam, unzuverlässig und benutzte einen fremden
|
|
// Dienst für unsere Testläufe.
|
|
func FakeFuerTest(t *testing.T, code int, grad float64) *Dienst {
|
|
t.Helper()
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if strings.Contains(r.URL.Path, "search") {
|
|
json.NewEncoder(w).Encode(map[string]any{"results": []map[string]any{
|
|
{"name": "Köln", "country": "Deutschland", "admin1": "Nordrhein-Westfalen",
|
|
"latitude": 50.938, "longitude": 6.96},
|
|
}})
|
|
return
|
|
}
|
|
json.NewEncoder(w).Encode(map[string]any{"current": map[string]any{
|
|
"temperature_2m": grad, "weather_code": code,
|
|
}})
|
|
}))
|
|
t.Cleanup(srv.Close)
|
|
|
|
d := Neu()
|
|
d.wetterURL = srv.URL + "/forecast"
|
|
d.sucheURL = srv.URL + "/search"
|
|
return d
|
|
}
|