use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.
the class ModelingExerciseIntegrationTest method importModelingExerciseFromExamToCourse.
@Test
@WithMockUser(username = "instructor1", roles = "INSTRUCTOR")
public void importModelingExerciseFromExamToCourse() throws Exception {
ExerciseGroup exerciseGroup1 = database.addExerciseGroupWithExamAndCourse(true);
ModelingExercise modelingExercise = ModelFactory.generateModelingExerciseForExam(DiagramType.ClassDiagram, exerciseGroup1);
Course course1 = database.addEmptyCourse();
modelingExerciseRepository.save(modelingExercise);
modelingExercise.setCourse(course1);
modelingExercise.setExerciseGroup(null);
request.postWithResponseBody("/api/modeling-exercises/import/" + modelingExercise.getId(), modelingExercise, ModelingExercise.class, HttpStatus.CREATED);
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.
the class ExerciseTest method getExamViaExerciseGroupOrCourseMember_withExamExercise.
@Test
public void getExamViaExerciseGroupOrCourseMember_withExamExercise() {
Exercise examExercise = mock(Exercise.class, CALLS_REAL_METHODS);
when(examExercise.isExamExercise()).thenReturn(true);
when(examExercise.getExerciseGroup()).thenReturn(exerciseGroup);
when(exerciseGroup.getExam()).thenReturn(exam);
Exam result = examExercise.getExamViaExerciseGroupOrCourseMember();
assertThat(result).isEqualTo(exam);
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.
the class ExamQuizServiceTest method evaluateQuizWithNoSubmissions.
@Test
@WithMockUser(username = "instructor1", roles = "INSTRUCTOR")
public void evaluateQuizWithNoSubmissions() throws Exception {
for (int i = 0; i < numberOfParticipants; i++) {
exam.addRegisteredUser(users.get(i));
}
exam = examRepository.save(exam);
exerciseGroup.setExam(exam);
exerciseGroup = exerciseGroupRepository.save(exerciseGroup);
exam.setExerciseGroups(List.of(exerciseGroup));
quizExercise.setExerciseGroup(exerciseGroup);
quizExercise = quizExerciseService.save(quizExercise);
exerciseGroup.setExercises(Set.of(quizExercise));
assertThat(studentExamRepository.generateStudentExams(exam)).hasSize(numberOfParticipants);
assertThat(studentExamRepository.findByExamId(exam.getId())).hasSize(numberOfParticipants);
// add participations with no submissions
for (int i = 0; i < numberOfParticipants; i++) {
final var user = database.getUserByLogin("student" + (i + 1));
var participation = new StudentParticipation();
participation.setExercise(quizExercise);
participation.setParticipant(user);
participation.setInitializationDate(ZonedDateTime.now());
participation.setInitializationState(InitializationState.INITIALIZED);
studentParticipationRepository.save(participation);
}
database.changeUser("instructor1");
// All exams should be over before evaluation
for (StudentExam studentExam : studentExamRepository.findByExamId(exam.getId())) {
studentExam.setWorkingTime(0);
studentExamRepository.save(studentExam);
}
Integer numberOfEvaluatedExercises = request.postWithResponseBody("/api/courses/" + course.getId() + "/exams/" + exam.getId() + "/student-exams/evaluate-quiz-exercises", Optional.empty(), Integer.class, HttpStatus.OK);
assertThat(numberOfEvaluatedExercises).isEqualTo(1);
studentExamRepository.deleteAll();
// Make sure delete also works if so many objects have been created before
request.delete("/api/courses/" + course.getId() + "/exams/" + exam.getId(), HttpStatus.OK);
userRepository.deleteAll();
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.
the class ExamQuizServiceTest method evaluateQuizWithMultipleSubmissions.
@Test
@WithMockUser(username = "instructor1", roles = "INSTRUCTOR")
public void evaluateQuizWithMultipleSubmissions() throws Exception {
for (int i = 0; i < numberOfParticipants; i++) {
exam.addRegisteredUser(users.get(i));
}
exam = examRepository.save(exam);
exerciseGroup.setExam(exam);
exerciseGroup = exerciseGroupRepository.save(exerciseGroup);
exam.setExerciseGroups(List.of(exerciseGroup));
quizExercise.setExerciseGroup(exerciseGroup);
quizExercise = quizExerciseService.save(quizExercise);
exerciseGroup.setExercises(Set.of(quizExercise));
assertThat(studentExamRepository.generateStudentExams(exam)).hasSize(numberOfParticipants);
assertThat(studentExamRepository.findByExamId(exam.getId())).hasSize(numberOfParticipants);
assertThat(studentExamService.startExercises(exam.getId())).isEqualTo(numberOfParticipants);
for (int i = 0; i < numberOfParticipants; i++) {
final var user = database.getUserByLogin("student" + (i + 1));
database.changeUser(user.getLogin());
QuizSubmission quizSubmission = database.generateSubmissionForThreeQuestions(quizExercise, i + 1, true, ZonedDateTime.now());
request.put("/api/exercises/" + quizExercise.getId() + "/submissions/exam", quizSubmission, HttpStatus.OK);
// add another submission manually to trigger multiple submission branch of evaluateQuizSubmission
final var studentParticipation = studentParticipationRepository.findWithEagerLegalSubmissionsByExerciseIdAndStudentLogin(quizExercise.getId(), user.getLogin()).get();
QuizSubmission quizSubmission2 = database.generateSubmissionForThreeQuestions(quizExercise, i + 1, true, ZonedDateTime.now());
quizSubmission2.setParticipation(studentParticipation);
quizSubmissionRepository.save(quizSubmission2);
}
database.changeUser("instructor1");
// All exams should be over before evaluation
for (StudentExam studentExam : studentExamRepository.findByExamId(exam.getId())) {
studentExam.setWorkingTime(0);
studentExamRepository.save(studentExam);
}
Integer numberOfEvaluatedExercises = request.postWithResponseBody("/api/courses/" + course.getId() + "/exams/" + exam.getId() + "/student-exams/evaluate-quiz-exercises", Optional.empty(), Integer.class, HttpStatus.OK);
assertThat(numberOfEvaluatedExercises).isEqualTo(1);
checkStatistics(quizExercise);
studentExamRepository.deleteAll();
// Make sure delete also works if so many objects have been created before
request.delete("/api/courses/" + course.getId() + "/exams/" + exam.getId(), HttpStatus.OK);
userRepository.deleteAll();
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.
the class ExamServiceTest method validateForStudentExamGeneration_differentBonusInExerciseGroup_shouldThrowException.
@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void validateForStudentExamGeneration_differentBonusInExerciseGroup_shouldThrowException() {
Exam exam = createExam(1, 1L, 10);
ExerciseGroup exerciseGroup = addExerciseGroupToExam(exam, 1L, true);
TextExercise exercise1 = addNewTextExerciseToExerciseGroup(exerciseGroup, 1L, 5.0, 5.0, IncludedInOverallScore.INCLUDED_COMPLETELY);
TextExercise exercise2 = addNewTextExerciseToExerciseGroup(exerciseGroup, 2L, 5.0, 4.0, IncludedInOverallScore.INCLUDED_COMPLETELY);
exerciseGroup.setExercises(Set.of(exercise1, exercise2));
BadRequestAlertException thrown = assertThrows(BadRequestAlertException.class, () -> examService.validateForStudentExamGeneration(exam), "Expected to throw bad request alert exception, but it didn't");
assertTrue(thrown.getMessage().contains("All exercises in an exercise group need to give the same amount of points"));
}
Aggregations