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}"); }
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); }
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); }
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); }
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); }
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); }