summaryrefslogtreecommitdiff
path: root/pkg/web
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/web')
-rw-r--r--pkg/web/mountable.go7
-rw-r--r--pkg/web/server.go28
-rw-r--r--pkg/web/server_test.go31
-rw-r--r--pkg/web/sparkles_test.go57
4 files changed, 7 insertions, 116 deletions
diff --git a/pkg/web/mountable.go b/pkg/web/mountable.go
new file mode 100644
index 0000000..6e04b86
--- /dev/null
+++ b/pkg/web/mountable.go
@@ -0,0 +1,7 @@
+package web
+
+import "net/http"
+
+type Mountable interface {
+ MountTo(*http.ServeMux)
+}
diff --git a/pkg/web/server.go b/pkg/web/server.go
deleted file mode 100644
index cccb4e1..0000000
--- a/pkg/web/server.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package web
-
-import (
- "net/http"
-
- "gitlab.com/mokhax/sparkled/app/controllers/health"
- "gitlab.com/mokhax/sparkled/app/controllers/sparkles"
- "gitlab.com/mokhax/sparkled/pkg/db"
-)
-
-type Server struct {
- mux *http.ServeMux
-}
-
-func New(storage db.Repository) *Server {
- mux := http.NewServeMux()
- c := sparkles.New(storage)
- mux.HandleFunc("GET /sparkles", c.Index)
- mux.HandleFunc("POST /sparkles", c.Create)
- mux.HandleFunc("GET /health", health.New().Index)
- mux.Handle("GET /", http.FileServer(http.Dir("public")))
-
- return &Server{mux: mux}
-}
-
-func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- s.mux.ServeHTTP(w, r)
-}
diff --git a/pkg/web/server_test.go b/pkg/web/server_test.go
deleted file mode 100644
index fd3c0ad..0000000
--- a/pkg/web/server_test.go
+++ /dev/null
@@ -1,31 +0,0 @@
-package web
-
-import (
- "net/http"
- "net/http/httptest"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "gitlab.com/mokhax/sparkled/pkg/db"
- "gitlab.com/mokhax/sparkled/pkg/test"
-)
-
-func TestServer(t *testing.T) {
- server := New(db.NewRepository())
-
- t.Run("GET /index.html", func(t *testing.T) {
- t.Skip()
- response := httptest.NewRecorder()
-
- server.ServeHTTP(response, test.Request("GET", "/"))
- assert.Equal(t, http.StatusOK, response.Code)
- assert.Contains(t, response.Body.String(), "SparkleLab")
- })
-
- t.Run("GET /health", func(t *testing.T) {
- response := httptest.NewRecorder()
-
- server.ServeHTTP(response, test.Request("GET", "/health"))
- assert.Equal(t, http.StatusOK, response.Code)
- })
-}
diff --git a/pkg/web/sparkles_test.go b/pkg/web/sparkles_test.go
deleted file mode 100644
index b4b7f54..0000000
--- a/pkg/web/sparkles_test.go
+++ /dev/null
@@ -1,57 +0,0 @@
-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 := New(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)
- })
- })
-
- t.Run("POST /sparkles", func(t *testing.T) {
- t.Run("saves a new sparkle", func(t *testing.T) {
- repository := db.NewRepository()
- server := New(repository)
-
- sparkle, _ := domain.NewSparkle("@tanuki for reviewing my MR!")
- request := test.Request("POST", "/sparkles", test.WithContentType(sparkle, serde.JSON))
- response := httptest.NewRecorder()
-
- server.ServeHTTP(response, request)
-
- require.Equal(t, http.StatusCreated, response.Code)
- assert.Equal(t, 1, len(repository.All()))
- })
- })
-}