package core

import (
	"net/http"
	"net/http/httptest"
	"testing"
)

// TestHTTPServer crea un httptest.Server con un ServeMux configurado
// a partir del mapa de rutas. Registra el cleanup en t.Cleanup.
// Retorna un TestServer con la URL base, un cliente preconfigurado y
// la funcion de cierre del servidor.
func TestHTTPServer(t *testing.T, routes map[string]http.HandlerFunc) TestServer {
	t.Helper()

	mux := http.NewServeMux()
	for pattern, handler := range routes {
		mux.HandleFunc(pattern, handler)
	}

	srv := httptest.NewServer(mux)
	t.Cleanup(srv.Close)

	return TestServer{
		URL:     srv.URL,
		Client:  srv.Client(),
		Cleanup: srv.Close,
	}
}
