Commit 6d525bb

mo khan <mo@mokhan.ca>
2025-04-11 21:50:59
test: move sparkles route tests to a separate file
1 parent 49e6179
pkg/web/server_test.go
@@ -6,58 +6,25 @@ import (
 	"testing"
 
 	"github.com/stretchr/testify/assert"
-	"github.com/stretchr/testify/require"
-	"github.com/xlgmokha/x/pkg/serde"
 	"gitlab.com/mokhax/sparkled/pkg/db"
-	"gitlab.com/mokhax/sparkled/pkg/domain"
 	"gitlab.com/mokhax/sparkled/pkg/test"
 )
 
 func TestServer(t *testing.T) {
-	repository := db.NewRepository()
-	server := NewServer(repository)
+	server := NewServer(db.NewRepository())
 
 	t.Run("GET /index.html", func(t *testing.T) {
-		t.Run("returns the homepage", func(t *testing.T) {
-			t.Skip()
-			response := httptest.NewRecorder()
+		response := httptest.NewRecorder()
 
-			server.ServeHTTP(response, test.Request("GET", "/"))
-			assert.Equal(t, http.StatusOK, response.Code)
-		})
-	})
-
-	t.Run("GET /sparkles", func(t *testing.T) {
-		sparkle, _ := domain.NewSparkle("@tanuki for helping me")
-		store := db.NewRepository()
-		store.Save(sparkle)
-
-		server := NewServer(store)
-
-		t.Run("returns JSON", func(t *testing.T) {
-			request := test.Request("GET", "/sparkles",
-				test.WithAcceptHeader(serde.JSON),
-			)
-			response := httptest.NewRecorder()
-
-			server.ServeHTTP(response, request)
-
-			assert.Equal(t, http.StatusOK, response.Code)
-			items, err := serde.FromJSON[[]*domain.Sparkle](response.Body)
-			require.NoError(t, err)
-
-			assert.Equal(t, 1, len(items))
-			assert.Equal(t, "@tanuki", items[0].Sparklee)
-			assert.Equal(t, "for helping me", items[0].Reason)
-		})
+		server.ServeHTTP(response, test.Request("GET", "/"))
+		assert.Equal(t, http.StatusOK, response.Code)
+		assert.Contains(t, "SparkleLab", response.Body.String())
 	})
 
 	t.Run("GET /health", func(t *testing.T) {
-		t.Run("returns OK", func(t *testing.T) {
-			response := httptest.NewRecorder()
+		response := httptest.NewRecorder()
 
-			server.ServeHTTP(response, test.Request("GET", "/health"))
-			assert.Equal(t, http.StatusOK, response.Code)
-		})
+		server.ServeHTTP(response, test.Request("GET", "/health"))
+		assert.Equal(t, http.StatusOK, response.Code)
 	})
 }
pkg/web/sparkles_test.go
@@ -0,0 +1,41 @@
+package web
+
+import (
+	"net/http"
+	"net/http/httptest"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"github.com/stretchr/testify/require"
+	"github.com/xlgmokha/x/pkg/serde"
+	"gitlab.com/mokhax/sparkled/pkg/db"
+	"gitlab.com/mokhax/sparkled/pkg/domain"
+	"gitlab.com/mokhax/sparkled/pkg/test"
+)
+
+func TestSparkles(t *testing.T) {
+	t.Run("GET /sparkles", func(t *testing.T) {
+		sparkle, _ := domain.NewSparkle("@tanuki for helping me")
+		store := db.NewRepository()
+		store.Save(sparkle)
+
+		server := NewServer(store)
+
+		t.Run("returns JSON", func(t *testing.T) {
+			request := test.Request("GET", "/sparkles",
+				test.WithAcceptHeader(serde.JSON),
+			)
+			response := httptest.NewRecorder()
+
+			server.ServeHTTP(response, request)
+
+			assert.Equal(t, http.StatusOK, response.Code)
+			items, err := serde.FromJSON[[]*domain.Sparkle](response.Body)
+			require.NoError(t, err)
+
+			assert.Equal(t, 1, len(items))
+			assert.Equal(t, "@tanuki", items[0].Sparklee)
+			assert.Equal(t, "for helping me", items[0].Reason)
+		})
+	})
+}
Makefile
@@ -16,7 +16,8 @@ setup:
 build: sparkled
 
 test:
-	@go test ./...
+	@go clean -testcache
+	@go test -shuffle=on ./...
 
 build-image:
 	@docker build --tag $(IMAGE_TAG) .