Ejemplo n.º 1
0
        internal static async Task <(int QuizId, List <int> QuestionIds, List <int> OptionIds)> CreateQuizAsync(QuizContext context, int questionCount, int optionCount)
        {
            var logManager      = Mock.Of <ILogManager>();
            var optionManager   = new OptionManager(context, logManager);
            var quizManager     = new QuizManager(context, Mock.Of <IQuizAttemptManager>(), logManager);
            var questionManager = new QuestionManager(context, logManager);
            var userManager     = GetUserManager(context, Mock.Of <IAuthManager>(), logManager);

            var userId = await userManager.InsertUserInternalAsync(CreateUserTo(0), true);

            await quizManager.InsertQuizInternalAsync(userId, CreateQuiz(0));

            var quizId = (await quizManager.InsertQuizInternalAsync(userId, CreateQuiz(1))).QuizId;
            await quizManager.InsertQuizInternalAsync(userId, CreateQuiz(2));

            var questionIds = new List <int>();
            var optionIds   = new List <int>();

            for (var i = 0; i < questionCount; i++)
            {
                var questionId = await questionManager.InsertQuestionInternalAsync(CreateQuestion(i));

                await questionManager.AssignQuestionInternalAsync(quizId, questionId);

                questionIds.Add(questionId);

                for (var j = 0; j < optionCount; j++)
                {
                    var optionId = await optionManager.InsertOptionInternalAsync(CreateOption(j, j == 1, questionId, (byte)j));

                    if (i == 0)
                    {
                        optionIds.Add(optionId);
                    }
                }
            }

            return(QuizId : quizId, QuestionIds : questionIds, OptionIds : optionIds);
        }