コード例 #1
0
        public async void UserExamResultDetailsTests()
        {
            var client          = httpClientFactory.CreateClient();
            var httpCallHelper  = new HttpCallHelper(client);
            var testHelper      = new UserExamResultTestHelper(client, dbContextFactory);
            var dbContextHelper = new DbContextHelper(dbContextFactory);
            var random          = Utils.NewRandom();
            var userExam1       = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            var userExam2 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            var userExamNotPublished = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            //creatng exam results
            client.Authorize(userExam1.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam1.Item3.Id, false, true);

            client.Authorize(userExam2.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam2.Item3.Id, true, true);

            client.Authorize(userExamNotPublished.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExamNotPublished.Item3.Id, false, true);


            //unautorized
            client.Unauthorize();
            await client.GetUnauthorized($"/userexamresults/{userExam1.Item3.Id}");

            client.Authorize(userExam1.Item1.Token);
            //not existing
            client.Authorize(userExam1.Item1.Token);
            await client.GetNotFound($"/userexamresults/{int.MaxValue}");

            //other users
            await client.GetNotFound($"/userexamresults/{userExam2.Item3.Id}");

            //not published
            client.Authorize(userExamNotPublished.Item1.Token);
            await dbContextHelper.SetPublishExamAsync(userExamNotPublished.Item2.Id, false);

            await client.GetNotFound($"/userexamresults/{userExamNotPublished.Item3.Id}");

            await dbContextHelper.SetPublishExamAsync(userExamNotPublished.Item2.Id, true);

            await client.GetUserExamResultSuccesfully($"/userexamresults/{userExamNotPublished.Item3.Id}");

            //normal cases
            client.Authorize(userExam1.Item1.Token);
            await client.GetUserExamResultSuccesfully($"/userexamresults/{userExam1.Item3.Id}");

            client.Authorize(userExam2.Item1.Token);
            await client.GetUserExamResultSuccesfully($"/userexamresults/{userExam2.Item3.Id}");
        }
コード例 #2
0
        public async void UserExamResultCreateTests()
        {
            var client          = httpClientFactory.CreateClient();
            var httpCallHelper  = new HttpCallHelper(client);
            var testHelper      = new UserExamResultTestHelper(client, dbContextFactory);
            var dbContextHelper = new DbContextHelper(dbContextFactory);
            var random          = Utils.NewRandom();
            var userExam1       = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            var userExam2 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            var userExam3 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            var userExam4 = await httpCallHelper.CreateUserExam(questionCount : random.Next(50, 100));

            //unautorized
            client.Unauthorize();
            await client.PostUnauthorized($"/userexamresults/{userExam1.Item3.Id}");

            //not existing
            client.Authorize(userExam1.Item1.Token);
            await client.PostNotFound($"/userexamresults/{int.MaxValue}");

            //not published
            var userExamNotPublished = await httpCallHelper.CreateUserExam();

            await dbContextHelper.SetPublishExamAsync(userExamNotPublished.Item2.Id, false);

            client.Authorize(userExamNotPublished.Item1.Token);
            await client.PostNotFound($"/userexamresults/{userExamNotPublished.Item3.Id}");

            //not ended exam
            var userExamNotEnded = await httpCallHelper.CreateUserExam();

            client.Authorize(userExamNotEnded.Item1.Token);
            await client.PostNotFound($"/userexamresults/{userExamNotEnded.Item3.Id}");

            await dbContextHelper.UpdateUserExamStartDate(userExamNotEnded.Item3.Id, userExamNotEnded.Item2.TimeInMinutes * -2);

            await client.PostUserExamResultSucessfully($"/userexamresults/{userExamNotEnded.Item3.Id}");

            //get existing one
            await client.PostUserExamResultSucessfully($"/userexamresults/{userExamNotEnded.Item3.Id}");

            client.Authorize(userExam1.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam1.Item3.Id, false, false);

            //other users
            client.Authorize(userExam2.Item1.Token);
            await client.PostNotFound($"/userexamresults/{userExam2.Item3.Id}");

            client.Authorize(userExam2.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam2.Item3.Id, false, true);

            client.Authorize(userExam3.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam3.Item3.Id, true, false);

            client.Authorize(userExam4.Item1.Token);
            await testHelper.TakeExamAndAssertResult(httpCallHelper, userExam4.Item3.Id, true, true);
        }
