예제 #1
0
        public async Task GetUserQuizList()
        {
            List <Quiz> result;

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var logManager = Mock.Of <ILogManager>();
                var sut        = new QuizManager(context, new QuizAttemptManager(context, Mock.Of <IQuestionManager>(), logManager), logManager);
                var quiz       = new Quiz
                {
                    Title              = "title",
                    Intro              = "intro",
                    TimeConstraint     = true,
                    TimeLimitInSeconds = 40,
                    AvailableTo        = DateTime.Now.AddDays(1)
                };

                var testData = await ManagerTestHelper.CreateAndAssignQuizAsync(context, quiz, true);

                var attempt = await context.QuizAttempts.AddAsync(
                    new QuizAttempt
                {
                    QuizId    = testData.QuizId,
                    UserId    = testData.UserId,
                    Status    = QuizAttemptStatus.Incomplete,
                    StartDate = DateTime.Now
                });

                await context.SaveChangesAsync();

                result = await sut.GetUserQuizList(testData.UserId);
            }

            Assert.IsNotNull(result[0].LastAttempt);
        }
예제 #2
0
        public async Task UpdateStatusAvailableIntervalPassed()
        {
            UpdateQuizAttemptResponse result;

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var logManager = Mock.Of <ILogManager>();
                var sut        = new QuizAttemptManager(context, new QuestionManager(context, logManager), logManager);
                var quiz       = new Quiz
                {
                    Title              = "title",
                    Intro              = "intro",
                    TimeConstraint     = true,
                    TimeLimitInSeconds = 40,
                    AvailableTo        = DateTime.Now.AddDays(-1)
                };

                var testData = await ManagerTestHelper.CreateAndAssignQuizAsync(context, quiz, true);

                var attempt = await context.QuizAttempts.AddAsync(
                    new QuizAttempt
                {
                    QuizId    = testData.QuizId,
                    UserId    = testData.UserId,
                    Status    = QuizAttemptStatus.Incomplete,
                    StartDate = DateTime.Now
                });

                await context.SaveChangesAsync();

                result = await sut.UpdateStatus(testData.UserId, attempt.Entity.Id, new UpdateQuizAttemptStatus
                {
                    TimeSpent = 30,
                    EndQuiz   = false
                });
            }

            Assert.AreEqual(UpdateQuizAttemptStatusResult.DateError, result.Result);
            Assert.AreNotEqual(QuizAttemptStatus.Incomplete, result.Attempt.Status);
        }
예제 #3
0
        public async Task CreateAttemptQuizNotAssigned()
        {
            CreateAttemptResponse result;

            var quiz = new Quiz
            {
                Title = "title",
                Intro = "intro"
            };

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var logManager = Mock.Of <ILogManager>();
                var testData   = await ManagerTestHelper.CreateAndAssignQuizAsync(context, quiz, false);

                var sut = new QuizAttemptManager(context, new QuestionManager(context, logManager), logManager);
                result = await sut.CreateAttempt(testData.UserId, testData.QuizId);
            }

            Assert.AreEqual(CreateAttemptResult.NotAuthorized, result.Result);
            Assert.IsNull(result.Attempt);
        }
예제 #4
0
        public async Task CreateAttemptQuizRepeatable()
        {
            CreateAttemptResponse result;
            QuizAttempt           previousAttempt;

            var quiz = new Quiz
            {
                Title      = "title",
                Intro      = "intro",
                Repeatable = true
            };

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var logManager = Mock.Of <ILogManager>();
                var testData   = await ManagerTestHelper.CreateAndAssignQuizAsync(context, quiz, true);

                var attempt = await context.QuizAttempts.AddAsync(
                    new QuizAttempt
                {
                    QuizId    = testData.QuizId,
                    UserId    = testData.UserId,
                    StartDate = DateTime.Now,
                    Status    = QuizAttemptStatus.Incomplete,
                    TimeSpent = 10
                });

                await context.SaveChangesAsync();

                var sut = new QuizAttemptManager(context, new QuestionManager(context, logManager), logManager);
                result = await sut.CreateAttempt(testData.UserId, testData.QuizId);

                previousAttempt = await context.QuizAttempts.FindAsync(attempt.Entity.Id);
            }

            Assert.AreEqual(CreateAttemptResult.Success, result.Result);
            Assert.AreEqual(QuizAttemptStatus.Completed, previousAttempt.Status);
            Assert.AreEqual(QuizAttemptStatus.Incomplete, result.Attempt.Status);
        }
예제 #5
0
        public async Task CreateAttemptQuizNotAvailable()
        {
            CreateAttemptResponse result;

            var quiz = new Quiz
            {
                Title       = "title",
                Intro       = "intro",
                AvailableTo = DateTime.Now.AddDays(-1)
            };

            using (var context = new QuizContext(ManagerTestHelper.Options))
            {
                var logManager = Mock.Of <ILogManager>();
                var testData   = await ManagerTestHelper.CreateAndAssignQuizAsync(context, quiz, true);

                var sut = new QuizAttemptManager(context, new QuestionManager(context, logManager), logManager);
                result = await sut.CreateAttempt(testData.UserId, testData.QuizId);
            }

            Assert.AreEqual(CreateAttemptResult.DateError, result.Result);
            Assert.IsNull(result.Attempt);
        }