test(expiry): 完成 #31 后端单元测试与覆盖率提升
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
package expiry
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"testing"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func TestHandler_HealthzAndBadPathBranches(t *testing.T) {
|
||||
r := newTestRouter(t)
|
||||
|
||||
// 覆盖 healthz。
|
||||
{
|
||||
db := newTestDB(t)
|
||||
handler := NewHandler(NewService(NewRepository(db)))
|
||||
w := httptest.NewRecorder()
|
||||
c, _ := gin.CreateTestContext(w)
|
||||
handler.Healthz(c)
|
||||
if w.Code != http.StatusOK {
|
||||
t.Fatalf("healthz status=%d", w.Code)
|
||||
}
|
||||
}
|
||||
|
||||
// 覆盖错误分支。
|
||||
badIDDelete := requestJSON(t, r, http.MethodDelete, "/api/expiry/items/abc", nil)
|
||||
if badIDDelete.Code != http.StatusBadRequest {
|
||||
t.Fatalf("expected bad id 400, got %d", badIDDelete.Code)
|
||||
}
|
||||
|
||||
badDateCreate := requestJSON(t, r, http.MethodPost, "/api/expiry/items", map[string]interface{}{
|
||||
"name": "错误日期",
|
||||
"category": "food",
|
||||
"production_date": "2026/01/01",
|
||||
"expiry_date": "2030-01-01",
|
||||
})
|
||||
if badDateCreate.Code != http.StatusBadRequest {
|
||||
t.Fatalf("expected bad date 400, got %d", badDateCreate.Code)
|
||||
}
|
||||
|
||||
badStatus := requestJSON(t, r, http.MethodPost, "/api/expiry/items/1/status", map[string]interface{}{
|
||||
"status": "invalid",
|
||||
})
|
||||
if badStatus.Code != http.StatusBadRequest && badStatus.Code != http.StatusNotFound {
|
||||
t.Fatalf("expected bad status 400/404, got %d", badStatus.Code)
|
||||
}
|
||||
|
||||
badList := requestJSON(t, r, http.MethodGet, "/api/expiry/items?status=bad", nil)
|
||||
if badList.Code != http.StatusBadRequest {
|
||||
t.Fatalf("expected bad filter 400, got %d", badList.Code)
|
||||
}
|
||||
}
|
||||
|
||||
func TestHandler_HelperWriters(t *testing.T) {
|
||||
w := httptest.NewRecorder()
|
||||
c, _ := gin.CreateTestContext(w)
|
||||
writeExpiryServerError(c)
|
||||
if w.Code != http.StatusInternalServerError {
|
||||
t.Fatalf("expected 500, got %d", w.Code)
|
||||
}
|
||||
|
||||
w2 := httptest.NewRecorder()
|
||||
c2, _ := gin.CreateTestContext(w2)
|
||||
writeExpirySuccess(c2, "ok", gin.H{"x": 1})
|
||||
if w2.Code != http.StatusOK {
|
||||
t.Fatalf("expected 200, got %d", w2.Code)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user