Files
2026-10-03 13:33:18 +07:00

36 lines
1.2 KiB
Go

package app
import (
"errors"
"testing"
"evening_detective_server/internal/services/team_service"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func TestTeamErrorStatus(t *testing.T) {
for _, tc := range []struct {
name, internalMessage string
err error
code codes.Code
message string
}{
{"game not found", "add failed", team_service.ErrGameNotFound, codes.NotFound, "игра не найдена"},
{"team not found", "delete failed", team_service.ErrTeamNotFound, codes.NotFound, "команда не найдена"},
{"invalid captain email", "add failed", team_service.ErrInvalidCaptainEmail, codes.InvalidArgument, "укажите корректную почту капитана"},
{"internal", "add failed", errors.New("private database detail"), codes.Internal, "add failed"},
} {
t.Run(tc.name, func(t *testing.T) {
err := teamErrorStatus(tc.err, tc.internalMessage)
if status.Code(err) != tc.code || status.Convert(err).Message() != tc.message {
t.Fatalf("status=%v, want %v %q", err, tc.code, tc.message)
}
if status.Convert(err).Message() == "private database detail" {
t.Fatal("private error exposed")
}
})
}
}