コード例 #3
0
        public static async Task <UserQuestionAnswerData> CreateData(System.Net.Http.HttpClient client)
        {
            var httpCallHelper = new HttpCallHelper(client);
            var user           = new UserQuestionAnswerData();
            var userData       = await httpCallHelper.CreateUserExam();

            user.User     = userData.Item1;
            user.Exam     = userData.Item2;
            user.UserExam = userData.Item3;

            var questions = await httpCallHelper.GetQuestions(userData.Item2.Id);

            user.Questions     = questions.Questions;
            user.QuestionCount = questions.QuestionCount;

            user.RadioQuestion1    = questions.Questions.Where(e => e.QuestionTypeId == SeedData.QuestionTypes.Radio.Id).First();
            user.RadioQuestion2    = questions.Questions.Where(e => e.QuestionTypeId == SeedData.QuestionTypes.Radio.Id && e.Id != user.RadioQuestion1.Id).First();
            user.CheckboxQuestion1 = questions.Questions.Where(e => e.QuestionTypeId == SeedData.QuestionTypes.Checkbox.Id).First();
            user.CheckboxQuestion2 = questions.Questions.Where(e => e.QuestionTypeId == SeedData.QuestionTypes.Checkbox.Id && e.Id != user.CheckboxQuestion1.Id).First();

            user.RadioQuestion1Answer = new UserExamQuestionAnswerData()
            {
                UserExamId = userData.Item3.Id, QuestionId = user.RadioQuestion1.Id
            };
            user.RadioQuestion2Answer = new UserExamQuestionAnswerData()
            {
                UserExamId = userData.Item3.Id, QuestionId = user.RadioQuestion2.Id
            };
            user.CheckboxQuestion1Answer = new UserExamQuestionAnswerData()
            {
                UserExamId = userData.Item3.Id, QuestionId = user.CheckboxQuestion1.Id
            };
            user.CheckboxQuestion2Answer = new UserExamQuestionAnswerData()
            {
                UserExamId = userData.Item3.Id, QuestionId = user.CheckboxQuestion2.Id
            };

            user.RadioQuestion1AnswerIds    = user.RadioQuestion1.AnswerOptions.Select(e => e.Id).ToArray();
            user.RadioQuestion2AnswerIds    = user.RadioQuestion2.AnswerOptions.Select(e => e.Id).ToArray();
            user.CheckboxQuestion1AnswerIds = user.CheckboxQuestion1.AnswerOptions.Select(e => e.Id).ToArray();
            user.CheckboxQuestion2AnswerIds = user.CheckboxQuestion2.AnswerOptions.Select(e => e.Id).ToArray();
            return(user);
        }
コード例 #4
0
        private async Task CreateUserExams()
        {
            var httpCallHelper = new HttpCallHelper(client);

            this.User1PublicUserExam = await httpCallHelper.CreateUserExam();

            this.User1PublicUserExam2 = await httpCallHelper.CreateUserExam(loggedUser : User1PublicUserExam.Item1);

            this.User1PrivateUserExam = await httpCallHelper.CreateUserExam(loggedUser : User1PublicUserExam.Item1, isPrivate : true);

            this.User2PublicUserExam = await httpCallHelper.CreateUserExam();

            this.User2PublicUserExam2 = await httpCallHelper.CreateUserExam(loggedUser : User2PublicUserExam.Item1);

            this.User2PrivateUserExam = await httpCallHelper.CreateUserExam(loggedUser : User2PublicUserExam.Item1, isPrivate : true);
        }
コード例 #5
0
        public async void UserExamListTests()
        {
            var client         = httpClientFactory.CreateClient();
            var httpCallHelper = new HttpCallHelper(client);
            var user1          = (await httpCallHelper.CreateUserExam()).Item1;
            var user2          = (await httpCallHelper.CreateUserExam()).Item1;

            for (int i = 0; i < 3; i++)
            {
                await httpCallHelper.CreateUserExam(loggedUser : user1);

                await httpCallHelper.CreateUserExam(loggedUser : user2);

                await httpCallHelper.CreateUserExam(loggedUser : user1, isPrivate : true);

                await httpCallHelper.CreateUserExam(loggedUser : user2, isPrivate : true);

                //ended
                var userExamId = (await httpCallHelper.CreateUserExam(loggedUser: user1)).Item3.Id;
                client.Authorize(user1.Token);
                await httpCallHelper.EndUserExam(userExamId);

                userExamId = (await httpCallHelper.CreateUserExam(loggedUser: user1, isPrivate: true)).Item3.Id;
                client.Authorize(user1.Token);
                await httpCallHelper.EndUserExam(userExamId);

                userExamId = (await httpCallHelper.CreateUserExam(loggedUser: user2)).Item3.Id;
                client.Authorize(user2.Token);
                await httpCallHelper.EndUserExam(userExamId);

                userExamId = (await httpCallHelper.CreateUserExam(loggedUser: user2, isPrivate: true)).Item3.Id;
                client.Authorize(user2.Token);
                await httpCallHelper.EndUserExam(userExamId);
            }

            client.Unauthorize();

            var link             = "/userexams";
            var linkIncludeExams = "/userexams?includeExams=true";
            await client.GetUnauthorized(link);

            client.Authorize(user1.Token);

            var envelope = await client.GetUserExamsEnvelopeSuccesfully(link);

            Assert.Equal(envelope.UserExamCount, envelope.UserExams.Count());
            Assert.Equal(13, envelope.UserExamCount);
            foreach (var userExam in envelope.UserExams)
            {
                Assert.Null(userExam.Exam);
                Assert.Equal(userExam.UserId, user1.Id);
            }

            client.Authorize(user2.Token);

            envelope = await client.GetUserExamsEnvelopeSuccesfully(link);

            Assert.Equal(envelope.UserExamCount, envelope.UserExams.Count());
            Assert.Equal(13, envelope.UserExamCount);
            foreach (var userExam in envelope.UserExams)
            {
                Assert.Null(userExam.Exam);
                Assert.Equal(userExam.UserId, user2.Id);
            }
            envelope = await client.GetUserExamsEnvelopeSuccesfully(linkIncludeExams);

            Assert.Equal(envelope.UserExamCount, envelope.UserExams.Count());
            Assert.Equal(13, envelope.UserExamCount);
            foreach (var userExam in envelope.UserExams)
            {
                Assert.NotNull(userExam.Exam);
                Assert.Equal(userExam.UserId, user2.Id);
            }
            var limitOffsetTester = new LimitOffsetTester(client, link);
            await limitOffsetTester.DoTest(GetUserExams);
        }
