Commit 6d525bb
Changed files (3)
pkg
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) .