diff --git a/kyc/quiz/quiz.go b/kyc/quiz/quiz.go index cd281101..d2264f60 100644 --- a/kyc/quiz/quiz.go +++ b/kyc/quiz/quiz.go @@ -585,7 +585,7 @@ func (r *repositoryImpl) ContinueQuizSession( //nolint:funlen,revive //. }, } - if int(incorrectNum) >= r.config.MaxWrongAnswersPerSession { + if int(incorrectNum) > r.config.MaxWrongAnswersPerSession { quiz.Result = FailureResult return wrapErrorInTx(r.UserMarkSessionAsFinished(ctx, userID, now, tx, false, false)) diff --git a/kyc/quiz/quiz_test.go b/kyc/quiz/quiz_test.go index 522c1ae2..d28f2315 100644 --- a/kyc/quiz/quiz_test.go +++ b/kyc/quiz/quiz_test.go @@ -177,7 +177,7 @@ func testManagerSessionStart(ctx context.Context, t *testing.T, r *repositoryImp session, err := r.StartQuizSession(ctx, "bogus", "en") require.NoError(t, err) - for i := uint8(0); i < uint8(r.config.MaxWrongAnswersPerSession); i++ { + for i := uint8(0); i < uint8(r.config.MaxWrongAnswersPerSession+1); i++ { session, err = r.ContinueQuizSession(ctx, "bogus", i+uint8(1), 0) require.NoError(t, err) require.NotNil(t, session) @@ -375,6 +375,17 @@ func testManagerSessionContinueWithIncorrectAnswers(ctx context.Context, t *test require.NotEmpty(t, session.Progress.NextQuestion.Text) require.Equal(t, uint8(1), session.Progress.NextQuestion.Number) + session, err = r.ContinueQuizSession(ctx, "bogus", session.Progress.NextQuestion.Number, 0) + require.NoError(t, err) + require.NotNil(t, session) + require.NotNil(t, session.Progress) + require.Empty(t, session.Result) + require.NotNil(t, session.Progress.ExpiresAt) + require.NotEmpty(t, session.Progress.NextQuestion) + require.Equal(t, uint8(3), session.Progress.MaxQuestions) + require.NotEmpty(t, session.Progress.NextQuestion.Text) + require.Equal(t, uint8(2), session.Progress.NextQuestion.Number) + session, err = r.ContinueQuizSession(ctx, "bogus", session.Progress.NextQuestion.Number, 0) require.NoError(t, err) require.NotNil(t, session) @@ -383,7 +394,7 @@ func testManagerSessionContinueWithIncorrectAnswers(ctx context.Context, t *test require.Nil(t, session.Progress.NextQuestion) require.Equal(t, uint8(3), session.Progress.MaxQuestions) require.Equal(t, uint8(0), session.Progress.CorrectAnswers) - require.Equal(t, uint8(1), session.Progress.IncorrectAnswers) + require.Equal(t, uint8(2), session.Progress.IncorrectAnswers) } func TestSessionManager(t *testing.T) {