summaryrefslogtreecommitdiff
path: root/engine_test.go
diff options
context:
space:
mode:
authorEltrac <hi@guhub.cn>2025-11-27 11:45:00 +0800
committerEltrac <hi@guhub.cn>2025-11-27 11:45:00 +0800
commitc41a8f36676bca96b3a3c4af7ca6ab96f2ad9fc1 (patch)
tree143b7388a766c82a45890e37f1c256dbb0ff67f9 /engine_test.go
parentbb58f6cd1d9cce5b12e2f9a30b1c9a6aaefdd54c (diff)
refactor: use standard Go tests
Diffstat (limited to 'engine_test.go')
-rw-r--r--engine_test.go114
1 files changed, 114 insertions, 0 deletions
diff --git a/engine_test.go b/engine_test.go
new file mode 100644
index 0000000..12ec2c6
--- /dev/null
+++ b/engine_test.go
@@ -0,0 +1,114 @@
+package growel
+
+import (
+ "net/http/httptest"
+ "strings"
+ "testing"
+)
+
+func setupEngine() *Engine {
+ e := New()
+
+ e.GET("/", func(c *Context) {
+ c.Plain(200, "home")
+ })
+
+ e.GET("/hello", func(c *Context) {
+ c.JSON(200, map[string]string{"msg": "hi"})
+ })
+
+ e.GET("/user/:id", func(c *Context) {
+ c.JSON(200, map[string]string{"id": c.Params["id"]})
+ })
+
+ e.GET("/error", func(c *Context) {
+ c.BadRequest("bad")
+ })
+
+ return e
+}
+
+func TestEngineStaticRoute(t *testing.T) {
+ e := setupEngine()
+
+ req := httptest.NewRequest("GET", "/", nil)
+ w := httptest.NewRecorder()
+ e.ServeHTTP(w, req)
+
+ if w.Code != 200 {
+ t.Fatalf("expected 200, got %d", w.Code)
+ }
+
+ if w.Body.String() != "home" {
+ t.Fatalf("expected body 'home', got %q", w.Body.String())
+ }
+}
+
+func TestEngineJSONRoute(t *testing.T) {
+ e := setupEngine()
+
+ req := httptest.NewRequest("GET", "/hello", nil)
+ w := httptest.NewRecorder()
+ e.ServeHTTP(w, req)
+
+ if w.Code != 200 {
+ t.Fatalf("expected 200, got %d", w.Code)
+ }
+
+ if !strings.Contains(w.Body.String(), `"msg":"hi"`) {
+ t.Fatalf("unexpected json: %s", w.Body.String())
+ }
+}
+
+func TestEngineParamRoute(t *testing.T) {
+ e := setupEngine()
+
+ req := httptest.NewRequest("GET", "/user/99", nil)
+ w := httptest.NewRecorder()
+ e.ServeHTTP(w, req)
+
+ if w.Code != 200 {
+ t.Fatalf("expected 200, got %d", w.Code)
+ }
+
+ if !strings.Contains(w.Body.String(), `"id":"99"`) {
+ t.Fatalf("unexpected json: %s", w.Body.String())
+ }
+}
+
+func TestEngineNotFound(t *testing.T) {
+ e := setupEngine()
+
+ req := httptest.NewRequest("GET", "/doesnotexist", nil)
+ w := httptest.NewRecorder()
+ e.ServeHTTP(w, req)
+
+ if w.Code != 404 {
+ t.Fatalf("expected 404, got %d", w.Code)
+ }
+}
+
+func TestEngineErrorResponse(t *testing.T) {
+ e := setupEngine()
+
+ req := httptest.NewRequest("GET", "/error", nil)
+ w := httptest.NewRecorder()
+ e.ServeHTTP(w, req)
+
+ if w.Code != 400 {
+ t.Fatalf("expected 400, got %d", w.Code)
+ }
+
+ body := w.Body.String()
+ if !strings.Contains(body, `"error":"Bad Request"`) {
+ t.Fatalf("missing error text: %s", body)
+ }
+
+ if !strings.Contains(body, `"message":"bad"`) {
+ t.Fatalf("missing message: %s", body)
+ }
+
+ if !strings.Contains(body, `"status":"400"`) {
+ t.Fatalf("missing status code: %s", body)
+ }
+}