From b1fb9c4dfa63cde6396be4e2c6b99ee0dbb38072 Mon Sep 17 00:00:00 2001 From: Fedorov Vladimir Date: Fri, 2 Oct 2026 23:17:15 +0700 Subject: [PATCH] fix --- internal/app/team_registration.go | 4 +--- internal/app/team_registration_test.go | 4 +--- internal/services/team_service/registration.go | 7 ++++++- internal/services/team_service/service.go | 3 +++ 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/internal/app/team_registration.go b/internal/app/team_registration.go index 2185637..37c8faf 100644 --- a/internal/app/team_registration.go +++ b/internal/app/team_registration.go @@ -12,8 +12,6 @@ import ( "net/http" "strconv" "time" - - "evening_detective_server/internal/repos/teams_repo" ) // TeamRegistrationHandler принимает вебхук Яндекс Форм отдельно от пользовательского JWT. @@ -65,7 +63,7 @@ func TeamRegistrationHandler(token string, register func(context.Context, int, s switch { case errors.Is(err, team_service.ErrInvalidRegistration): fail(http.StatusBadRequest, err.Error()) - case errors.Is(err, teams_repo.ErrRegistrationClosed): + case errors.Is(err, team_service.ErrRegistrationClosed): fail(http.StatusConflict, err.Error()) case err != nil: fail(http.StatusInternalServerError, "Не удалось зарегистрировать команду") diff --git a/internal/app/team_registration_test.go b/internal/app/team_registration_test.go index b15cfe0..f591625 100644 --- a/internal/app/team_registration_test.go +++ b/internal/app/team_registration_test.go @@ -9,8 +9,6 @@ import ( "net/http/httptest" "strings" "testing" - - "evening_detective_server/internal/repos/teams_repo" ) func TestTeamRegistrationHandler(t *testing.T) { @@ -34,7 +32,7 @@ func TestTeamRegistrationHandler(t *testing.T) { {"jsonrpc string count", "secret", "Bearer secret", "42", "delivery", `{"jsonrpc":"2.0","method":"register","params":{"name":"Команда","email":"captain@example.org","participantsCount":"5"},"id":1}`, nil, 200, true}, {"too large", "secret", "Bearer secret", "42", "delivery", `{"name":"` + strings.Repeat("a", 17000) + `"}`, nil, 400, false}, {"invalid fields", "secret", "Bearer secret", "42", "delivery", valid, team_service.ErrInvalidRegistration, 400, true}, - {"closed", "secret", "Bearer secret", "42", "delivery", valid, teams_repo.ErrRegistrationClosed, 409, true}, + {"closed", "secret", "Bearer secret", "42", "delivery", valid, team_service.ErrRegistrationClosed, 409, true}, {"internal", "secret", "Bearer secret", "42", "delivery", valid, errors.New("private database detail"), 500, true}, } { t.Run(tc.name, func(t *testing.T) { diff --git a/internal/services/team_service/registration.go b/internal/services/team_service/registration.go index c184f99..15d274b 100644 --- a/internal/services/team_service/registration.go +++ b/internal/services/team_service/registration.go @@ -10,7 +10,12 @@ import ( "unicode/utf8" ) -var ErrInvalidRegistration = errors.New("Укажите название команды (до 255 символов), почту капитана и положительное количество участников") +var ( + // ErrInvalidRegistration — входные данные регистрации команды некорректны. + ErrInvalidRegistration = errors.New("Укажите название команды (до 255 символов), почту капитана и положительное количество участников") + // ErrRegistrationClosed — игра не найдена или регистрация в неё закрыта. + ErrRegistrationClosed = errors.New("Игра не найдена или регистрация уже закрыта") +) type Registration struct { Name string `json:"name"` diff --git a/internal/services/team_service/service.go b/internal/services/team_service/service.go index b38fdbe..dc8d409 100644 --- a/internal/services/team_service/service.go +++ b/internal/services/team_service/service.go @@ -96,6 +96,9 @@ func (s *TeamService) RegisterTeam(ctx context.Context, gameID int, deliveryID s autoConfirm := time.Now().Before(game.StartAt.Add(-24*time.Hour)) == false id, err := s.teamsRepo.RegisterTeamWithParticipation(ctx, gameID, deliveryID, registration.Name, registration.Email, registration.ParticipantsCount, password, autoConfirm) if err != nil { + if errors.Is(err, teams_repo.ErrRegistrationClosed) { + return 0, ErrRegistrationClosed + } return 0, err } if s.emailSender == nil {