use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project Artemis by ls1intum.
the class ProgrammingExerciseTestService method createProgrammingExerciseForExam_DatesSet.
// TEST
public void createProgrammingExerciseForExam_DatesSet() throws Exception {
setupRepositoryMocks(examExercise, exerciseRepo, solutionRepo, testRepo, auxRepo);
ExerciseGroup exerciseGroup = examExercise.getExerciseGroup();
mockDelegate.mockConnectorRequestsForSetup(examExercise, false);
ZonedDateTime someMoment = ZonedDateTime.of(2000, 06, 15, 0, 0, 0, 0, ZoneId.of("Z"));
examExercise.setDueDate(someMoment);
request.postWithResponseBody(ROOT + SETUP, examExercise, ProgrammingExercise.class, HttpStatus.BAD_REQUEST);
assertThat(exerciseGroup.getExercises()).doesNotContain(examExercise);
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project Artemis by ls1intum.
the class ExamQuizServiceTest method evaluateQuiz.
@Test
@WithMockUser(username = "instructor1", roles = "INSTRUCTOR")
public void evaluateQuiz() 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++) {
database.changeUser("student" + (i + 1));
QuizSubmission quizSubmission = database.generateSubmissionForThreeQuestions(quizExercise, i + 1, true, ZonedDateTime.now());
request.put("/api/exercises/" + quizExercise.getId() + "/submissions/exam", quizSubmission, HttpStatus.OK);
}
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 addNewTextExerciseToExerciseGroup.
private TextExercise addNewTextExerciseToExerciseGroup(ExerciseGroup exerciseGroup, Long id, Double maxPoints, Double maxBonusPoints, IncludedInOverallScore includedInOverallScore) {
TextExercise includedTextExercise = new TextExercise();
includedTextExercise.setId(id);
includedTextExercise.setMaxPoints(maxPoints);
includedTextExercise.setBonusPoints(maxBonusPoints);
includedTextExercise.setIncludedInOverallScore(includedInOverallScore);
includedTextExercise.setExerciseGroup(exerciseGroup);
return includedTextExercise;
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project Artemis by ls1intum.
the class ExamService method getAllProgrammingExercisesForExam.
private Set<ProgrammingExercise> getAllProgrammingExercisesForExam(Long examId) {
var exam = examRepository.findWithExerciseGroupsAndExercisesById(examId).orElseThrow(() -> new EntityNotFoundException("Exam", examId));
// Collect all programming exercises for the given exam
Set<ProgrammingExercise> programmingExercises = new HashSet<>();
for (ExerciseGroup exerciseGroup : exam.getExerciseGroups()) {
for (Exercise exercise : exerciseGroup.getExercises()) {
if (exercise instanceof ProgrammingExercise) {
programmingExercises.add((ProgrammingExercise) exercise);
}
}
}
return programmingExercises;
}
use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project Artemis by ls1intum.
the class ExamService method findByIdWithExerciseGroupsAndExercisesElseThrow.
/**
* Get one exam by id with exercise groups and exercises.
* Also fetches the template and solution participation for programming exercises and questions for quiz exercises.
*
* @param examId the id of the entity
* @return the exam with exercise groups
*/
@NotNull
public Exam findByIdWithExerciseGroupsAndExercisesElseThrow(Long examId) {
log.debug("Request to get exam with exercise groups : {}", examId);
Exam exam = examRepository.findWithExerciseGroupsAndExercisesById(examId).orElseThrow(() -> new EntityNotFoundException("Exam", examId));
for (ExerciseGroup exerciseGroup : exam.getExerciseGroups()) {
for (Exercise exercise : exerciseGroup.getExercises()) {
if (exercise instanceof ProgrammingExercise) {
ProgrammingExercise exerciseWithTemplateAndSolutionParticipation = programmingExerciseRepository.findByIdWithTemplateAndSolutionParticipationWithResultsElseThrow(exercise.getId());
((ProgrammingExercise) exercise).setTemplateParticipation(exerciseWithTemplateAndSolutionParticipation.getTemplateParticipation());
((ProgrammingExercise) exercise).setSolutionParticipation(exerciseWithTemplateAndSolutionParticipation.getSolutionParticipation());
}
if (exercise instanceof QuizExercise) {
QuizExercise quizExercise = quizExerciseRepository.findByIdWithQuestionsElseThrow(exercise.getId());
((QuizExercise) exercise).setQuizQuestions(quizExercise.getQuizQuestions());
}
}
}
return exam;
}
Aggregations