use of de.tum.in.www1.artemis.domain.enumeration.AssessmentType in project Artemis by ls1intum.
the class ProgrammingExerciseTestCaseServiceTest method shouldAllowTestCaseWeightSumZeroManualAssessment.
@ParameterizedTest(name = "{displayName} [{index}] {argumentsWithNames}")
@EnumSource(AssessmentType.class)
@WithMockUser(username = "instructor1", roles = "INSTRUCTOR")
public void shouldAllowTestCaseWeightSumZeroManualAssessment(AssessmentType assessmentType) throws Exception {
// for non-automatic exercises the update succeeds and triggers an update
if (assessmentType != AssessmentType.AUTOMATIC) {
bambooRequestMockProvider.mockTriggerBuild(programmingExercise.getSolutionParticipation());
bambooRequestMockProvider.mockTriggerBuild(programmingExercise.getTemplateParticipation());
}
programmingExercise.setAssessmentType(assessmentType);
programmingExerciseRepository.save(programmingExercise);
List<Feedback> feedbacks = new ArrayList<>();
feedbacks.add(new Feedback().text("test1"));
feedbacks.add(new Feedback().text("test2"));
feedbacks.add(new Feedback().text("test3"));
testCaseService.generateTestCasesFromFeedbacks(feedbacks, programmingExercise);
Set<ProgrammingExerciseTestCase> testCases = testCaseRepository.findByExerciseId(programmingExercise.getId());
Set<ProgrammingExerciseTestCaseDTO> testCaseDTOs = testCases.stream().map(testCase -> {
final ProgrammingExerciseTestCaseDTO testCaseDTO = new ProgrammingExerciseTestCaseDTO();
testCaseDTO.setId(testCase.getId());
testCaseDTO.setBonusMultiplier(testCase.getBonusMultiplier());
testCaseDTO.setBonusPoints(testCase.getBonusPoints());
testCaseDTO.setVisibility(testCase.getVisibility());
testCaseDTO.setWeight(0.0);
return testCaseDTO;
}).collect(Collectors.toSet());
if (assessmentType == AssessmentType.AUTOMATIC) {
assertThatThrownBy(() -> testCaseService.update(programmingExercise.getId(), testCaseDTOs)).isInstanceOf(BadRequestAlertException.class).hasMessageContaining("The sum of all test case weights is 0 or below.");
} else {
Set<ProgrammingExerciseTestCase> updated = testCaseService.update(programmingExercise.getId(), testCaseDTOs);
assertThat(updated).hasSize(3);
assertThat(updated).allMatch(testCase -> testCase.getWeight() == 0.0);
}
}
use of de.tum.in.www1.artemis.domain.enumeration.AssessmentType in project Artemis by ls1intum.
the class AssessmentService method cancelAssessmentOfSubmission.
/**
* Cancel an assessment of a given submission for the current user, i.e. delete the corresponding result / release the lock. Then the submission is available for assessment
* again.
*
* @param submission the submission for which the current assessment should be canceled
*/
// NOTE: As we use delete methods with underscores, we need a transactional context here!
@Transactional
public void cancelAssessmentOfSubmission(Submission submission) {
StudentParticipation participation = studentParticipationRepository.findWithEagerResultsById(submission.getParticipation().getId()).orElseThrow(() -> new BadRequestAlertException("Participation could not be found", "participation", "notfound"));
// cancel is only possible for the latest result.
Result result = submission.getLatestResult();
// We only want to be able to cancel a result if it is not of the AUTOMATIC AssessmentType
if (result != null && result.getAssessmentType() != null && result.getAssessmentType() != AssessmentType.AUTOMATIC) {
participation.removeResult(result);
feedbackRepository.deleteByResult_Id(result.getId());
resultRepository.deleteById(result.getId());
}
}
use of de.tum.in.www1.artemis.domain.enumeration.AssessmentType in project Artemis by ls1intum.
the class SubmissionIntegrationTest method addMultipleResultsToOneSubmissionSavedSequentially.
@Test
public void addMultipleResultsToOneSubmissionSavedSequentially() {
AssessmentType assessmentType = AssessmentType.MANUAL;
Submission submission = new TextSubmission();
submission = submissionRepository.save(submission);
Result result1 = new Result().assessmentType(assessmentType).resultString("x points of y").score(100D).rated(true);
result1 = resultRepository.save(result1);
result1.setSubmission(submission);
submission.addResult(result1);
submission = submissionRepository.save(submission);
Result result2 = new Result().assessmentType(assessmentType).resultString("x points of y 2").score(200D).rated(true);
result2 = resultRepository.save(result2);
result2.setSubmission(submission);
submission.addResult(result2);
submission = submissionRepository.save(submission);
submission = submissionRepository.findWithEagerResultsAndAssessorById(submission.getId()).orElseThrow();
assert submission.getResults() != null;
assertThat(submission.getResults()).hasSize(2);
assertThat(submission.getFirstResult()).isNotEqualTo(submission.getLatestResult());
assertThat(submission.getFirstResult()).isEqualTo(result1);
assertThat(submission.getLatestResult()).isEqualTo(result2);
}
use of de.tum.in.www1.artemis.domain.enumeration.AssessmentType in project Artemis by ls1intum.
the class SubmissionIntegrationTest method addMultipleResultsToOneSubmission.
@Test
public void addMultipleResultsToOneSubmission() {
AssessmentType assessmentType = AssessmentType.MANUAL;
Submission submission = new TextSubmission();
submission = submissionRepository.save(submission);
Result result1 = new Result().assessmentType(assessmentType).resultString("x points of y").score(100D).rated(true);
result1 = resultRepository.save(result1);
result1.setSubmission(submission);
Result result2 = new Result().assessmentType(assessmentType).resultString("x points of y 2").score(200D).rated(true);
result2 = resultRepository.save(result2);
result2.setSubmission(submission);
submission.addResult(result1);
submission.addResult(result2);
var savedSubmission = submissionRepository.save(submission);
submission = submissionRepository.findWithEagerResultsAndAssessorById(savedSubmission.getId()).orElseThrow();
assert submission.getResults() != null;
assertThat(submission.getResults()).hasSize(2);
assertThat(submission.getFirstResult()).isNotEqualTo(submission.getLatestResult());
assertThat(submission.getFirstResult()).isEqualTo(result1);
assertThat(submission.getLatestResult()).isEqualTo(result2);
}
use of de.tum.in.www1.artemis.domain.enumeration.AssessmentType in project Artemis by ls1intum.
the class SubmissionIntegrationTest method updateMultipleResultsFromOneSubmission.
@Test
public void updateMultipleResultsFromOneSubmission() {
AssessmentType assessmentType = AssessmentType.MANUAL;
Submission submission = new TextSubmission();
submission = submissionRepository.save(submission);
Result result1 = new Result().assessmentType(assessmentType).resultString("Points 1").score(100D).rated(true);
result1 = resultRepository.save(result1);
result1.setSubmission(submission);
submission.addResult(result1);
submission = submissionRepository.save(submission);
Result result2 = new Result().assessmentType(assessmentType).resultString("Points 2").score(200D).rated(true);
result2 = resultRepository.save(result2);
result2.setSubmission(submission);
submission.addResult(result2);
submission = submissionRepository.save(submission);
result1.setResultString("New Result #1");
result1 = resultRepository.save(result1);
result2.setResultString("New Result #2");
result2 = resultRepository.save(result2);
submission = submissionRepository.findWithEagerResultsAndAssessorById(submission.getId()).orElseThrow();
assert submission.getResults() != null;
assertThat(submission.getResults()).hasSize(2);
assertThat(submission.getFirstResult()).isNotEqualTo(submission.getLatestResult());
assertThat(submission.getFirstResult()).isEqualTo(result1);
assertThat(submission.getLatestResult()).isEqualTo(result2);
}
Aggregations