Search in sources :

Example 56 with ExerciseGroup

use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.

the class ExamQuizServiceTest method evaluateQuiz_twice.

@Test
@WithMockUser(username = "instructor1", roles = "INSTRUCTOR")
public void evaluateQuiz_twice() 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);
    // Evaluate quiz twice
    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();
}
Also used : StudentExam(de.tum.in.www1.artemis.domain.exam.StudentExam) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.jupiter.api.Test) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)

Example 57 with ExerciseGroup

use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.

the class ExamServiceTest method testSetExamProperties.

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void testSetExamProperties() {
    StudentParticipation studentParticipation = new StudentParticipation();
    studentParticipation.setTestRun(true);
    QuizExercise exercise = new QuizExercise();
    exercise.setStudentParticipations(Set.of(studentParticipation));
    studentParticipation.setExercise(exercise);
    exerciseGroup1.addExercise(exercise);
    exerciseRepository.save(exercise);
    studentParticipationRepository.save(studentParticipation);
    examService.setExamProperties(exam1);
    assertThat(exercise.getTestRunParticipationsExist()).isTrue();
    exam1.getExerciseGroups().forEach(exerciseGroup -> {
        exerciseGroup.getExercises().forEach(exercise1 -> {
            assertThat(exercise.getNumberOfParticipations()).isNotNull();
        });
    });
    assertThat(exam1.getNumberOfRegisteredUsers()).isNotNull();
    assertThat(exam1.getNumberOfRegisteredUsers()).isZero();
}
Also used : StudentParticipation(de.tum.in.www1.artemis.domain.participation.StudentParticipation) QuizExercise(de.tum.in.www1.artemis.domain.quiz.QuizExercise) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.jupiter.api.Test) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)

Example 58 with ExerciseGroup

use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.

the class ExamServiceTest method validateForStudentExamGeneration_differentCalculationTypesInExerciseGroup_shouldThrowException.

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void validateForStudentExamGeneration_differentCalculationTypesInExerciseGroup_shouldThrowException() {
    Exam exam = createExam(1, 1L, 10);
    ExerciseGroup exerciseGroup = addExerciseGroupToExam(exam, 1L, true);
    TextExercise includedTextExercise = addNewTextExerciseToExerciseGroup(exerciseGroup, 1L, 5.0, 5.0, IncludedInOverallScore.INCLUDED_COMPLETELY);
    TextExercise notIncludedTextExercise = addNewTextExerciseToExerciseGroup(exerciseGroup, 2L, 5.0, 5.0, IncludedInOverallScore.NOT_INCLUDED);
    exerciseGroup.setExercises(Set.of(includedTextExercise, notIncludedTextExercise));
    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 must have the same meaning for the exam score"));
}
Also used : BadRequestAlertException(de.tum.in.www1.artemis.web.rest.errors.BadRequestAlertException) TextExercise(de.tum.in.www1.artemis.domain.TextExercise) ExerciseGroup(de.tum.in.www1.artemis.domain.exam.ExerciseGroup) Exam(de.tum.in.www1.artemis.domain.exam.Exam) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.jupiter.api.Test) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)

Example 59 with ExerciseGroup

use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.

the class ExamServiceTest method validateForStudentExamGeneration_differentPointsInExerciseGroup_shouldThrowException.

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void validateForStudentExamGeneration_differentPointsInExerciseGroup_shouldThrowException() {
    Exam exam = createExam(1, 1L, 9);
    ExerciseGroup exerciseGroup = addExerciseGroupToExam(exam, 1L, true);
    TextExercise exercise1 = addNewTextExerciseToExerciseGroup(exerciseGroup, 1L, 4.0, 5.0, IncludedInOverallScore.INCLUDED_COMPLETELY);
    TextExercise exercise2 = addNewTextExerciseToExerciseGroup(exerciseGroup, 2L, 5.0, 5.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"));
}
Also used : BadRequestAlertException(de.tum.in.www1.artemis.web.rest.errors.BadRequestAlertException) TextExercise(de.tum.in.www1.artemis.domain.TextExercise) ExerciseGroup(de.tum.in.www1.artemis.domain.exam.ExerciseGroup) Exam(de.tum.in.www1.artemis.domain.exam.Exam) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.jupiter.api.Test) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)

Example 60 with ExerciseGroup

use of de.tum.in.www1.artemis.domain.exam.ExerciseGroup in project ArTEMiS by ls1intum.

the class ExamServiceTest method validateForStudentExamGeneration_tooFewPointsInExercisesGroups_shouldThrowException.

@Test
@WithMockUser(username = "admin", roles = "ADMIN")
public void validateForStudentExamGeneration_tooFewPointsInExercisesGroups_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, 5.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("Check that you set the exam max points correctly! The max points a student can earn in the exercise groups is too low"));
}
Also used : BadRequestAlertException(de.tum.in.www1.artemis.web.rest.errors.BadRequestAlertException) TextExercise(de.tum.in.www1.artemis.domain.TextExercise) ExerciseGroup(de.tum.in.www1.artemis.domain.exam.ExerciseGroup) Exam(de.tum.in.www1.artemis.domain.exam.Exam) WithMockUser(org.springframework.security.test.context.support.WithMockUser) Test(org.junit.jupiter.api.Test) AbstractSpringIntegrationBambooBitbucketJiraTest(de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)

Aggregations

ExerciseGroup (de.tum.in.www1.artemis.domain.exam.ExerciseGroup)126 WithMockUser (org.springframework.security.test.context.support.WithMockUser)76 Test (org.junit.jupiter.api.Test)70 Exam (de.tum.in.www1.artemis.domain.exam.Exam)64 StudentExam (de.tum.in.www1.artemis.domain.exam.StudentExam)46 ModelingExercise (de.tum.in.www1.artemis.domain.modeling.ModelingExercise)46 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)24 QuizExercise (de.tum.in.www1.artemis.domain.quiz.QuizExercise)22 PreAuthorize (org.springframework.security.access.prepost.PreAuthorize)22 AbstractSpringIntegrationBambooBitbucketJiraTest (de.tum.in.www1.artemis.AbstractSpringIntegrationBambooBitbucketJiraTest)20 BadRequestAlertException (de.tum.in.www1.artemis.web.rest.errors.BadRequestAlertException)20 StudentParticipation (de.tum.in.www1.artemis.domain.participation.StudentParticipation)18 EntityNotFoundException (de.tum.in.www1.artemis.web.rest.errors.EntityNotFoundException)14 TextExercise (de.tum.in.www1.artemis.domain.TextExercise)12 ZonedDateTime (java.time.ZonedDateTime)12 de.tum.in.www1.artemis.domain (de.tum.in.www1.artemis.domain)10 de.tum.in.www1.artemis.repository (de.tum.in.www1.artemis.repository)10 Collectors (java.util.stream.Collectors)10 ModelingSubmission (de.tum.in.www1.artemis.domain.modeling.ModelingSubmission)8 Participation (de.tum.in.www1.artemis.domain.participation.Participation)8