package appuser import ( "net/http" "net/http/httptest" "testing" "github.com/gin-gonic/gin" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) func TestWriteMutationErrorMapsGRPCBusinessFailures(t *testing.T) { gin.SetMode(gin.TestMode) tests := []struct { name string err error wantStatus int }{ {name: "invalid level", err: status.Error(codes.FailedPrecondition, "target must exceed real level"), wantStatus: http.StatusBadRequest}, {name: "missing user", err: status.Error(codes.NotFound, "user not found"), wantStatus: http.StatusNotFound}, {name: "owner unavailable", err: status.Error(codes.Unavailable, "activity unavailable"), wantStatus: http.StatusInternalServerError}, } for _, test := range tests { t.Run(test.name, func(t *testing.T) { recorder := httptest.NewRecorder() context, _ := gin.CreateTestContext(recorder) writeMutationError(context, test.err, "mutation failed") if recorder.Code != test.wantStatus { t.Fatalf("HTTP status=%d want=%d body=%s", recorder.Code, test.wantStatus, recorder.Body.String()) } }) } }