package watch import ( "bufio" "io" "net/http" "net/http/httptest" "os" "path/filepath" "strings" "testing" "time" ) func newTestServer(t *testing.T, dir string) (*Server, *httptest.Server) { t.Helper() srv, err := NewServer(dir) if err != nil { t.Fatalf("NewServer() error = %v", err) } t.Cleanup(func() { srv.Close() }) handler, err := srv.Handler() if err != nil { t.Fatalf("Handler() error = %v", err) } httpSrv := httptest.NewServer(handler) t.Cleanup(httpSrv.Close) return srv, httpSrv } func TestHandler(t *testing.T) { dir := t.TempDir() if err := os.WriteFile(filepath.Join(dir, "010-intro.md"), []byte("# Hallo\n"), 0o644); err != nil { t.Fatalf("WriteFile: %v", err) } _, httpSrv := newTestServer(t, dir) tests := []struct { name string path string wantStatus int wantContains string }{ {name: "index renders slides", path: "/", wantStatus: http.StatusOK, wantContains: "

Hallo

"}, {name: "index includes live-reload script", path: "/", wantStatus: http.StatusOK, wantContains: `