public async Task <CodeEvaluationDTO> EvaluateCodeQualityAsync(string[] sourceCode) { var payload = new CodeSubmissionDTO { SourceCode = sourceCode, LearnerId = 1 }; var request = new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(_baseUrl + "code-analysis/", request); var content = await response.Content.ReadAsStringAsync(); return(JsonConvert.DeserializeObject <CodeEvaluationDTO>(content)); }
public void Evaluates_code_quality(CodeSubmissionDTO submission, CodeEvaluationDTO expectedEvaluation) { using var scope = _factory.Services.CreateScope(); var controller = new QualityAnalysisController(_factory.Services.GetRequiredService <IMapper>(), scope.ServiceProvider.GetRequiredService <ICodeQualityAnalyzer>()); var evaluation = ((OkObjectResult)controller.Evaluate(submission).Result).Value as CodeEvaluationDTO; var actualLOs = evaluation.LearningObjects.Select(lo => lo.Id); var expectedLOs = expectedEvaluation.LearningObjects.Select(lo => lo.Id); actualLOs.Count().ShouldBe(expectedLOs.Count()); actualLOs.All(expectedLOs.Contains).ShouldBeTrue(); var actualAffectedSnippets = evaluation.CodeSnippetIssueAdvice.Keys.ToList(); var expectedAffectedSnippets = expectedEvaluation.CodeSnippetIssueAdvice.Keys.ToList(); actualAffectedSnippets.Count().ShouldBe(expectedAffectedSnippets.Count()); actualAffectedSnippets.All(expectedAffectedSnippets.Contains).ShouldBeTrue(); }
public ActionResult <CodeEvaluationDTO> Evaluate([FromBody] CodeSubmissionDTO codeSubmission) { var evaluation = _qualityAnalyzerService.EvaluateCode(_mapper.Map <CodeSubmission>(codeSubmission)); return(Ok(_mapper.Map <CodeEvaluationDTO>(evaluation))); }