public async Task <IActionResult> EvaluateCodeSnippet([FromRoute] int attendeeId, [FromRoute] bool runOnlyDefault, [FromBody] TestAnswerAC testAnswer) { if (!ModelState.IsValid) { return(BadRequest()); } if (testAnswer.Code == null || testAnswer.Code.Source == "") { return(BadRequest()); } var codeResponse = testAnswer.Code.Input == null ? await _testConductRepository.ExecuteCodeSnippetAsync(attendeeId, runOnlyDefault, testAnswer) : await _testConductRepository.ExecuteCustomInputAsync(attendeeId, testAnswer); return(Ok(codeResponse)); }
public async Task ExecuteCodeSnippetAsyncTest() { var testAttendee = InitializeTestAttendeeParameters(); // Creating test var test = await CreateTestAsync(); var categoryToCreate = CreateCategory("Coding"); await _categoryRepository.AddCategoryAsync(categoryToCreate); var testCategoryAC = new List <TestCategoryAC> { new TestCategoryAC() { IsSelect = true, CategoryId = categoryToCreate.Id } }; await _testRepository.AddTestCategoriesAsync(test.Id, testCategoryAC); var codingQuestion = CreateCodingQuestion(categoryToCreate); await _questionRepository.AddCodeSnippetQuestionAsync(codingQuestion, testAttendee.Email); var questionId = (await _trappistDbContext.Question.SingleAsync(x => x.QuestionDetail == codingQuestion.Question.QuestionDetail)).Id; //Creating test questions var questionList = new List <TestQuestionAC> { new TestQuestionAC() { Id = codingQuestion.Question.Id, IsSelect = codingQuestion.Question.IsSelect, CategoryID = codingQuestion.Question.CategoryID } }; await _testRepository.AddTestQuestionsAsync(questionList, test.Id); testAttendee.Test = test; await _testConductRepository.RegisterTestAttendeesAsync(testAttendee); var attendeeId = await _trappistDbContext.TestAttendees.OrderBy(x => x.Email).Where(x => x.Email.Equals(testAttendee.Email)).Select(x => x.Id).FirstOrDefaultAsync(); var answer = new TestAnswerAC() { OptionChoice = new List <int>(), QuestionId = questionId, Code = new Code() { Input = "input", Source = "source", Language = ProgrammingLanguage.C }, QuestionStatus = QuestionStatus.unanswered }; //Mocking HttpRequest var result = new Result() { CyclicMetrics = 0, ExitCode = 0, MemoryConsumed = 1, Output = "4", RunTime = 1 }; var serializedResult = Newtonsoft.Json.JsonConvert.SerializeObject(result); _httpService.Setup(x => x.PostAsync(It.IsAny <string>(), It.IsAny <HttpContent>())).Returns(Task.FromResult(new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(serializedResult, System.Text.Encoding.UTF8, "application/json") })); //End of Mocking var codeRespone = await _testConductRepository.ExecuteCodeSnippetAsync(attendeeId, false, answer); Assert.NotNull(codeRespone); }