Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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);
        }