コード例 #6
0
        public async void QuestionAnswerCreateOrUpdateTests()
        {
            var client = httpClientFactory.CreateClient();

            var data            = new QuestionAnswerTestData(client);
            var httpCallHelper  = new HttpCallHelper(client);
            var dbContextHelper = new DbContextHelper(this.dbContextFactory);

            client.Unauthorize();

            var request = data.User1.CreateRadioQuestion1AnswerRequest();
            await client.PostUnauthorized(link, request);

            client.Authorize(data.User1.User.Token);

            //UserExamNotFoundException 1 non existing
            request = data.NonExistingRequest;
            var problem = await client.PostNotFound(link, request);

            //UserExamNotFoundException different user
            request = data.User2.CreateRadioQuestion1AnswerRequest();
            problem = await client.PostNotFound(link, request);

            //UserExamAlreadyEndedException 1 really ended
            client.Authorize(data.User3.User.Token);
            await httpCallHelper.EndUserExam(data.User3.UserExam.Id);

            request = data.User3.CreateRadioQuestion1AnswerRequest();
            problem = await client.PostBadRequest(link, request);

            //UserExamAlreadyEndedException 2 time is too late
            client.Authorize(data.User4.User.Token);
            await dbContextHelper.UpdateUserExamStartDate(data.User4.UserExam.Id, data.User4.Exam.TimeInMinutes * -1);

            request = data.User4.CreateRadioQuestion1AnswerRequest();
            problem = await client.PostBadRequest(link, request);

            var userExam = await dbContextHelper.SelectUserExamAsync(data.User4.UserExam.Id);

            Assert.NotNull(userExam.EndedAt);

            //QuestionNotFoundException 1 none existing question
            client.Authorize(data.User1.User.Token);
            request = data.User1.CreateRadioQuestion1AnswerRequest();
            request.UserExamQuestionAnswer.QuestionId = int.MaxValue;
            problem = await client.PostNotFound(link, request);

            //QuestionNotFoundException question of another exam
            request = data.User1.CreateRadioQuestion1AnswerRequest();
            var userExamDTO = (await httpCallHelper.CreateUserExam(loggedUser: data.User1.User)).Item3;

            client.Authorize(data.User1.User.Token);
            request.UserExamQuestionAnswer.UserExamId = userExamDTO.Id;
            problem = await client.PostNotFound(link, request);

            //AnswerToRadioQuestionFormatException send multiple answerss to radio
            request = data.User1.CreateRadioQuestion1AnswerRequest();
            var answerOptionIds = new List <int>(request.UserExamQuestionAnswer.AnswerOptionIds);

            answerOptionIds.Add(data.User1.RadioQuestion1AnswerIds[0]);
            answerOptionIds.Add(data.User1.RadioQuestion1AnswerIds[1]);
            request.UserExamQuestionAnswer.AnswerOptionIds = answerOptionIds.Distinct().ToArray();
            problem = await client.PostBadRequest(link, request);

            //AnswerOptionNotFoundException
            request = data.User1.CreateRadioQuestion1AnswerRequest(answerOptionIds: new int[] { int.MaxValue });
            problem = await client.PostNotFound(link, request);

            //InvalidAnswerOptionExamException other questions answer option.
            request = data.User1.CreateRadioQuestion1AnswerRequest(answerOptionIds: new int[] { data.User2.RadioQuestion2AnswerIds.First() });
            problem = await client.PostBadRequest(link, request);

            await UserUpdateQuestionAnswersTest(data.User1, client);

            client.Authorize(data.User2.User.Token);
            await UserUpdateQuestionAnswersTest(data.User2, client);
        }