From 07e3972c8be294048fa6a59d9506328a908efe12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20St=C3=B6hr?= Date: Tue, 13 Aug 2024 00:38:15 +0200 Subject: [PATCH] Fix existing tests --- .../FileUploadExerciseRepository.java | 2 +- .../artemis/repository/LectureRepository.java | 2 +- .../ModelingExerciseRepository.java | 2 +- .../ProgrammingExerciseRepository.java | 4 +- .../repository/QuizExerciseRepository.java | 2 +- .../repository/TextExerciseRepository.java | 2 +- .../LearningObjectImportService.java | 8 ++++ ...CompetencyPrerequisiteIntegrationTest.java | 43 +++++++++++-------- .../competency/CompetencyIntegrationTest.java | 25 +++++------ .../CourseCompetencyIntegrationTest.java | 21 +++++---- .../PrerequisiteIntegrationTest.java | 25 +++++------ 11 files changed, 80 insertions(+), 56 deletions(-) diff --git a/src/main/java/de/tum/in/www1/artemis/repository/FileUploadExerciseRepository.java b/src/main/java/de/tum/in/www1/artemis/repository/FileUploadExerciseRepository.java index a58dc3727f53..a942a2bce626 100644 --- a/src/main/java/de/tum/in/www1/artemis/repository/FileUploadExerciseRepository.java +++ b/src/main/java/de/tum/in/www1/artemis/repository/FileUploadExerciseRepository.java @@ -38,7 +38,7 @@ public interface FileUploadExerciseRepository extends ArtemisJpaRepository findWithEagerTeamAssignmentConfigAndCategoriesAndCompetenciesById(Long exerciseId); - Optional findByTitleAndCourseId(@Param("title") String title, @Param("courseId") long courseId); + Optional findByTitleAndCourseId(String title, long courseId); @NotNull default FileUploadExercise findWithEagerCompetenciesByIdElseThrow(Long exerciseId) { diff --git a/src/main/java/de/tum/in/www1/artemis/repository/LectureRepository.java b/src/main/java/de/tum/in/www1/artemis/repository/LectureRepository.java index 170e024201db..b1cf7ff7597d 100644 --- a/src/main/java/de/tum/in/www1/artemis/repository/LectureRepository.java +++ b/src/main/java/de/tum/in/www1/artemis/repository/LectureRepository.java @@ -100,7 +100,7 @@ public interface LectureRepository extends ArtemisJpaRepository { """) Optional findByIdWithLectureUnitsAndSlidesAndAttachments(@Param("lectureId") long lectureId); - Optional findByTitleAndCourseId(@Param("title") String title, @Param("courseId") Long courseId); + Optional findByTitleAndCourseId(String title, long courseId); @SuppressWarnings("PMD.MethodNamingConventions") Page findByTitleIgnoreCaseContainingOrCourse_TitleIgnoreCaseContaining(String partialTitle, String partialCourseTitle, Pageable pageable); diff --git a/src/main/java/de/tum/in/www1/artemis/repository/ModelingExerciseRepository.java b/src/main/java/de/tum/in/www1/artemis/repository/ModelingExerciseRepository.java index d1049d980c0d..c8400439d6cb 100644 --- a/src/main/java/de/tum/in/www1/artemis/repository/ModelingExerciseRepository.java +++ b/src/main/java/de/tum/in/www1/artemis/repository/ModelingExerciseRepository.java @@ -94,7 +94,7 @@ public interface ModelingExerciseRepository extends ArtemisJpaRepository findWithStudentParticipationsSubmissionsResultsById(Long exerciseId); - Optional findByTitleAndCourseId(@Param("title") String title, @Param("courseId") long courseId); + Optional findByTitleAndCourseId(String title, long courseId); @NotNull default ModelingExercise findWithEagerExampleSubmissionsAndCompetenciesByIdElseThrow(long exerciseId) { diff --git a/src/main/java/de/tum/in/www1/artemis/repository/ProgrammingExerciseRepository.java b/src/main/java/de/tum/in/www1/artemis/repository/ProgrammingExerciseRepository.java index 862344c68cb2..6bce01577e70 100644 --- a/src/main/java/de/tum/in/www1/artemis/repository/ProgrammingExerciseRepository.java +++ b/src/main/java/de/tum/in/www1/artemis/repository/ProgrammingExerciseRepository.java @@ -496,9 +496,9 @@ SELECT COUNT (DISTINCT p) """) Optional findByIdWithGradingCriteria(@Param("exerciseId") long exerciseId); - Optional findByTitleAndCourseId(@Param("title") String title, @Param("courseId") long courseId); + Optional findByTitleAndCourseId(String title, long courseId); - Optional findByShortNameAndCourseId(@Param("shortName") String shortName, @Param("courseId") long courseId); + Optional findByShortNameAndCourseId(String shortName, long courseId); default ProgrammingExercise findByIdWithGradingCriteriaElseThrow(long exerciseId) { return getValueElseThrow(findByIdWithGradingCriteria(exerciseId), exerciseId); diff --git a/src/main/java/de/tum/in/www1/artemis/repository/QuizExerciseRepository.java b/src/main/java/de/tum/in/www1/artemis/repository/QuizExerciseRepository.java index 1010db450898..c53e91f2ce1d 100644 --- a/src/main/java/de/tum/in/www1/artemis/repository/QuizExerciseRepository.java +++ b/src/main/java/de/tum/in/www1/artemis/repository/QuizExerciseRepository.java @@ -81,7 +81,7 @@ public interface QuizExerciseRepository extends ArtemisJpaRepository findWithEagerBatchesById(Long quizExerciseId); - Optional findByTitleAndCourseId(@Param("title") String title, @Param("courseId") long courseId); + Optional findByTitleAndCourseId(String title, long courseId); @NotNull default QuizExercise findWithEagerBatchesByIdOrElseThrow(Long quizExerciseId) { diff --git a/src/main/java/de/tum/in/www1/artemis/repository/TextExerciseRepository.java b/src/main/java/de/tum/in/www1/artemis/repository/TextExerciseRepository.java index 4547e6ec6adf..f1021f0e5d85 100644 --- a/src/main/java/de/tum/in/www1/artemis/repository/TextExerciseRepository.java +++ b/src/main/java/de/tum/in/www1/artemis/repository/TextExerciseRepository.java @@ -62,7 +62,7 @@ public interface TextExerciseRepository extends ArtemisJpaRepository findWithGradingCriteriaById(long exerciseId); - Optional findByTitleAndCourseId(@Param("title") String title, @Param("courseId") long courseId); + Optional findByTitleAndCourseId(String title, long courseId); @NotNull default TextExercise findWithGradingCriteriaByIdElseThrow(long exerciseId) { diff --git a/src/main/java/de/tum/in/www1/artemis/service/competency/LearningObjectImportService.java b/src/main/java/de/tum/in/www1/artemis/service/competency/LearningObjectImportService.java index 71f52d1cf2da..bbaabb09a937 100644 --- a/src/main/java/de/tum/in/www1/artemis/service/competency/LearningObjectImportService.java +++ b/src/main/java/de/tum/in/www1/artemis/service/competency/LearningObjectImportService.java @@ -112,6 +112,14 @@ public LearningObjectImportService(ExerciseRepository exerciseRepository, Progra this.courseCompetencyRepository = courseCompetencyRepository; } + /** + * Imports the related learning objects from the source course competencies into the course to import into and links them to the imported competencies. + * + * @param sourceCourseCompetencies The source course competencies to import from. + * @param idToImportedCompetency A map from the source competency IDs to the imported competencies. + * @param courseToImportInto The course to import the learning objects into. + * @param importOptions The import options. + */ public void importRelatedLearningObjects(Set sourceCourseCompetencies, Map idToImportedCompetency, Course courseToImportInto, CompetencyImportOptionsDTO importOptions) { Set importedCourseCompetencies = idToImportedCompetency.values().stream().map(CompetencyWithTailRelationDTO::competency).collect(Collectors.toSet()); diff --git a/src/test/java/de/tum/in/www1/artemis/competency/AbstractCompetencyPrerequisiteIntegrationTest.java b/src/test/java/de/tum/in/www1/artemis/competency/AbstractCompetencyPrerequisiteIntegrationTest.java index b281126a34cd..3c101d21814b 100644 --- a/src/test/java/de/tum/in/www1/artemis/competency/AbstractCompetencyPrerequisiteIntegrationTest.java +++ b/src/test/java/de/tum/in/www1/artemis/competency/AbstractCompetencyPrerequisiteIntegrationTest.java @@ -6,9 +6,9 @@ import static org.mockito.Mockito.verify; import java.time.ZonedDateTime; -import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; @@ -43,6 +43,7 @@ import de.tum.in.www1.artemis.repository.LectureUnitRepository; import de.tum.in.www1.artemis.repository.PrerequisiteRepository; import de.tum.in.www1.artemis.repository.TextUnitRepository; +import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportOptionsDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportResponseDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyWithTailRelationDTO; @@ -386,11 +387,12 @@ void shouldReturnForbiddenForInstructorOfOtherCourseForCreate(CourseCompetency n createCall(course.getId(), newCompetency, HttpStatus.FORBIDDEN); } - abstract CourseCompetency importCall(long courseId, long competencyId, HttpStatus expectedStatus) throws Exception; + abstract CourseCompetency importCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception; // Test void shouldImportCompetency() throws Exception { - CourseCompetency importedCompetency = importCall(course2.getId(), competency.getId(), HttpStatus.CREATED); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(competency.getId()), Optional.empty(), false, false, false, Optional.empty(), false); + CourseCompetency importedCompetency = importCall(course2.getId(), importOptions, HttpStatus.CREATED); assertThat(courseCompetencyRepository.findById(importedCompetency.getId())).isNotEmpty(); assertThat(importedCompetency.getTitle()).isEqualTo(competency.getTitle()); @@ -405,7 +407,9 @@ void shouldImportCompetency() throws Exception { // Test void shouldReturnForbiddenForInstructorOfOtherCourseForImport() throws Exception { - importCall(course.getId(), 42, HttpStatus.FORBIDDEN); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(42L), Optional.empty(), false, false, false, Optional.empty(), false); + + importCall(course.getId(), importOptions, HttpStatus.FORBIDDEN); } abstract List createBulkCall(long courseId, List competencies, HttpStatus expectedStatus) throws Exception; @@ -451,13 +455,14 @@ void shouldReturnForbiddenForInstructorOfOtherCourseForCreateBulk() throws Excep createBulkCall(course.getId(), List.of(), HttpStatus.FORBIDDEN); } - abstract List importAllCall(long courseId, long sourceCourseId, boolean importRelations, HttpStatus expectedStatus) throws Exception; + abstract List importAllCall(long sourceCourseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception; // Test void shouldImportAllCompetencies(Function createCourseCompetencyForCourse) throws Exception { var course3 = courseUtilService.createCourse(); - var competencyDTOList = importAllCall(course.getId(), course3.getId(), false, HttpStatus.CREATED); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course3.getId()), false, false, false, Optional.empty(), false); + var competencyDTOList = importAllCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).isEmpty(); @@ -465,7 +470,8 @@ void shouldImportAllCompetencies(Function createCourse CourseCompetency tail = createCourseCompetencyForCourse.apply(course3); createRelation(tail, head, RelationType.ASSUMES); - competencyDTOList = importAllCall(course.getId(), course3.getId(), true, HttpStatus.CREATED); + importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course3.getId()), true, false, false, Optional.empty(), false); + competencyDTOList = importAllCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).hasSize(2); // assert that only one of the DTOs has the relation connected @@ -476,7 +482,8 @@ void shouldImportAllCompetencies(Function createCourse assertThat(competencyDTOList.get(1).tailRelations()).isNull(); } - competencyDTOList = importAllCall(course.getId(), course3.getId(), false, HttpStatus.CREATED); + importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course3.getId()), false, false, false, Optional.empty(), false); + competencyDTOList = importAllCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).hasSize(2); // relations should be empty when not importing them assertThat(competencyDTOList.getFirst().tailRelations()).isNull(); @@ -485,12 +492,14 @@ void shouldImportAllCompetencies(Function createCourse // Test void shouldReturnForbiddenForInstructorNotInCourse() throws Exception { - importAllCall(course.getId(), course2.getId(), false, HttpStatus.FORBIDDEN); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course2.getId()), false, false, false, Optional.empty(), false); + importAllCall(course.getId(), importOptions, HttpStatus.FORBIDDEN); } // Test void shouldReturnBadRequestForImportFromSameCourse() throws Exception { - importAllCall(course.getId(), course.getId(), false, HttpStatus.BAD_REQUEST); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course.getId()), false, false, false, Optional.empty(), false); + importAllCall(course.getId(), importOptions, HttpStatus.BAD_REQUEST); } abstract List importStandardizedCall(long courseId, List idList, HttpStatus expectedStatus) throws Exception; @@ -526,24 +535,23 @@ void shouldReturnNotFoundForNotExistingIds() throws Exception { importStandardizedCall(course.getId(), idList, HttpStatus.NOT_FOUND); } - abstract List importBulkCall(long courseId, Set competencyIds, boolean importRelations, HttpStatus expectedStatus) throws Exception; + abstract List importBulkCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception; // Test void shouldReturnForbiddenForInstructorOfOtherCourseForBulkImport() throws Exception { - importBulkCall(course.getId(), Set.of(), false, HttpStatus.FORBIDDEN); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.empty(), false, false, false, Optional.empty(), false); + importBulkCall(course.getId(), importOptions, HttpStatus.FORBIDDEN); } // Test void shouldImportCompetencies(Function createCourseCompetencyForCourse) throws Exception { - var competencyDTOList = importBulkCall(course.getId(), Collections.emptySet(), false, HttpStatus.CREATED); - assertThat(competencyDTOList).isEmpty(); - CourseCompetency head = createCourseCompetencyForCourse.apply(course2); CourseCompetency tail = createCourseCompetencyForCourse.apply(course2); createRelation(tail, head, RelationType.ASSUMES); Set competencyIds = Set.of(head.getId(), tail.getId()); - competencyDTOList = importBulkCall(course.getId(), competencyIds, true, HttpStatus.CREATED); + var importOptions = new CompetencyImportOptionsDTO(competencyIds, Optional.empty(), true, false, false, Optional.empty(), false); + var competencyDTOList = importBulkCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).hasSize(2); // competency 2 should be the tail of one relation @@ -556,7 +564,8 @@ void shouldImportCompetencies(Function createCourseCom assertThat(competencyDTOList.get(1).tailRelations()).hasSize(1); } - competencyDTOList = importBulkCall(course.getId(), competencyIds, false, HttpStatus.CREATED); + importOptions = new CompetencyImportOptionsDTO(competencyIds, Optional.empty(), false, false, false, Optional.empty(), false); + competencyDTOList = importBulkCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).hasSize(2); // relations should be empty when not importing them assertThat(competencyDTOList.getFirst().tailRelations()).isNull(); diff --git a/src/test/java/de/tum/in/www1/artemis/competency/CompetencyIntegrationTest.java b/src/test/java/de/tum/in/www1/artemis/competency/CompetencyIntegrationTest.java index c3dbd62af775..ac92ab96e49c 100644 --- a/src/test/java/de/tum/in/www1/artemis/competency/CompetencyIntegrationTest.java +++ b/src/test/java/de/tum/in/www1/artemis/competency/CompetencyIntegrationTest.java @@ -2,7 +2,6 @@ import java.util.Collections; import java.util.List; -import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -16,6 +15,7 @@ import de.tum.in.www1.artemis.domain.competency.Competency; import de.tum.in.www1.artemis.domain.competency.CourseCompetency; import de.tum.in.www1.artemis.domain.enumeration.IncludedInOverallScore; +import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportOptionsDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportResponseDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyWithTailRelationDTO; @@ -35,7 +35,8 @@ void setupTestScenario() { class PreAuthorize { private void testAllPreAuthorizeEditor() throws Exception { - request.post("/api/courses/" + course.getId() + "/competencies/import/bulk", Collections.emptyList(), HttpStatus.FORBIDDEN); + request.post("/api/courses/" + course.getId() + "/competencies/import/bulk", new CompetencyImportOptionsDTO(null, null, false, false, false, null, false), + HttpStatus.FORBIDDEN); request.post("/api/courses/" + course.getId() + "/competencies/import-standardized", Collections.emptyList(), HttpStatus.FORBIDDEN); } @@ -45,8 +46,10 @@ private void testAllPreAuthorizeInstructor() throws Exception { request.delete("/api/courses/" + course.getId() + "/competencies/" + competency.getId(), HttpStatus.FORBIDDEN); request.post("/api/courses/" + course.getId() + "/competencies/bulk", Collections.emptyList(), HttpStatus.FORBIDDEN); // import - request.post("/api/courses/" + course.getId() + "/competencies/import-all/1", null, HttpStatus.FORBIDDEN); - request.post("/api/courses/" + course.getId() + "/competencies/import", competency.getId(), HttpStatus.FORBIDDEN); + request.post("/api/courses/" + course.getId() + "/competencies/import-all", new CompetencyImportOptionsDTO(null, null, false, false, false, null, false), + HttpStatus.FORBIDDEN); + request.post("/api/courses/" + course.getId() + "/competencies/import", new CompetencyImportOptionsDTO(null, null, false, false, false, null, false), + HttpStatus.FORBIDDEN); } @Test @@ -213,8 +216,8 @@ void shouldReturnForbiddenForInstructorOfOtherCourseForCreate() throws Exception super.shouldReturnForbiddenForInstructorOfOtherCourseForCreate(new Competency()); } - CourseCompetency importCall(long courseId, long competencyId, HttpStatus expectedStatus) throws Exception { - return request.postWithResponseBody("/api/courses/" + courseId + "/competencies/import", competencyId, Competency.class, expectedStatus); + CourseCompetency importCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postWithResponseBody("/api/courses/" + courseId + "/competencies/import", importOptions, Competency.class, expectedStatus); } @Test @@ -263,9 +266,8 @@ void shouldReturnForbiddenForInstructorOfOtherCourseForCreateBulk() throws Excep super.shouldReturnForbiddenForInstructorOfOtherCourseForCreateBulk(); } - List importAllCall(long courseId, long sourceCourseId, boolean importRelations, HttpStatus expectedStatus) throws Exception { - return request.postListWithResponseBody("/api/courses/" + courseId + "/competencies/import-all/" + sourceCourseId + (importRelations ? "?importRelations=true" : ""), null, - CompetencyWithTailRelationDTO.class, expectedStatus); + List importAllCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postListWithResponseBody("/api/courses/" + courseId + "/competencies/import-all", importOptions, CompetencyWithTailRelationDTO.class, expectedStatus); } @Test @@ -302,9 +304,8 @@ void shouldReturnNotFoundForNotExistingIds() throws Exception { super.shouldReturnNotFoundForNotExistingIds(); } - List importBulkCall(long courseId, Set competencyIds, boolean importRelations, HttpStatus expectedStatus) throws Exception { - return request.postListWithResponseBody("/api/courses/" + courseId + "/competencies/import/bulk" + (importRelations ? "?importRelations=true" : ""), competencyIds, - CompetencyWithTailRelationDTO.class, expectedStatus); + List importBulkCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postListWithResponseBody("/api/courses/" + courseId + "/competencies/import/bulk", importOptions, CompetencyWithTailRelationDTO.class, expectedStatus); } @Test diff --git a/src/test/java/de/tum/in/www1/artemis/competency/CourseCompetencyIntegrationTest.java b/src/test/java/de/tum/in/www1/artemis/competency/CourseCompetencyIntegrationTest.java index 9053e3c212d8..f55f7141ecfc 100644 --- a/src/test/java/de/tum/in/www1/artemis/competency/CourseCompetencyIntegrationTest.java +++ b/src/test/java/de/tum/in/www1/artemis/competency/CourseCompetencyIntegrationTest.java @@ -7,6 +7,7 @@ import java.time.ZonedDateTime; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.stream.IntStream; import java.util.stream.Stream; @@ -70,6 +71,7 @@ import de.tum.in.www1.artemis.util.PageableSearchUtilService; import de.tum.in.www1.artemis.web.rest.dto.CourseCompetencyProgressDTO; import de.tum.in.www1.artemis.web.rest.dto.SearchResultPageDTO; +import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportOptionsDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyRelationDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyWithTailRelationDTO; @@ -498,10 +500,9 @@ void shouldGetCompetenciesAsAdmin() throws Exception { @Nested class ImportAll { - List importAllCall(long courseId, long sourceCourseId, boolean importRelations, HttpStatus expectedStatus) throws Exception { - return request.postListWithResponseBody( - "/api/courses/" + courseId + "/course-competencies/import-all/" + sourceCourseId + (importRelations ? "?importRelations=true" : ""), null, - CompetencyWithTailRelationDTO.class, expectedStatus); + List importAllCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postListWithResponseBody("/api/courses/" + courseId + "/course-competencies/import-all", importOptions, CompetencyWithTailRelationDTO.class, + expectedStatus); } @Test @@ -509,7 +510,8 @@ List importAllCall(long courseId, long sourceCour void shouldImportAllCompetencies() throws Exception { var course3 = courseUtilService.createCourse(); - var competencyDTOList = importAllCall(course.getId(), course3.getId(), false, HttpStatus.CREATED); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course3.getId()), false, false, false, Optional.empty(), false); + var competencyDTOList = importAllCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).isEmpty(); @@ -517,7 +519,8 @@ void shouldImportAllCompetencies() throws Exception { CourseCompetency tail = prerequisiteUtilService.createPrerequisite(course3); createRelation(tail, head, RelationType.ASSUMES); - competencyDTOList = importAllCall(course.getId(), course3.getId(), true, HttpStatus.CREATED); + importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course3.getId()), true, false, false, Optional.empty(), false); + competencyDTOList = importAllCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).hasSize(2); // assert that only one of the DTOs has the relation connected @@ -528,7 +531,8 @@ void shouldImportAllCompetencies() throws Exception { assertThat(competencyDTOList.get(1).tailRelations()).isNull(); } - competencyDTOList = importAllCall(course.getId(), course3.getId(), false, HttpStatus.CREATED); + importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course3.getId()), false, false, false, Optional.empty(), false); + competencyDTOList = importAllCall(course.getId(), importOptions, HttpStatus.CREATED); assertThat(competencyDTOList).hasSize(2); // relations should be empty when not importing them assertThat(competencyDTOList.getFirst().tailRelations()).isNull(); @@ -538,7 +542,8 @@ void shouldImportAllCompetencies() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "instructor1", roles = "INSTRUCTOR") void shouldReturnBadRequestForImportFromSameCourse() throws Exception { - importAllCall(course.getId(), course.getId(), false, HttpStatus.BAD_REQUEST); + CompetencyImportOptionsDTO importOptions = new CompetencyImportOptionsDTO(Set.of(), Optional.of(course.getId()), false, false, false, Optional.empty(), false); + importAllCall(course.getId(), importOptions, HttpStatus.BAD_REQUEST); } } diff --git a/src/test/java/de/tum/in/www1/artemis/competency/PrerequisiteIntegrationTest.java b/src/test/java/de/tum/in/www1/artemis/competency/PrerequisiteIntegrationTest.java index 6d840cac8d54..60b20767eb36 100644 --- a/src/test/java/de/tum/in/www1/artemis/competency/PrerequisiteIntegrationTest.java +++ b/src/test/java/de/tum/in/www1/artemis/competency/PrerequisiteIntegrationTest.java @@ -2,7 +2,6 @@ import java.util.Collections; import java.util.List; -import java.util.Set; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -16,6 +15,7 @@ import de.tum.in.www1.artemis.domain.competency.CourseCompetency; import de.tum.in.www1.artemis.domain.competency.Prerequisite; import de.tum.in.www1.artemis.domain.enumeration.IncludedInOverallScore; +import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportOptionsDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyImportResponseDTO; import de.tum.in.www1.artemis.web.rest.dto.competency.CompetencyWithTailRelationDTO; @@ -35,7 +35,8 @@ void setupTestScenario() { class PreAuthorize { private void testAllPreAuthorizeEditor() throws Exception { - request.post("/api/courses/" + course.getId() + "/prerequisites/import/bulk", Collections.emptyList(), HttpStatus.FORBIDDEN); + request.post("/api/courses/" + course.getId() + "/prerequisites/import/bulk", new CompetencyImportOptionsDTO(null, null, false, false, false, null, false), + HttpStatus.FORBIDDEN); request.post("/api/courses/" + course.getId() + "/prerequisites/import-standardized", Collections.emptyList(), HttpStatus.FORBIDDEN); } @@ -45,8 +46,10 @@ private void testAllPreAuthorizeInstructor() throws Exception { request.delete("/api/courses/" + course.getId() + "/prerequisites/" + competency.getId(), HttpStatus.FORBIDDEN); request.post("/api/courses/" + course.getId() + "/prerequisites/bulk", Collections.emptyList(), HttpStatus.FORBIDDEN); // import - request.post("/api/courses/" + course.getId() + "/prerequisites/import-all/1", null, HttpStatus.FORBIDDEN); - request.post("/api/courses/" + course.getId() + "/prerequisites/import", competency.getId(), HttpStatus.FORBIDDEN); + request.post("/api/courses/" + course.getId() + "/prerequisites/import-all", new CompetencyImportOptionsDTO(null, null, false, false, false, null, false), + HttpStatus.FORBIDDEN); + request.post("/api/courses/" + course.getId() + "/prerequisites/import", new CompetencyImportOptionsDTO(null, null, false, false, false, null, false), + HttpStatus.FORBIDDEN); } @Test @@ -213,8 +216,8 @@ void shouldReturnForbiddenForInstructorOfOtherCourseForCreate() throws Exception super.shouldReturnForbiddenForInstructorOfOtherCourseForCreate(new Prerequisite()); } - CourseCompetency importCall(long courseId, long competencyId, HttpStatus expectedStatus) throws Exception { - return request.postWithResponseBody("/api/courses/" + courseId + "/prerequisites/import", competencyId, Prerequisite.class, expectedStatus); + CourseCompetency importCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postWithResponseBody("/api/courses/" + courseId + "/prerequisites/import", importOptions, Prerequisite.class, expectedStatus); } @Test @@ -263,9 +266,8 @@ void shouldReturnForbiddenForInstructorOfOtherCourseForCreateBulk() throws Excep super.shouldReturnForbiddenForInstructorOfOtherCourseForCreateBulk(); } - List importAllCall(long courseId, long sourceCourseId, boolean importRelations, HttpStatus expectedStatus) throws Exception { - return request.postListWithResponseBody("/api/courses/" + courseId + "/prerequisites/import-all/" + sourceCourseId + (importRelations ? "?importRelations=true" : ""), null, - CompetencyWithTailRelationDTO.class, expectedStatus); + List importAllCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postListWithResponseBody("/api/courses/" + courseId + "/prerequisites/import-all", importOptions, CompetencyWithTailRelationDTO.class, expectedStatus); } @Test @@ -302,9 +304,8 @@ void shouldReturnNotFoundForNotExistingIds() throws Exception { super.shouldReturnNotFoundForNotExistingIds(); } - List importBulkCall(long courseId, Set competencyIds, boolean importRelations, HttpStatus expectedStatus) throws Exception { - return request.postListWithResponseBody("/api/courses/" + courseId + "/prerequisites/import/bulk" + (importRelations ? "?importRelations=true" : ""), competencyIds, - CompetencyWithTailRelationDTO.class, expectedStatus); + List importBulkCall(long courseId, CompetencyImportOptionsDTO importOptions, HttpStatus expectedStatus) throws Exception { + return request.postListWithResponseBody("/api/courses/" + courseId + "/prerequisites/import/bulk", importOptions, CompetencyWithTailRelationDTO.class, expectedStatus); } @Test