diff --git a/src/test/java/de/tum/cit/aet/artemis/atlas/architecture/AtlasTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/atlas/architecture/AtlasTestArchitectureTest.java index 96bdd6b27d58..ff479619c209 100644 --- a/src/test/java/de/tum/cit/aet/artemis/atlas/architecture/AtlasTestArchitectureTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/atlas/architecture/AtlasTestArchitectureTest.java @@ -1,9 +1,11 @@ package de.tum.cit.aet.artemis.atlas.architecture; +import java.util.Set; + import de.tum.cit.aet.artemis.atlas.AbstractAtlasIntegrationTest; import de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleTestArchitectureTest; -class AtlasTestArchitectureTest extends AbstractModuleTestArchitectureTest { +class AtlasTestArchitectureTest extends AbstractModuleTestArchitectureTest { @Override public String getModulePackage() { @@ -11,7 +13,7 @@ public String getModulePackage() { } @Override - protected Class getAbstractModuleIntegrationTestClass() { - return AbstractAtlasIntegrationTest.class; + protected Set> getAbstractModuleIntegrationTestClasses() { + return Set.of(AbstractAtlasIntegrationTest.class); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/atlas/learningpath/LearningPathIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/atlas/learningpath/LearningPathIntegrationTest.java index b217564b469f..7ec124ecc537 100644 --- a/src/test/java/de/tum/cit/aet/artemis/atlas/learningpath/LearningPathIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/atlas/learningpath/LearningPathIntegrationTest.java @@ -379,7 +379,7 @@ void testUpdateLearningPathProgress() throws Exception { * This only tests if the end point successfully retrieves the health status. The correctness of the health status is tested in LearningPathServiceTest. * * @throws Exception the request failed - * @see de.tum.cit.aet.artemis.service.LearningPathServiceTest + * @see de.tum.cit.aet.artemis.atlas.service.LearningPathServiceTest */ @Test @WithMockUser(username = INSTRUCTOR_OF_COURSE, roles = "INSTRUCTOR") @@ -468,7 +468,7 @@ void testGetLearningPathNgxForOtherStudent(LearningPathResource.NgxRequestType t * This only tests if the end point successfully retrieves the graph representation. The correctness of the response is tested in LearningPathServiceTest. * * @throws Exception the request failed - * @see de.tum.cit.aet.artemis.service.LearningPathServiceTest + * @see de.tum.cit.aet.artemis.atlas.service.LearningPathServiceTest */ @ParameterizedTest(name = "{displayName} [{index}] {argumentsWithNames}") @EnumSource(LearningPathResource.NgxRequestType.class) @@ -484,7 +484,7 @@ void testGetLearningPathNgxAsStudent(LearningPathResource.NgxRequestType type) t * This only tests if the end point successfully retrieves the graph representation. The correctness of the response is tested in LearningPathServiceTest. * * @throws Exception the request failed - * @see de.tum.cit.aet.artemis.service.LearningPathServiceTest + * @see de.tum.cit.aet.artemis.atlas.service.LearningPathServiceTest */ @ParameterizedTest(name = "{displayName} [{index}] {argumentsWithNames}") @EnumSource(LearningPathResource.NgxRequestType.class) @@ -500,7 +500,7 @@ void testGetLearningPathNgxAsTutor(LearningPathResource.NgxRequestType type) thr * This only tests if the end point successfully retrieves the graph representation. The correctness of the response is tested in LearningPathServiceTest. * * @throws Exception the request failed - * @see de.tum.cit.aet.artemis.service.LearningPathServiceTest + * @see de.tum.cit.aet.artemis.atlas.service.LearningPathServiceTest */ @ParameterizedTest(name = "{displayName} [{index}] {argumentsWithNames}") @EnumSource(LearningPathResource.NgxRequestType.class) @@ -516,7 +516,7 @@ void testGetLearningPathNgxAsEditor(LearningPathResource.NgxRequestType type) th * This only tests if the end point successfully retrieves the graph representation. The correctness of the response is tested in LearningPathServiceTest. * * @throws Exception the request failed - * @see de.tum.cit.aet.artemis.service.LearningPathServiceTest + * @see de.tum.cit.aet.artemis.atlas.service.LearningPathServiceTest */ @ParameterizedTest(name = "{displayName} [{index}] {argumentsWithNames}") @EnumSource(LearningPathResource.NgxRequestType.class) diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java index 6c6ff7719640..f85aa92027b7 100644 --- a/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/AbstractFileUploadIntegrationTest.java @@ -21,7 +21,7 @@ import de.tum.cit.aet.artemis.modeling.util.ModelingExerciseUtilService; import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -public class AbstractFileUploadIntegrationTest extends AbstractSpringIntegrationIndependentTest { +public abstract class AbstractFileUploadIntegrationTest extends AbstractSpringIntegrationIndependentTest { // Repositories @Autowired diff --git a/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java index f67db93f311f..8e36ca4a74d1 100644 --- a/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/fileupload/architecture/FileUploadTestArchitectureTest.java @@ -1,9 +1,11 @@ package de.tum.cit.aet.artemis.fileupload.architecture; +import java.util.Set; + import de.tum.cit.aet.artemis.fileupload.AbstractFileUploadIntegrationTest; import de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleTestArchitectureTest; -class FileUploadTestArchitectureTest extends AbstractModuleTestArchitectureTest { +class FileUploadTestArchitectureTest extends AbstractModuleTestArchitectureTest { @Override public String getModulePackage() { @@ -11,7 +13,7 @@ public String getModulePackage() { } @Override - protected Class getAbstractModuleIntegrationTestClass() { - return AbstractFileUploadIntegrationTest.class; + protected Set> getAbstractModuleIntegrationTestClasses() { + return Set.of(AbstractFileUploadIntegrationTest.class); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/lti/architecture/LtiTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/lti/architecture/LtiTestArchitectureTest.java index ceb15210ada3..4d18fa50b636 100644 --- a/src/test/java/de/tum/cit/aet/artemis/lti/architecture/LtiTestArchitectureTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/lti/architecture/LtiTestArchitectureTest.java @@ -1,9 +1,11 @@ package de.tum.cit.aet.artemis.lti.architecture; +import java.util.Set; + import de.tum.cit.aet.artemis.lti.AbstractLtiIntegrationTest; import de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleTestArchitectureTest; -class LtiTestArchitectureTest extends AbstractModuleTestArchitectureTest { +class LtiTestArchitectureTest extends AbstractModuleTestArchitectureTest { @Override public String getModulePackage() { @@ -11,7 +13,7 @@ public String getModulePackage() { } @Override - protected Class getAbstractModuleIntegrationTestClass() { - return AbstractLtiIntegrationTest.class; + protected Set> getAbstractModuleIntegrationTestClasses() { + return Set.of(AbstractLtiIntegrationTest.class); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationGitlabCIGitlabSamlTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationGitlabCIGitlabSamlTest.java new file mode 100644 index 000000000000..cb8866b2160a --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationGitlabCIGitlabSamlTest.java @@ -0,0 +1,82 @@ +package de.tum.cit.aet.artemis.programming; + +import java.net.URL; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; + +import de.tum.cit.aet.artemis.core.service.messaging.InstanceMessageReceiveService; +import de.tum.cit.aet.artemis.core.user.util.UserUtilService; +import de.tum.cit.aet.artemis.exam.repository.ExamRepository; +import de.tum.cit.aet.artemis.exam.test_repository.StudentExamTestRepository; +import de.tum.cit.aet.artemis.exam.util.ExamUtilService; +import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.exercise.test_repository.ParticipationTestRepository; +import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.repository.BuildLogStatisticsEntryRepository; +import de.tum.cit.aet.artemis.programming.repository.BuildPlanRepository; +import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; +import de.tum.cit.aet.artemis.programming.service.gitlabci.GitLabCIResultService; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; +import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; +import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationGitlabCIGitlabSamlTest; + +public abstract class AbstractProgrammingIntegrationGitlabCIGitlabSamlTest extends AbstractSpringIntegrationGitlabCIGitlabSamlTest { + + // Config + @Value("${artemis.version-control.url}") + protected URL gitlabServerUrl; + + // Repositories + @Autowired + protected BuildLogStatisticsEntryRepository buildLogStatisticsEntryRepository; + + @Autowired + protected BuildPlanRepository buildPlanRepository; + + @Autowired + protected ParticipationTestRepository participationRepository; + + @Autowired + protected ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; + + @Autowired + protected ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; + + @Autowired + protected ProgrammingExerciseTestRepository programmingExerciseRepository; + + // External Repositories + @Autowired + protected ExamRepository examRepository; + + @Autowired + protected StudentExamTestRepository studentExamRepository; + + // Services + @Autowired + protected GitLabCIResultService gitLabCIResultService; + + // External Services + @Autowired + protected InstanceMessageReceiveService instanceMessageReceiveService; + + // Util Services + @Autowired + protected ProgrammingExerciseUtilService programmingExerciseUtilService; + + // External Util Services + @Autowired + protected ExamUtilService examUtilService; + + @Autowired + protected ExerciseUtilService exerciseUtilService; + + @Autowired + protected ParticipationUtilService participationUtilService; + + @Autowired + protected UserUtilService userUtilService; + +} diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationIndependentTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationIndependentTest.java new file mode 100644 index 000000000000..46749fbcd3ec --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationIndependentTest.java @@ -0,0 +1,183 @@ +package de.tum.cit.aet.artemis.programming; + +import org.springframework.beans.factory.annotation.Autowired; + +import de.tum.cit.aet.artemis.assessment.repository.ComplaintRepository; +import de.tum.cit.aet.artemis.assessment.util.ComplaintUtilService; +import de.tum.cit.aet.artemis.core.test_repository.UserTestRepository; +import de.tum.cit.aet.artemis.core.user.util.UserUtilService; +import de.tum.cit.aet.artemis.core.util.CourseUtilService; +import de.tum.cit.aet.artemis.exam.repository.ExamRepository; +import de.tum.cit.aet.artemis.exam.util.ExamUtilService; +import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.exercise.repository.ExerciseTestRepository; +import de.tum.cit.aet.artemis.exercise.test_repository.ParticipationTestRepository; +import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; +import de.tum.cit.aet.artemis.exercise.test_repository.SubmissionTestRepository; +import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.repository.AuxiliaryRepositoryRepository; +import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; +import de.tum.cit.aet.artemis.programming.repository.SolutionProgrammingExerciseParticipationRepository; +import de.tum.cit.aet.artemis.programming.repository.StaticCodeAnalysisCategoryRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.CodeHintRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageFileReportRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageReportRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.ExerciseHintActivationRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.ExerciseHintRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseSolutionEntryRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.TestwiseCoverageReportEntryRepository; +import de.tum.cit.aet.artemis.programming.repository.settings.IdeRepository; +import de.tum.cit.aet.artemis.programming.repository.settings.UserIdeMappingRepository; +import de.tum.cit.aet.artemis.programming.service.AuxiliaryRepositoryService; +import de.tum.cit.aet.artemis.programming.service.BuildLogEntryService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseFeedbackCreationService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseGradingService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseRepositoryService; +import de.tum.cit.aet.artemis.programming.service.hestia.CodeHintService; +import de.tum.cit.aet.artemis.programming.service.hestia.ExerciseHintService; +import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseTaskService; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; +import de.tum.cit.aet.artemis.programming.util.GitUtilService; +import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; +import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; + +public abstract class AbstractProgrammingIntegrationIndependentTest extends AbstractSpringIntegrationIndependentTest { + + // Repositories + @Autowired + protected AuxiliaryRepositoryRepository auxiliaryRepositoryRepository; + + @Autowired + protected CodeHintRepository codeHintRepository; + + @Autowired + protected CoverageFileReportRepository coverageFileReportRepository; + + @Autowired + protected CoverageReportRepository coverageReportRepository; + + @Autowired + protected ExerciseHintActivationRepository exerciseHintActivationRepository; + + @Autowired + protected ExerciseHintRepository exerciseHintRepository; + + @Autowired + protected IdeRepository ideRepository; + + @Autowired + protected ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; + + @Autowired + protected ProgrammingExerciseSolutionEntryRepository programmingExerciseSolutionEntryRepository; + + @Autowired + protected ProgrammingExerciseStudentParticipationTestRepository programmingExerciseStudentParticipationRepository; + + @Autowired + protected ProgrammingExerciseTaskRepository taskRepository; + + @Autowired + protected ProgrammingExerciseTestCaseTestRepository testCaseRepository; + + @Autowired + protected ProgrammingExerciseTestRepository programmingExerciseRepository; + + @Autowired + protected ProgrammingSubmissionTestRepository programmingSubmissionRepository; + + @Autowired + protected SolutionProgrammingExerciseParticipationRepository solutionEntryRepository; + + @Autowired + protected StaticCodeAnalysisCategoryRepository staticCodeAnalysisCategoryRepository; + + @Autowired + protected TestwiseCoverageReportEntryRepository testwiseCoverageReportEntryRepository; + + @Autowired + protected UserIdeMappingRepository userIdeMappingRepository; + + // External Repositories + @Autowired + protected ComplaintRepository complaintRepo; + + @Autowired + protected ExamRepository examRepository; + + @Autowired + protected ExerciseTestRepository exerciseRepository; + + @Autowired + protected ParticipationTestRepository participationRepository; + + @Autowired + protected StudentParticipationTestRepository studentParticipationRepository; + + @Autowired + protected SubmissionTestRepository submissionRepository; + + @Autowired + protected UserTestRepository userRepository; + + // Services + @Autowired + protected AuxiliaryRepositoryService auxiliaryRepositoryService; + + @Autowired + protected BuildLogEntryService buildLogEntryService; + + @Autowired + protected CodeHintService codeHintService; + + @Autowired + protected ExerciseHintService exerciseHintService; + + @Autowired + protected GitUtilService gitUtilService; + + @Autowired + protected ProgrammingExerciseFeedbackCreationService feedbackCreationService; + + @Autowired + protected ProgrammingExerciseGradingService gradingService; + + @Autowired + protected ProgrammingExerciseRepositoryService programmingExerciseRepositoryService; + + @Autowired + protected ProgrammingExerciseTaskService programmingExerciseTaskService; + + // External Services + + // Util Services + @Autowired + protected ProgrammingExerciseIntegrationTestService programmingExerciseIntegrationTestService; + + @Autowired + protected ProgrammingExerciseUtilService programmingExerciseUtilService; + + // External Util Services + @Autowired + protected ComplaintUtilService complaintUtilService; + + @Autowired + protected CourseUtilService courseUtilService; + + @Autowired + protected ExamUtilService examUtilService; + + @Autowired + protected ExerciseUtilService exerciseUtilService; + + @Autowired + protected ParticipationUtilService participationUtilService; + + @Autowired + protected UserUtilService userUtilService; + +} diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationJenkinsGitlabTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationJenkinsGitlabTest.java new file mode 100644 index 000000000000..780343412cf9 --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationJenkinsGitlabTest.java @@ -0,0 +1,209 @@ +package de.tum.cit.aet.artemis.programming; + +import java.net.URL; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import de.tum.cit.aet.artemis.communication.repository.conversation.ChannelRepository; +import de.tum.cit.aet.artemis.communication.test_repository.PostTestRepository; +import de.tum.cit.aet.artemis.core.test_repository.UserTestRepository; +import de.tum.cit.aet.artemis.core.user.util.UserUtilService; +import de.tum.cit.aet.artemis.core.util.CourseTestService; +import de.tum.cit.aet.artemis.core.util.CourseUtilService; +import de.tum.cit.aet.artemis.exam.repository.ExamRepository; +import de.tum.cit.aet.artemis.exam.test_repository.StudentExamTestRepository; +import de.tum.cit.aet.artemis.exam.util.ExamUtilService; +import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; +import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.modeling.util.ModelingExerciseUtilService; +import de.tum.cit.aet.artemis.plagiarism.repository.PlagiarismCaseRepository; +import de.tum.cit.aet.artemis.plagiarism.repository.PlagiarismComparisonRepository; +import de.tum.cit.aet.artemis.programming.repository.BuildLogStatisticsEntryRepository; +import de.tum.cit.aet.artemis.programming.repository.BuildPlanRepository; +import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; +import de.tum.cit.aet.artemis.programming.service.BuildLogEntryService; +import de.tum.cit.aet.artemis.programming.service.ConsistencyCheckTestService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseGradingService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseImportService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingLanguageFeatureService; +import de.tum.cit.aet.artemis.programming.service.RepositoryAccessService; +import de.tum.cit.aet.artemis.programming.service.gitlab.GitLabPersonalAccessTokenManagementService; +import de.tum.cit.aet.artemis.programming.service.jenkins.JenkinsAuthorizationInterceptor; +import de.tum.cit.aet.artemis.programming.service.jenkins.JenkinsInternalUrlService; +import de.tum.cit.aet.artemis.programming.service.jenkins.build_plan.JenkinsPipelineScriptCreator; +import de.tum.cit.aet.artemis.programming.service.jenkins.jobs.JenkinsJobPermissionsService; +import de.tum.cit.aet.artemis.programming.service.jenkins.jobs.JenkinsJobService; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; +import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseResultTestService; +import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseTestService; +import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; +import de.tum.cit.aet.artemis.programming.util.ProgrammingSubmissionAndResultIntegrationTestService; +import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; +import de.tum.cit.aet.artemis.text.util.TextExerciseUtilService; + +public abstract class AbstractProgrammingIntegrationJenkinsGitlabTest extends AbstractSpringIntegrationJenkinsGitlabTest { + + // Config + @Value("${artemis.continuous-integration.artemis-authentication-token-value}") + protected String ARTEMIS_AUTHENTICATION_TOKEN_VALUE; + + @Value("${artemis.version-control.url}") + protected URL gitlabServerUrl; + + @Value("${artemis.git.name}") + protected String artemisGitName; + + @Value("${artemis.git.email}") + protected String artemisGitEmail; + + @Value("${artemis.continuous-integration.url}") + protected URL jenkinsServerUrl; + + @Autowired + protected RestTemplate restTemplate; + + @Autowired + protected ObjectMapper objectMapper; + + // Repositories + @Autowired + protected BuildLogStatisticsEntryRepository buildLogStatisticsEntryRepository; + + @Autowired + protected BuildPlanRepository buildPlanRepository; + + @Autowired + protected ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; + + @Autowired + protected ProgrammingExerciseStudentParticipationTestRepository participationRepository; + + @Autowired + protected ProgrammingExerciseTestCaseTestRepository testCaseRepository; + + @Autowired + protected ProgrammingExerciseTestRepository programmingExerciseRepository; + + @Autowired + protected ProgrammingSubmissionTestRepository submissionRepository; + + // External Repositories + @Autowired + protected ChannelRepository channelRepository; + + @Autowired + protected ExamRepository examRepository; + + @Autowired + protected PlagiarismCaseRepository plagiarismCaseRepository; + + @Autowired + protected PlagiarismComparisonRepository plagiarismComparisonRepository; + + @Autowired + protected PostTestRepository postRepository; + + @Autowired + protected StudentExamTestRepository studentExamRepository; + + @Autowired + protected StudentParticipationTestRepository studentParticipationRepository; + + @Autowired + protected UserTestRepository userRepository; + + // Services + @Autowired + protected BuildLogEntryService buildLogEntryService; + + @Autowired + protected ConsistencyCheckTestService consistencyCheckTestService; + + @Autowired + protected GitLabPersonalAccessTokenManagementService gitLabPersonalAccessTokenManagementService; + + @Autowired + protected JenkinsAuthorizationInterceptor jenkinsAuthorizationInterceptor; + + @Autowired + protected JenkinsInternalUrlService jenkinsInternalUrlService; + + @Autowired + protected JenkinsJobPermissionsService jenkinsJobPermissionsService; + + @Autowired + protected JenkinsJobService jenkinsJobService; + + @Autowired + protected JenkinsPipelineScriptCreator jenkinsPipelineScriptCreator; + + @Autowired + protected ProgrammingExerciseGradingService gradingService; + + @Autowired + protected ProgrammingExerciseImportService programmingExerciseImportService; + + @Autowired + protected ProgrammingExerciseIntegrationTestService programmingExerciseIntegrationTestService; + + @Autowired + protected ProgrammingExerciseService programmingExerciseService; + + @Autowired + protected ProgrammingLanguageFeatureService programmingLanguageFeatureService; + + @Autowired + protected ProgrammingSubmissionAndResultIntegrationTestService testService; + + @Autowired + protected RepositoryAccessService repositoryAccessService; + + // External Services + + // Util Services + @Autowired + protected ContinuousIntegrationTestService continuousIntegrationTestService; + + @Autowired + protected ProgrammingExerciseResultTestService programmingExerciseResultTestService; + + @Autowired + protected ProgrammingExerciseTestService programmingExerciseTestService; + + @Autowired + protected ProgrammingExerciseUtilService programmingExerciseUtilService; + + // External Util Services + @Autowired + protected CourseTestService courseTestService; + + @Autowired + protected CourseUtilService courseUtilService; + + @Autowired + protected ExamUtilService examUtilService; + + @Autowired + protected ExerciseUtilService exerciseUtilService; + + @Autowired + protected ModelingExerciseUtilService modelingExerciseUtilService; + + @Autowired + protected ParticipationUtilService participationUtilService; + + @Autowired + protected TextExerciseUtilService textExerciseUtilService; + + @Autowired + protected UserUtilService userUtilService; +} diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationLocalCILocalVCTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationLocalCILocalVCTest.java new file mode 100644 index 000000000000..fcbdc0bdef78 --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationLocalCILocalVCTest.java @@ -0,0 +1,103 @@ +package de.tum.cit.aet.artemis.programming; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; + +import com.hazelcast.core.HazelcastInstance; + +import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyUtilService; +import de.tum.cit.aet.artemis.buildagent.service.SharedQueueProcessingService; +import de.tum.cit.aet.artemis.core.connector.AeolusRequestMockProvider; +import de.tum.cit.aet.artemis.core.util.PageableSearchUtilService; +import de.tum.cit.aet.artemis.exam.util.ExamUtilService; +import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.exercise.util.ExerciseIntegrationTestService; +import de.tum.cit.aet.artemis.programming.repository.StaticCodeAnalysisCategoryRepository; +import de.tum.cit.aet.artemis.programming.repository.VcsAccessLogRepository; +import de.tum.cit.aet.artemis.programming.service.BuildScriptProviderService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseFeedbackCreationService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseImportBasicService; +import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseTestCaseService; +import de.tum.cit.aet.artemis.programming.service.StaticCodeAnalysisService; +import de.tum.cit.aet.artemis.programming.service.aeolus.AeolusTemplateService; +import de.tum.cit.aet.artemis.programming.service.localci.SharedQueueManagementService; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; +import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; +import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; + +public abstract class AbstractProgrammingIntegrationLocalCILocalVCTest extends AbstractSpringIntegrationLocalCILocalVCTest { + + // Config + @Autowired + @Qualifier("hazelcastInstance") + protected HazelcastInstance hazelcastInstance; + + @Value("${artemis.user-management.internal-admin.username}") + protected String localVCUsername; + + @Value("${artemis.user-management.internal-admin.password}") + protected String localVCPassword; + + // Repositories + @Autowired + protected ProgrammingExerciseTestCaseTestRepository testCaseRepository; + + @Autowired + protected StaticCodeAnalysisCategoryRepository staticCodeAnalysisCategoryRepository; + + @Autowired + protected VcsAccessLogRepository vcsAccessLogRepository; + + // External Repositories + + // Services + @Autowired + protected AeolusRequestMockProvider aeolusRequestMockProvider; + + @Autowired + protected AeolusTemplateService aeolusTemplateService; + + @Autowired + protected BuildScriptProviderService buildScriptProviderService; + + @Autowired + protected ProgrammingExerciseFeedbackCreationService feedbackCreationService; + + @Autowired + protected ProgrammingExerciseImportBasicService programmingExerciseImportBasicService; + + @Autowired + protected ProgrammingExerciseTestCaseService testCaseService; + + @Autowired + protected SharedQueueManagementService sharedQueueManagementService; + + @Autowired + protected SharedQueueProcessingService sharedQueueProcessingService; + + @Autowired + protected StaticCodeAnalysisService staticCodeAnalysisService; + + // External Services + + // Util Services + @Autowired + protected ProgrammingExerciseUtilService programmingExerciseUtilService; + + // External Util Services + @Autowired + protected CompetencyUtilService competencyUtilService; + + @Autowired + protected ExamUtilService examUtilService; + + @Autowired + protected ExerciseIntegrationTestService exerciseIntegrationTestService; + + @Autowired + protected PageableSearchUtilService pageableSearchUtilService; + + @Autowired + protected ParticipationUtilService participationUtilService; +} diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/AbstractLocalCILocalVCIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationLocalCILocalVCTestBase.java similarity index 63% rename from src/test/java/de/tum/cit/aet/artemis/programming/icl/AbstractLocalCILocalVCIntegrationTest.java rename to src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationLocalCILocalVCTestBase.java index 0f559f0c3a50..56a168f7e776 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/AbstractLocalCILocalVCIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/AbstractProgrammingIntegrationLocalCILocalVCTestBase.java @@ -1,9 +1,10 @@ -package de.tum.cit.aet.artemis.programming.icl; +package de.tum.cit.aet.artemis.programming; import java.time.ZonedDateTime; import java.util.List; import java.util.Set; +import org.apache.sshd.server.SshServer; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; @@ -18,23 +19,76 @@ import de.tum.cit.aet.artemis.core.user.util.UserUtilService; import de.tum.cit.aet.artemis.exam.repository.ExamRepository; import de.tum.cit.aet.artemis.exam.test_repository.StudentExamTestRepository; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; import de.tum.cit.aet.artemis.exercise.repository.TeamRepository; +import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProjectType; import de.tum.cit.aet.artemis.programming.domain.SolutionProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.TemplateProgrammingExerciseParticipation; +import de.tum.cit.aet.artemis.programming.hestia.util.HestiaUtilTestService; import de.tum.cit.aet.artemis.programming.repository.AuxiliaryRepositoryRepository; -import de.tum.cit.aet.artemis.programming.service.StaticCodeAnalysisService; -import de.tum.cit.aet.artemis.programming.service.aeolus.AeolusTemplateService; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; +import de.tum.cit.aet.artemis.programming.repository.SolutionProgrammingExerciseParticipationRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageFileReportRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageReportRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseGitDiffReportRepository; +import de.tum.cit.aet.artemis.programming.repository.hestia.TestwiseCoverageReportEntryRepository; +import de.tum.cit.aet.artemis.programming.service.BuildLogEntryService; +import de.tum.cit.aet.artemis.programming.service.ParticipationVcsAccessTokenService; +import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseGitDiffReportService; +import de.tum.cit.aet.artemis.programming.service.hestia.TestwiseCoverageService; +import de.tum.cit.aet.artemis.programming.service.hestia.behavioral.BehavioralTestCaseService; +import de.tum.cit.aet.artemis.programming.service.hestia.structural.StructuralTestCaseService; +import de.tum.cit.aet.artemis.programming.service.localci.LocalCIResultService; +import de.tum.cit.aet.artemis.programming.service.localci.LocalCITriggerService; +import de.tum.cit.aet.artemis.programming.service.localvc.LocalVCServletService; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; +import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; + +/** + * This adds upon the {@link AbstractProgrammingIntegrationLocalCILocalVCTest} by providing additional + *
    + *
  • test data on test startup
  • + *
  • services and repositories that are needed for the tests.
  • + *
+ */ +public abstract class AbstractProgrammingIntegrationLocalCILocalVCTestBase extends AbstractProgrammingIntegrationLocalCILocalVCTest { + + // Config + @Value("${artemis.version-control.user}") + protected String localVCBaseUsername; -public abstract class AbstractLocalCILocalVCIntegrationTest extends AbstractSpringIntegrationLocalCILocalVCTest { + @LocalServerPort + protected int port; @Autowired - protected TeamRepository teamRepository; + protected SshServer sshServer; + + // Repositories + @Autowired + protected AuxiliaryRepositoryRepository auxiliaryRepositoryRepository; + + @Autowired + protected CoverageFileReportRepository coverageFileReportRepository; + + @Autowired + protected CoverageReportRepository coverageReportRepository; + + @Autowired + protected ProgrammingExerciseGitDiffReportRepository reportRepository; + + @Autowired + protected ProgrammingExerciseTestRepository programmingExerciseRepository; + + @Autowired + protected ProgrammingSubmissionTestRepository programmingSubmissionRepository; + + @Autowired + protected SolutionProgrammingExerciseParticipationRepository solutionProgrammingExerciseRepository; + + @Autowired + protected TestwiseCoverageReportEntryRepository testwiseCoverageReportEntryRepository; + // External Repositories @Autowired protected ExamRepository examRepository; @@ -42,28 +96,49 @@ public abstract class AbstractLocalCILocalVCIntegrationTest extends AbstractSpri protected StudentExamTestRepository studentExamRepository; @Autowired - protected UserUtilService userUtilService; + protected TeamRepository teamRepository; + // Services @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; + protected BehavioralTestCaseService behavioralTestCaseService; @Autowired - protected ParticipationUtilService participationUtilService; + protected BuildLogEntryService buildLogEntryService; @Autowired - private StaticCodeAnalysisService staticCodeAnalysisService; + protected HestiaUtilTestService hestiaUtilTestService; @Autowired - protected AuxiliaryRepositoryRepository auxiliaryRepositoryRepository; + protected LocalCIResultService localCIResultService; @Autowired - private AeolusTemplateService aeolusTemplateService; + protected LocalVCServletService localVCServletService; - @Value("${artemis.version-control.user}") - protected String localVCBaseUsername; + @Autowired + protected LocalCITriggerService localCITriggerService; - @LocalServerPort - protected int port; + @Autowired + protected ParticipationVcsAccessTokenService participationVcsAccessTokenService; + + @Autowired + protected ProgrammingExerciseGitDiffReportService reportService; + + @Autowired + protected StructuralTestCaseService structuralTestCaseService; + + @Autowired + protected TestwiseCoverageService testwiseCoverageService; + + // External Services + + // Util Services + + // External Util services + @Autowired + protected ExerciseUtilService exerciseUtilService; + + @Autowired + protected UserUtilService userUtilService; // The error messages returned by JGit contain these Strings that correspond to the HTTP status codes. protected static final String NOT_FOUND = "not found"; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/AuxiliaryRepositoryServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/AuxiliaryRepositoryServiceTest.java index 6bb1268ff527..7108644c2fe3 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/AuxiliaryRepositoryServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/AuxiliaryRepositoryServiceTest.java @@ -8,39 +8,17 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import de.tum.cit.aet.artemis.core.exception.BadRequestAlertException; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.AuxiliaryRepository; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; -import de.tum.cit.aet.artemis.programming.repository.AuxiliaryRepositoryRepository; -import de.tum.cit.aet.artemis.programming.service.AuxiliaryRepositoryService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class AuxiliaryRepositoryServiceTest extends AbstractSpringIntegrationIndependentTest { +class AuxiliaryRepositoryServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_INVALID_LENGTH_STRING = "a".repeat(AuxiliaryRepository.MAX_NAME_LENGTH + 1); private static final String TEST_INVALID_DESCRIPTION_LENGTH_STRING = "a".repeat(AuxiliaryRepository.MAX_DESCRIPTION_LENGTH + 1); - @Autowired - private AuxiliaryRepositoryRepository auxiliaryRepositoryRepository; - - @Autowired - private AuxiliaryRepositoryService auxiliaryRepositoryService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - private static ProgrammingExercise programmingExerciseBeforeUpdate; private static ProgrammingExercise updatedProgrammingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/BuildPlanIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/BuildPlanIntegrationTest.java index adab0997cd23..82809c5875e2 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/BuildPlanIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/BuildPlanIntegrationTest.java @@ -5,7 +5,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -14,28 +13,11 @@ import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.ProjectType; import de.tum.cit.aet.artemis.programming.domain.build.BuildPlan; -import de.tum.cit.aet.artemis.programming.repository.BuildPlanRepository; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class BuildPlanIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class BuildPlanIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "buildplanintegration"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private BuildPlanRepository buildPlanRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - private ProgrammingExercise programmingExercise; @BeforeEach diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ConsistencyCheckGitlabJenkinsIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ConsistencyCheckGitlabJenkinsIntegrationTest.java index 38b1447bc645..5f11ce522fc4 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ConsistencyCheckGitlabJenkinsIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ConsistencyCheckGitlabJenkinsIntegrationTest.java @@ -3,16 +3,9 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; -import de.tum.cit.aet.artemis.programming.service.ConsistencyCheckTestService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; - -class ConsistencyCheckGitlabJenkinsIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { - - @Autowired - private ConsistencyCheckTestService consistencyCheckTestService; +class ConsistencyCheckGitlabJenkinsIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { @BeforeEach void setup() throws Exception { diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/CourseGitlabJenkinsIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/CourseGitlabJenkinsIntegrationTest.java index f23887c80d43..ffe1a7bf34a6 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/CourseGitlabJenkinsIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/CourseGitlabJenkinsIntegrationTest.java @@ -13,37 +13,18 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.web.servlet.MvcResult; -import com.fasterxml.jackson.databind.ObjectMapper; - import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.User; import de.tum.cit.aet.artemis.core.util.CourseFactory; -import de.tum.cit.aet.artemis.core.util.CourseTestService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class CourseGitlabJenkinsIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class CourseGitlabJenkinsIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "courseegitlabjenkins"; - @Autowired - private CourseTestService courseTestService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ObjectMapper objectMapper; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - @BeforeEach void setup() { courseTestService.setup(TEST_PREFIX, this); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/GitServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/GitServiceTest.java index f03dc054e698..123d6cf796d3 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/GitServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/GitServiceTest.java @@ -31,7 +31,6 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import de.tum.cit.aet.artemis.core.exception.GitException; import de.tum.cit.aet.artemis.core.user.util.UserFactory; @@ -39,12 +38,8 @@ import de.tum.cit.aet.artemis.programming.domain.FileType; import de.tum.cit.aet.artemis.programming.domain.Repository; import de.tum.cit.aet.artemis.programming.util.GitUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class GitServiceTest extends AbstractSpringIntegrationIndependentTest { - - @Autowired - private GitUtilService gitUtilService; +class GitServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "gitservice"; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/GitlabServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/GitlabServiceTest.java index 8e857fed08c2..6d220e121508 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/GitlabServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/GitlabServiceTest.java @@ -8,7 +8,6 @@ import static org.mockito.Mockito.verify; import java.net.URISyntaxException; -import java.net.URL; import java.util.Optional; import java.util.stream.Stream; @@ -20,8 +19,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -33,24 +30,8 @@ import de.tum.cit.aet.artemis.programming.domain.Commit; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.VcsRepositoryUri; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class GitlabServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Value("${artemis.version-control.url}") - private URL gitlabServerUrl; +class GitlabServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { @BeforeEach void initTestCase() { diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/IdePreferencesIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/IdePreferencesIntegrationTest.java index 888424193c1e..acec92af2f2b 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/IdePreferencesIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/IdePreferencesIntegrationTest.java @@ -7,7 +7,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; @@ -19,20 +18,11 @@ import de.tum.cit.aet.artemis.programming.domain.ide.UserIdeMapping; import de.tum.cit.aet.artemis.programming.dto.IdeDTO; import de.tum.cit.aet.artemis.programming.dto.IdeMappingDTO; -import de.tum.cit.aet.artemis.programming.repository.settings.IdeRepository; -import de.tum.cit.aet.artemis.programming.repository.settings.UserIdeMappingRepository; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class IdePreferencesIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class IdePreferencesIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "idepreferencesintegration"; - @Autowired - private UserIdeMappingRepository userIdeMappingRepository; - - @Autowired - private IdeRepository ideRepository; - private Ide VsCode; private Ide IntelliJ; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/PlantUmlIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/PlantUmlIntegrationTest.java index 304ab40f1351..58e167265d15 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/PlantUmlIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/PlantUmlIntegrationTest.java @@ -17,11 +17,10 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; import net.sourceforge.plantuml.SourceStringReader; import net.sourceforge.plantuml.core.DiagramDescription; -class PlantUmlIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class PlantUmlIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "plantumlintegration"; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingAssessmentIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingAssessmentIntegrationTest.java index b39e0c0bc704..137bbab18fb0 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingAssessmentIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingAssessmentIntegrationTest.java @@ -20,7 +20,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatchers; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; @@ -34,16 +33,12 @@ import de.tum.cit.aet.artemis.assessment.domain.LongFeedbackText; import de.tum.cit.aet.artemis.assessment.domain.Result; import de.tum.cit.aet.artemis.assessment.dto.AssessmentUpdateDTO; -import de.tum.cit.aet.artemis.assessment.repository.ComplaintRepository; -import de.tum.cit.aet.artemis.assessment.util.ComplaintUtilService; import de.tum.cit.aet.artemis.core.config.Constants; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.User; import de.tum.cit.aet.artemis.core.util.TestResourceUtils; import de.tum.cit.aet.artemis.exam.domain.Exam; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; -import de.tum.cit.aet.artemis.exam.repository.ExamRepository; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.Exercise; import de.tum.cit.aet.artemis.exercise.domain.IncludedInOverallScore; import de.tum.cit.aet.artemis.exercise.domain.InitializationState; @@ -51,21 +46,13 @@ import de.tum.cit.aet.artemis.exercise.domain.SubmissionType; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationFactory; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; -import de.tum.cit.aet.artemis.exercise.test_repository.SubmissionTestRepository; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; import de.tum.cit.aet.artemis.programming.dto.ResultDTO; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingAssessmentIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingAssessmentIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "programmingassessment"; @@ -73,39 +60,6 @@ class ProgrammingAssessmentIntegrationTest extends AbstractSpringIntegrationInde private final Double offsetByTenThousandth = 0.0001; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private ComplaintRepository complaintRepo; - - @Autowired - private ProgrammingSubmissionTestRepository programmingSubmissionRepository; - - @Autowired - private ExamRepository examRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private SubmissionTestRepository submissionRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private ExamUtilService examUtilService; - - @Autowired - private ComplaintUtilService complaintUtilService; - private ProgrammingExercise programmingExercise; private ProgrammingSubmission programmingSubmission; @@ -1011,7 +965,7 @@ void overrideProgrammingAssessmentAfterComplaint() throws Exception { void unlockFeedbackRequestAfterAssessment() throws Exception { programmingExercise.setAllowFeedbackRequests(true); programmingExercise.setDueDate(ZonedDateTime.now().plusDays(1)); - exerciseRepository.save(programmingExercise); + programmingExerciseRepository.save(programmingExercise); var participation = programmingExerciseStudentParticipation; participation.setIndividualDueDate(ZonedDateTime.now().minusDays(1)); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseBuildPlanTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseBuildPlanTest.java index 074fe70e54b9..0bde4cd2fa51 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseBuildPlanTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseBuildPlanTest.java @@ -4,23 +4,12 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.util.LinkedMultiValueMap; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationGitlabCIGitlabSamlTest; -class ProgrammingExerciseBuildPlanTest extends AbstractSpringIntegrationGitlabCIGitlabSamlTest { - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; +class ProgrammingExerciseBuildPlanTest extends AbstractProgrammingIntegrationGitlabCIGitlabSamlTest { private static final String BUILD_PLAN = """ image: ubuntu:20.04 @@ -32,9 +21,6 @@ class ProgrammingExerciseBuildPlanTest extends AbstractSpringIntegrationGitlabCI - echo "Test" """; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - private Long programmingExerciseId; @BeforeEach diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitIntegrationTest.java index 0fb13f48c51a..5882a3517915 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitIntegrationTest.java @@ -22,39 +22,21 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.exception.EntityNotFoundException; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.VcsRepositoryUri; import de.tum.cit.aet.artemis.programming.service.GitService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.GitUtilService; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseGitIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseGitIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progexgitintegration"; private static final String COMBINE_COMMITS_ENDPOINT = "/api/programming-exercises/{exerciseId}/combine-template-commits"; - @Autowired - private GitUtilService gitUtilService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - private File localRepoFile; private Git localGit; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitlabJenkinsIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitlabJenkinsIntegrationTest.java index 8918d1190bef..53ff9474ac5c 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitlabJenkinsIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGitlabJenkinsIntegrationTest.java @@ -32,7 +32,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.MockedStatic; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -44,20 +43,11 @@ import de.tum.cit.aet.artemis.exercise.domain.SubmissionType; import de.tum.cit.aet.artemis.programming.domain.AeolusTarget; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; -import de.tum.cit.aet.artemis.programming.service.ProgrammingLanguageFeatureService; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseTestService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class ProgrammingExerciseGitlabJenkinsIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingExerciseGitlabJenkinsIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "progexgitlabjenkins"; - @Autowired - private ProgrammingExerciseTestService programmingExerciseTestService; - - @Autowired - private ProgrammingLanguageFeatureService programmingLanguageFeatureService; - @BeforeEach void setup() throws Exception { programmingExerciseTestService.setupTestUsers(TEST_PREFIX, 0, 0, 0, 0); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGradingServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGradingServiceTest.java index b38a7248ae5f..2993b02caccb 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGradingServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseGradingServiceTest.java @@ -23,7 +23,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.test.context.TestSecurityContextHolder; @@ -36,19 +35,12 @@ import de.tum.cit.aet.artemis.assessment.domain.Result; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.core.util.CourseUtilService; import de.tum.cit.aet.artemis.core.util.RoundingUtil; import de.tum.cit.aet.artemis.exam.domain.Exam; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; -import de.tum.cit.aet.artemis.exam.repository.ExamRepository; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.Exercise; import de.tum.cit.aet.artemis.exercise.domain.participation.Participation; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; @@ -56,14 +48,8 @@ import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; import de.tum.cit.aet.artemis.programming.domain.SolutionProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.dto.ProgrammingExerciseGradingStatisticsDTO; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; -import de.tum.cit.aet.artemis.programming.repository.StaticCodeAnalysisCategoryRepository; import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseGradingService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; /** * Tests the {@link ProgrammingExerciseGradingService}. @@ -76,49 +62,10 @@ *
  • {@link ExamProgrammingExerciseGradingServiceTest} - for exercises in an exam setting.
  • * */ -abstract class ProgrammingExerciseGradingServiceTest extends AbstractSpringIntegrationIndependentTest { +abstract class ProgrammingExerciseGradingServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progexgradingservice"; - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private StaticCodeAnalysisCategoryRepository staticCodeAnalysisCategoryRepository; - - @Autowired - private ExamRepository examRepository; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private ProgrammingExerciseGradingService gradingService; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private CourseUtilService courseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ExamUtilService examUtilService; - private ProgrammingExercise programmingExerciseSCAEnabled; private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationJenkinsGitlabTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationJenkinsGitlabTest.java index 6906106f8fac..5812c2923e0e 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationJenkinsGitlabTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationJenkinsGitlabTest.java @@ -15,26 +15,17 @@ import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseService; import de.tum.cit.aet.artemis.programming.util.ArgumentSources; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class ProgrammingExerciseIntegrationJenkinsGitlabTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingExerciseIntegrationJenkinsGitlabTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "progexjenkgitlab"; - @Autowired - private ProgrammingExerciseIntegrationTestService programmingExerciseIntegrationTestService; - - @Autowired - private ProgrammingExerciseService programmingExerciseService; - @BeforeEach void initTestCase() throws Exception { gitlabRequestMockProvider.enableMockingOfRequests(); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationTestService.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationTestService.java index 49696af61d96..23739bdaacd3 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationTestService.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseIntegrationTestService.java @@ -128,7 +128,7 @@ * 1) Jenkins + Gitlab */ @Service -class ProgrammingExerciseIntegrationTestService { +public class ProgrammingExerciseIntegrationTestService { private static final String NON_EXISTING_ID = Integer.toString(Integer.MAX_VALUE); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseParticipationIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseParticipationIntegrationTest.java index 1e47b62e649b..843cb7e0f378 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseParticipationIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseParticipationIntegrationTest.java @@ -25,7 +25,6 @@ import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; @@ -37,9 +36,6 @@ import de.tum.cit.aet.artemis.exercise.domain.Submission; import de.tum.cit.aet.artemis.exercise.domain.participation.Participation; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.ParticipationTestRepository; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; @@ -49,13 +45,8 @@ import de.tum.cit.aet.artemis.programming.domain.TemplateProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.VcsRepositoryUri; import de.tum.cit.aet.artemis.programming.dto.CommitInfoDTO; -import de.tum.cit.aet.artemis.programming.repository.AuxiliaryRepositoryRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseParticipationIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseParticipationIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "programmingexerciseparticipation"; @@ -63,31 +54,6 @@ class ProgrammingExerciseParticipationIntegrationTest extends AbstractSpringInte private final String exercisesBaseUrl = "/api/programming-exercises/"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private ParticipationTestRepository participationRepository; - - @Autowired - private ProgrammingExerciseStudentParticipationTestRepository programmingExerciseStudentParticipationRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private AuxiliaryRepositoryRepository auxiliaryRepositoryRepository; - - // TODO remove again after refactoring and cleanup - @Autowired - private ProgrammingExerciseIntegrationTestService programmingExerciseIntegrationTestService; - private ProgrammingExercise programmingExercise; private Participation programmingExerciseParticipation; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseRepositoryServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseRepositoryServiceTest.java index c045fe08c76b..1a7f91039e94 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseRepositoryServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseRepositoryServiceTest.java @@ -10,40 +10,14 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseRepositoryService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseRepositoryServiceTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseRepositoryServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progexreposervice"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseRepositoryService programmingExerciseRepositoryService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private UserUtilService userUtilService; - private ProgrammingExercise programmingExerciseBeforeUpdate; private ProgrammingExercise updatedProgrammingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseResultJenkinsIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseResultJenkinsIntegrationTest.java index 7308c6a6dae5..9e0650403412 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseResultJenkinsIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseResultJenkinsIntegrationTest.java @@ -16,7 +16,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.mockito.ArgumentMatchers; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.config.Constants; @@ -25,16 +24,11 @@ import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.service.ci.notification.dto.CommitDTO; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseResultTestService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class ProgrammingExerciseResultJenkinsIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingExerciseResultJenkinsIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "progexresultjenk"; - @Autowired - private ProgrammingExerciseResultTestService programmingExerciseResultTestService; - @BeforeEach void setup() { programmingExerciseResultTestService.setup(TEST_PREFIX); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseScheduleServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseScheduleServiceTest.java index 3fd82c87864c..b386fb22d033 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseScheduleServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseScheduleServiceTest.java @@ -25,73 +25,27 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.InOrder; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.assessment.domain.AssessmentType; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.config.Constants; import de.tum.cit.aet.artemis.core.domain.User; -import de.tum.cit.aet.artemis.core.service.messaging.InstanceMessageReceiveService; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; import de.tum.cit.aet.artemis.exam.domain.Exam; import de.tum.cit.aet.artemis.exam.domain.StudentExam; -import de.tum.cit.aet.artemis.exam.repository.ExamRepository; -import de.tum.cit.aet.artemis.exam.test_repository.StudentExamTestRepository; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.ExerciseLifecycle; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ParticipationLifecycle; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.VcsRepositoryUri; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationGitlabCIGitlabSamlTest; -class ProgrammingExerciseScheduleServiceTest extends AbstractSpringIntegrationGitlabCIGitlabSamlTest { +class ProgrammingExerciseScheduleServiceTest extends AbstractProgrammingIntegrationGitlabCIGitlabSamlTest { private static final String TEST_PREFIX = "programmingexercisescheduleservice"; - @Autowired - private InstanceMessageReceiveService instanceMessageReceiveService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseStudentParticipationTestRepository participationRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ExamRepository examRepository; - - @Autowired - private StudentExamTestRepository studentExamRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private ExamUtilService examUtilService; - private ProgrammingExercise programmingExercise; private final LocalRepository studentRepository = new LocalRepository(defaultBranch); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceIntegrationTest.java index 4ab18f1ce22a..e32956ac6bd8 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceIntegrationTest.java @@ -12,13 +12,10 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.util.PageableSearchUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseIntegrationTestService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.StaticCodeAnalysisCategory; @@ -27,33 +24,14 @@ import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.LockRepositoryPolicy; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.SubmissionPenaltyPolicy; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.SubmissionPolicy; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseImportBasicService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class ProgrammingExerciseServiceIntegrationTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class ProgrammingExerciseServiceIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "progexserviceintegration"; private static final String BASE_RESOURCE = "/api/programming-exercises"; - @Autowired - ProgrammingExerciseImportBasicService programmingExerciseImportBasicService; - - @Autowired - ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ExerciseIntegrationTestService exerciseIntegrationTestService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private PageableSearchUtilService pageableSearchUtilService; - private Course additionalEmptyCourse; private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceTest.java index 028ac2405428..353461ecf77a 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseServiceTest.java @@ -7,35 +7,14 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseServiceTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progexservice"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseTestRepository; - private ProgrammingExercise programmingExercise1; private ProgrammingExercise programmingExercise2; @@ -63,7 +42,7 @@ void shouldFindProgrammingExerciseWithBuildAndTestDateInFuture() { programmingExercise2.setBuildAndTestStudentSubmissionsAfterDueDate(ZonedDateTime.now().minusHours(1)); programmingExerciseRepository.save(programmingExercise2); - List programmingExercises = programmingExerciseTestRepository.findAllWithBuildAndTestAfterDueDateInFuture(); + List programmingExercises = programmingExerciseRepository.findAllWithBuildAndTestAfterDueDateInFuture(); assertThat(programmingExercises).contains(programmingExercise1).doesNotContain(programmingExercise2); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTemplateIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTemplateIntegrationTest.java index 618437fd78b9..909814b1e829 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTemplateIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTemplateIntegrationTest.java @@ -47,7 +47,6 @@ import org.junit.jupiter.params.provider.MethodSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -55,14 +54,11 @@ import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.ProjectType; -import de.tum.cit.aet.artemis.programming.service.ProgrammingLanguageFeatureService; import de.tum.cit.aet.artemis.programming.util.LocalRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseTestService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; @TestInstance(TestInstance.Lifecycle.PER_CLASS) -class ProgrammingExerciseTemplateIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingExerciseTemplateIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final Logger log = LoggerFactory.getLogger(ProgrammingExerciseTemplateIntegrationTest.class); @@ -70,12 +66,6 @@ class ProgrammingExerciseTemplateIntegrationTest extends AbstractSpringIntegrati private static File java17Home; - @Autowired - private ProgrammingExerciseTestService programmingExerciseTestService; - - @Autowired - private ProgrammingLanguageFeatureService programmingLanguageFeatureService; - private ProgrammingExercise exercise; private final LocalRepository exerciseRepo = new LocalRepository(defaultBranch); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTest.java index 587478746a89..0679190ab7b9 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTest.java @@ -18,64 +18,30 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.assessment.domain.AssessmentType; import de.tum.cit.aet.artemis.communication.domain.conversation.Channel; -import de.tum.cit.aet.artemis.communication.repository.conversation.ChannelRepository; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; import de.tum.cit.aet.artemis.exam.domain.StudentExam; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.Exercise; import de.tum.cit.aet.artemis.exercise.domain.InitializationState; import de.tum.cit.aet.artemis.exercise.domain.Submission; import de.tum.cit.aet.artemis.exercise.domain.SubmissionType; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class ProgrammingExerciseTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingExerciseTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "peinttest"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ProgrammingExerciseStudentParticipationTestRepository participationRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ExamUtilService examUtilService; - private Long programmingExerciseId; - @Autowired - private ChannelRepository channelRepository; - @BeforeEach void init() { userUtilService.addUsers(TEST_PREFIX, 2, 2, 0, 2); @@ -170,7 +136,7 @@ void updateExerciseAutomaticFeedbackNoTestCases() throws Exception { ProgrammingExercise programmingExercise = programmingExerciseRepository .findWithTemplateAndSolutionParticipationTeamAssignmentConfigCategoriesAndBuildConfigById(programmingExerciseId).orElseThrow(); - Set testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()); + Set testCases = testCaseRepository.findByExerciseId(programmingExercise.getId()); assertThat(testCases).isEmpty(); // no test cases, changing to automatic feedback: update should work @@ -198,9 +164,9 @@ void updateExerciseTestCasesZeroWeight(AssessmentType assessmentType) throws Exc .findWithTemplateAndSolutionParticipationTeamAssignmentConfigCategoriesAndBuildConfigById(programmingExerciseId).orElseThrow(); programmingExerciseUtilService.addTestCasesToProgrammingExercise(programmingExercise); - Set testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()); + Set testCases = testCaseRepository.findByExerciseId(programmingExercise.getId()); testCases.forEach(testCase -> testCase.setWeight(0D)); - programmingExerciseTestCaseRepository.saveAll(testCases); + testCaseRepository.saveAll(testCases); programmingExercise.setAssessmentType(assessmentType); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTestCaseServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTestCaseServiceTest.java index cf293bf0740c..504d895a9200 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTestCaseServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingExerciseTestCaseServiceTest.java @@ -17,55 +17,21 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.assessment.domain.AssessmentType; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.security.SecurityUtils; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.dto.ProgrammingExerciseTestCaseDTO; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseFeedbackCreationService; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseTestCaseService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class ProgrammingExerciseTestCaseServiceTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class ProgrammingExerciseTestCaseServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "progextestcase"; - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - - @Autowired - private ProgrammingExerciseTestCaseService testCaseService; - - @Autowired - private ProgrammingExerciseFeedbackCreationService feedbackCreationService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - private ProgrammingExercise programmingExercise; @BeforeEach diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionAndResultGitlabJenkinsIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionAndResultGitlabJenkinsIntegrationTest.java index 354a3e9b65c5..102643f76237 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionAndResultGitlabJenkinsIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionAndResultGitlabJenkinsIntegrationTest.java @@ -16,8 +16,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -29,55 +27,23 @@ import de.tum.cit.aet.artemis.assessment.domain.Result; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.security.SecurityUtils; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; import de.tum.cit.aet.artemis.programming.domain.ProjectType; import de.tum.cit.aet.artemis.programming.domain.build.BuildLogEntry; -import de.tum.cit.aet.artemis.programming.repository.BuildLogStatisticsEntryRepository; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; import de.tum.cit.aet.artemis.programming.service.ci.notification.dto.CommitDTO; import de.tum.cit.aet.artemis.programming.service.ci.notification.dto.TestCaseDTO; import de.tum.cit.aet.artemis.programming.service.ci.notification.dto.TestCaseDetailMessageDTO; import de.tum.cit.aet.artemis.programming.service.ci.notification.dto.TestResultsDTO; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.programming.util.ProgrammingSubmissionAndResultIntegrationTestService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class ProgrammingSubmissionAndResultGitlabJenkinsIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingSubmissionAndResultGitlabJenkinsIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "progsubresgitlabjen"; - @Value("${artemis.continuous-integration.artemis-authentication-token-value}") - private String ARTEMIS_AUTHENTICATION_TOKEN_VALUE; - - @Autowired - private ProgrammingSubmissionTestRepository submissionRepository; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private BuildLogStatisticsEntryRepository buildLogStatisticsEntryRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - private ProgrammingExercise exercise; - @Autowired - private ProgrammingSubmissionAndResultIntegrationTestService testService; - @BeforeEach void setUp() { jenkinsRequestMockProvider.enableMockingOfRequests(jenkinsServer); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionIntegrationTest.java index 4d53882cd461..6e6ba01f1c5c 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/ProgrammingSubmissionIntegrationTest.java @@ -27,8 +27,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -50,53 +48,18 @@ import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; import de.tum.cit.aet.artemis.exercise.dto.SubmissionDTO; import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationFactory; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; import de.tum.cit.aet.artemis.modeling.domain.ModelingExercise; import de.tum.cit.aet.artemis.modeling.domain.ModelingSubmission; -import de.tum.cit.aet.artemis.modeling.util.ModelingExerciseUtilService; import de.tum.cit.aet.artemis.programming.domain.Commit; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class ProgrammingSubmissionIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class ProgrammingSubmissionIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "programmingsubmission"; - @Value("${artemis.git.name}") - private String artemisGitName; - - @Value("${artemis.git.email}") - private String artemisGitEmail; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingSubmissionTestRepository submissionRepository; - - @Autowired - private ProgrammingExerciseStudentParticipationTestRepository programmingExerciseStudentParticipationRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private ModelingExerciseUtilService modelingExerciseUtilService; - private ProgrammingExercise exercise; private ProgrammingExerciseStudentParticipation programmingExerciseStudentParticipation; @@ -394,7 +357,7 @@ void triggerFailedBuildResultPresentInCIOk() throws Exception { submission.setCommitHash(TestConstants.COMMIT_HASH_STRING); submission.setType(SubmissionType.MANUAL); submission = programmingExerciseUtilService.addProgrammingSubmission(exercise, submission, TEST_PREFIX + "student1"); - var optionalParticipation = programmingExerciseStudentParticipationRepository.findById(submission.getParticipation().getId()); + var optionalParticipation = participationRepository.findById(submission.getParticipation().getId()); assertThat(optionalParticipation).isPresent(); final var participation = optionalParticipation.get(); jenkinsRequestMockProvider.enableMockingOfRequests(jenkinsServer); @@ -446,11 +409,11 @@ private ProgrammingExerciseStudentParticipation createExerciseWithSubmissionAndP var submission = new ProgrammingSubmission(); submission.setType(SubmissionType.MANUAL); submission = programmingExerciseUtilService.addProgrammingSubmission(exercise, submission, user.getLogin()); - var optionalParticipation = programmingExerciseStudentParticipationRepository.findById(submission.getParticipation().getId()); + var optionalParticipation = participationRepository.findById(submission.getParticipation().getId()); assertThat(optionalParticipation).isPresent(); var participation = optionalParticipation.get(); participation.setBuildPlanId(null); - participation = programmingExerciseStudentParticipationRepository.save(participation); + participation = participationRepository.save(participation); return participation; } @@ -842,7 +805,7 @@ void testGetProgrammingSubmissionWithoutAssessmentWithIndividualDueDate(boolean else { submission.getParticipation().setIndividualDueDate(ZonedDateTime.now().minusDays(1)); } - programmingExerciseStudentParticipationRepository.save((ProgrammingExerciseStudentParticipation) submission.getParticipation()); + participationRepository.save((ProgrammingExerciseStudentParticipation) submission.getParticipation()); participationUtilService.addResultToSubmission(submission, AssessmentType.AUTOMATIC, null); String url = "/api/exercises/" + exercise.getId() + "/programming-submission-without-assessment"; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryIntegrationTest.java index cc602c83f30d..64307de24282 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryIntegrationTest.java @@ -43,7 +43,6 @@ import org.mockito.MockedStatic; import org.mockito.stubbing.Answer; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; @@ -54,25 +53,17 @@ import ch.qos.logback.core.read.ListAppender; import de.tum.cit.aet.artemis.assessment.domain.AssessmentType; import de.tum.cit.aet.artemis.communication.domain.Post; -import de.tum.cit.aet.artemis.communication.test_repository.PostTestRepository; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.util.TestConstants; import de.tum.cit.aet.artemis.exam.domain.Exam; -import de.tum.cit.aet.artemis.exam.repository.ExamRepository; -import de.tum.cit.aet.artemis.exam.test_repository.StudentExamTestRepository; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.InitializationState; import de.tum.cit.aet.artemis.exercise.domain.SubmissionType; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.StudentParticipationTestRepository; import de.tum.cit.aet.artemis.plagiarism.domain.PlagiarismCase; import de.tum.cit.aet.artemis.plagiarism.domain.PlagiarismComparison; import de.tum.cit.aet.artemis.plagiarism.domain.PlagiarismStatus; import de.tum.cit.aet.artemis.plagiarism.domain.PlagiarismSubmission; import de.tum.cit.aet.artemis.plagiarism.domain.text.TextSubmissionElement; -import de.tum.cit.aet.artemis.plagiarism.repository.PlagiarismCaseRepository; -import de.tum.cit.aet.artemis.plagiarism.repository.PlagiarismComparisonRepository; import de.tum.cit.aet.artemis.programming.domain.FileType; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; @@ -81,20 +72,14 @@ import de.tum.cit.aet.artemis.programming.domain.build.BuildLogEntry; import de.tum.cit.aet.artemis.programming.dto.FileMove; import de.tum.cit.aet.artemis.programming.dto.RepositoryStatusDTO; -import de.tum.cit.aet.artemis.programming.service.BuildLogEntryService; import de.tum.cit.aet.artemis.programming.service.GitService; import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseParticipationService; import de.tum.cit.aet.artemis.programming.service.vcs.VersionControlRepositoryPermission; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseStudentParticipationTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.GitUtilService; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; import de.tum.cit.aet.artemis.programming.web.repository.FileSubmission; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -import de.tum.cit.aet.artemis.text.util.TextExerciseUtilService; -class RepositoryIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class RepositoryIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "repositoryintegration"; @@ -102,45 +87,6 @@ class RepositoryIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTe private final String filesContentBaseUrl = "/api/repository-files-content/"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private StudentParticipationTestRepository studentParticipationRepository; - - @Autowired - private ExamRepository examRepository; - - @Autowired - private StudentExamTestRepository studentExamRepository; - - @Autowired - private PlagiarismComparisonRepository plagiarismComparisonRepository; - - @Autowired - private PlagiarismCaseRepository plagiarismCaseRepository; - - @Autowired - private PostTestRepository postRepository; - - @Autowired - private BuildLogEntryService buildLogEntryService; - - @Autowired - private ProgrammingExerciseStudentParticipationTestRepository programmingExerciseStudentParticipationRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private TextExerciseUtilService textExerciseUtilService; - - @Autowired - private ExamUtilService examUtilService; - private ProgrammingExercise programmingExercise; private final String currentLocalFileName = "currentFileName"; @@ -1081,7 +1027,7 @@ void testCommitChangesNotAllowedForLockedParticipation() throws Exception { programmingExercise.setReleaseDate(ZonedDateTime.now().minusHours(2)); programmingExercise.setDueDate(ZonedDateTime.now().minusHours(1)); programmingExerciseRepository.save(programmingExercise); - this.programmingExerciseStudentParticipationRepository.updateLockedById(participation.getId(), true); + participationRepository.updateLockedById(participation.getId(), true); // Committing is not allowed var receivedStatusBeforeCommit = request.get(studentRepoBaseUrl + participation.getId(), HttpStatus.OK, RepositoryStatusDTO.class); @@ -1104,7 +1050,7 @@ void testResetNotAllowedForLockedParticipation() throws Exception { programmingExercise.setReleaseDate(ZonedDateTime.now().minusHours(2)); programmingExercise.setDueDate(ZonedDateTime.now().minusHours(1)); programmingExerciseRepository.save(programmingExercise); - this.programmingExerciseStudentParticipationRepository.updateLockedById(participation.getId(), true); + participationRepository.updateLockedById(participation.getId(), true); assertUnchangedRepositoryStatusForForbiddenReset(); } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryProgrammingExerciseParticipationJenkinsIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryProgrammingExerciseParticipationJenkinsIntegrationTest.java index 0616cda099c4..325c4520311b 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryProgrammingExerciseParticipationJenkinsIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/RepositoryProgrammingExerciseParticipationJenkinsIntegrationTest.java @@ -13,7 +13,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -22,27 +21,14 @@ import de.tum.cit.aet.artemis.core.util.TestConstants; import de.tum.cit.aet.artemis.exercise.domain.SubmissionType; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; import de.tum.cit.aet.artemis.programming.domain.build.BuildLogEntry; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class RepositoryProgrammingExerciseParticipationJenkinsIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class RepositoryProgrammingExerciseParticipationJenkinsIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "repoprogexpartjenk"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - @BeforeEach void setup() throws Exception { userUtilService.addUsers(TEST_PREFIX, 1, 1, 0, 1); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/StaticCodeAnalysisIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/StaticCodeAnalysisIntegrationTest.java index 06f673f808ee..2a6cccd7d15e 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/StaticCodeAnalysisIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/StaticCodeAnalysisIntegrationTest.java @@ -15,7 +15,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -34,33 +33,12 @@ import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.StaticCodeAnalysisCategory; import de.tum.cit.aet.artemis.programming.dto.StaticCodeAnalysisIssue; -import de.tum.cit.aet.artemis.programming.repository.StaticCodeAnalysisCategoryRepository; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseFeedbackCreationService; -import de.tum.cit.aet.artemis.programming.service.StaticCodeAnalysisService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class StaticCodeAnalysisIntegrationTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class StaticCodeAnalysisIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "staticcodeanalysis"; - @Autowired - private StaticCodeAnalysisService staticCodeAnalysisService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private StaticCodeAnalysisCategoryRepository staticCodeAnalysisCategoryRepository; - - @Autowired - private ProgrammingExerciseFeedbackCreationService feedbackCreationService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - private ProgrammingExercise programmingExerciseSCAEnabled; private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/SubmissionPolicyIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/SubmissionPolicyIntegrationTest.java index 660eec38c4f6..6fe76f858ff9 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/SubmissionPolicyIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/SubmissionPolicyIntegrationTest.java @@ -14,7 +14,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -22,7 +21,6 @@ import de.tum.cit.aet.artemis.core.domain.User; import de.tum.cit.aet.artemis.exercise.domain.Submission; import de.tum.cit.aet.artemis.exercise.domain.SubmissionType; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; @@ -30,29 +28,13 @@ import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.LockRepositoryPolicy; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.SubmissionPenaltyPolicy; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.SubmissionPolicy; -import de.tum.cit.aet.artemis.programming.service.ProgrammingExerciseGradingService; import de.tum.cit.aet.artemis.programming.service.ci.notification.dto.CommitDTO; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class SubmissionPolicyIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class SubmissionPolicyIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "submissionpolicyintegration"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseGradingService gradingService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - private Long programmingExerciseId; private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/TestRepositoryResourceIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/TestRepositoryResourceIntegrationTest.java index dfaf90733fac..1a43719cc32b 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/TestRepositoryResourceIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/TestRepositoryResourceIntegrationTest.java @@ -25,7 +25,6 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; @@ -38,25 +37,16 @@ import de.tum.cit.aet.artemis.programming.dto.FileMove; import de.tum.cit.aet.artemis.programming.dto.RepositoryStatusDTO; import de.tum.cit.aet.artemis.programming.dto.RepositoryStatusDTOType; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; import de.tum.cit.aet.artemis.programming.service.GitService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.GitUtilService; import de.tum.cit.aet.artemis.programming.util.LocalRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; import de.tum.cit.aet.artemis.programming.web.repository.FileSubmission; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class TestRepositoryResourceIntegrationTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class TestRepositoryResourceIntegrationTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "testrepositoryresourceint"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - private final String testRepoBaseUrl = "/api/test-repository/"; private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/architecture/ProgrammingTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/architecture/ProgrammingTestArchitectureTest.java new file mode 100644 index 000000000000..b434af7971bd --- /dev/null +++ b/src/test/java/de/tum/cit/aet/artemis/programming/architecture/ProgrammingTestArchitectureTest.java @@ -0,0 +1,31 @@ +package de.tum.cit.aet.artemis.programming.architecture; + +import java.util.Set; + +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationGitlabCIGitlabSamlTest; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTest; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; +import de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleTestArchitectureTest; + +class ProgrammingTestArchitectureTest extends AbstractModuleTestArchitectureTest { + + @Override + public String getModulePackage() { + return ARTEMIS_PACKAGE + ".programming"; + } + + @Override + protected Set> getAbstractModuleIntegrationTestClasses() { + // @formatter:off + return Set.of( + AbstractProgrammingIntegrationGitlabCIGitlabSamlTest.class, + AbstractProgrammingIntegrationIndependentTest.class, + AbstractProgrammingIntegrationJenkinsGitlabTest.class, + AbstractProgrammingIntegrationLocalCILocalVCTest.class, + AbstractProgrammingIntegrationLocalCILocalVCTestBase.class + ); + // @formatter:on + } +} diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintIntegrationTest.java index a4d326fe43a8..a49fe18c881c 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintIntegrationTest.java @@ -9,37 +9,20 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.CodeHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseSolutionEntry; -import de.tum.cit.aet.artemis.programming.repository.hestia.CodeHintRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseSolutionEntryRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class CodeHintIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class CodeHintIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "codehint"; - @Autowired - private CodeHintRepository codeHintRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - - @Autowired - private ProgrammingExerciseSolutionEntryRepository solutionEntryRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - private ProgrammingExercise exercise; private CodeHint codeHint; @@ -143,7 +126,7 @@ void updateSolutionEntriesOnSaving() throws Exception { newEntry.setPreviousCode("New previous code"); var testCase = testCases.get("test1"); newEntry.setTestCase(testCase); - var savedNewEntry = solutionEntryRepository.save(newEntry); + var savedNewEntry = programmingExerciseSolutionEntryRepository.save(newEntry); savedNewEntry.setTestCase(testCase); codeHint.setSolutionEntries(new HashSet<>(Set.of(changedEntry, savedNewEntry))); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintServiceTest.java index 634e86de81b9..05a72ac9a78d 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/CodeHintServiceTest.java @@ -12,57 +12,24 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.exception.BadRequestAlertException; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.CodeHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseSolutionEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTestCaseType; -import de.tum.cit.aet.artemis.programming.repository.hestia.CodeHintRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseSolutionEntryRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.CodeHintService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; @SuppressWarnings("ArraysAsListWithZeroOrOneArgument") -class CodeHintServiceTest extends AbstractSpringIntegrationIndependentTest { +class CodeHintServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "codehintservice"; - @Autowired - private CodeHintService codeHintService; - - @Autowired - private CodeHintRepository codeHintRepository; - - @Autowired - private ProgrammingExerciseTaskRepository taskRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - - @Autowired - private ProgrammingExerciseSolutionEntryRepository solutionEntryRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - private ProgrammingExercise exercise; @BeforeEach @@ -88,7 +55,7 @@ private ProgrammingExerciseSolutionEntry addSolutionEntryToTestCase(ProgrammingE solutionEntry.setTestCase(testCase); solutionEntry.setLine(1); solutionEntry.setCode("code"); - return solutionEntryRepository.save(solutionEntry); + return programmingExerciseSolutionEntryRepository.save(solutionEntry); } private ProgrammingExerciseTask addTaskToExercise(String name, List testCases) { @@ -114,7 +81,7 @@ private CodeHint addCodeHintToTask(String name, ProgrammingExerciseTask task, Se solutionEntries.forEach(entry -> entry.setCodeHint(codeHint)); var createdHint = codeHintRepository.save(codeHint); - solutionEntryRepository.saveAll(solutionEntries); + programmingExerciseSolutionEntryRepository.saveAll(solutionEntries); return createdHint; } @@ -195,7 +162,7 @@ void testUpdateTestCaseOfSolutionEntry() { entryToUpdate.setTestCase(testCase2); codeHintService.updateSolutionEntriesForCodeHint(codeHint); - var allEntries = solutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); + var allEntries = programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); assertThat(allEntries).hasSize(1); assertThat(allEntries.stream().findAny().orElseThrow().getTestCase().getId()).isEqualTo(testCase2.getId()); } @@ -216,7 +183,7 @@ void testUpdatedContentOfSolutionEntry() { entry.setFilePath("Updated file path"); codeHintService.updateSolutionEntriesForCodeHint(codeHint); - var allEntries = solutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); + var allEntries = programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); assertThat(allEntries).hasSize(1); assertThat(allEntries.stream().findAny().orElseThrow()).isEqualTo(entryToUpdate); } @@ -233,7 +200,7 @@ void testSaveWithNewSolutionEntry() { codeHint.setSolutionEntries(new HashSet<>(Set.of(manuallyCreatedEntry))); codeHintService.updateSolutionEntriesForCodeHint(codeHint); - var allEntries = solutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); + var allEntries = programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); assertThat(allEntries).containsExactly(manuallyCreatedEntry); } @@ -249,10 +216,10 @@ void testSaveWithRemovedSolutionEntry() { codeHint.setSolutionEntries(new HashSet<>(Collections.emptySet())); codeHintService.updateSolutionEntriesForCodeHint(codeHint); - var entriesForHint = solutionEntryRepository.findByCodeHintId(codeHint.getId()); + var entriesForHint = programmingExerciseSolutionEntryRepository.findByCodeHintId(codeHint.getId()); assertThat(entriesForHint).isEmpty(); - var allEntries = solutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); + var allEntries = programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); assertThat(allEntries).containsExactly(entryToRemove); } @@ -273,10 +240,10 @@ void testSaveEntryWithTestCaseUnrelatedToHintTask() { codeHint.setSolutionEntries(new HashSet<>(Set.of(invalidSolutionEntry))); assertThatExceptionOfType(BadRequestAlertException.class).isThrownBy(() -> codeHintService.updateSolutionEntriesForCodeHint(codeHint)); - var entriesForHint = solutionEntryRepository.findByCodeHintId(codeHint.getId()); + var entriesForHint = programmingExerciseSolutionEntryRepository.findByCodeHintId(codeHint.getId()); assertThat(entriesForHint).isEmpty(); - var allEntries = solutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); + var allEntries = programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(exercise.getId()); assertThat(allEntries).isEmpty(); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintIntegrationTest.java index adaa6e600832..6a44f54820fe 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintIntegrationTest.java @@ -11,7 +11,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -21,7 +20,7 @@ import de.tum.cit.aet.artemis.assessment.domain.Result; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; @@ -29,43 +28,11 @@ import de.tum.cit.aet.artemis.programming.domain.hestia.ExerciseHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ExerciseHintActivation; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; -import de.tum.cit.aet.artemis.programming.repository.hestia.ExerciseHintActivationRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ExerciseHintRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseTaskService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ExerciseHintIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class ExerciseHintIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "exercisehintintegration"; - @Autowired - private ExerciseHintRepository exerciseHintRepository; - - @Autowired - private ProgrammingExerciseTestRepository exerciseRepository; - - @Autowired - private ProgrammingExerciseTaskService programmingExerciseTaskService; - - @Autowired - private ProgrammingSubmissionTestRepository programmingSubmissionRepository; - - @Autowired - private ExerciseHintActivationRepository exerciseHintActivationRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - private ProgrammingExercise exercise; private ProgrammingExercise exerciseLite; @@ -85,9 +52,8 @@ void initTestCase() { userUtilService.addUsers(TEST_PREFIX, 2, 2, 1, 2); - programmingExerciseTestCaseRepository - .saveAll(programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()).stream().peek(testCase -> testCase.setActive(true)).toList()); - exerciseLite = exerciseRepository.findByIdElseThrow(programmingExercise.getId()); + testCaseRepository.saveAll(testCaseRepository.findByExerciseId(programmingExercise.getId()).stream().peek(testCase -> testCase.setActive(true)).toList()); + exerciseLite = programmingExerciseRepository.findByIdElseThrow(programmingExercise.getId()); exercise = programmingExerciseUtilService.loadProgrammingExerciseWithEagerReferences(exerciseLite); programmingExerciseUtilService.addHintsToExercise(exercise); programmingExerciseUtilService.addTasksToProgrammingExercise(exercise); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintServiceTest.java index 69279ac37859..99b3d357f73f 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ExerciseHintServiceTest.java @@ -10,7 +10,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import de.tum.cit.aet.artemis.assessment.domain.AssessmentType; import de.tum.cit.aet.artemis.assessment.domain.Feedback; @@ -19,69 +18,17 @@ import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.User; -import de.tum.cit.aet.artemis.core.test_repository.UserTestRepository; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.ExerciseHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ExerciseHintActivation; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; -import de.tum.cit.aet.artemis.programming.repository.hestia.ExerciseHintActivationRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ExerciseHintRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.ExerciseHintService; -import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseTaskService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; - -class ExerciseHintServiceTest extends AbstractSpringIntegrationIndependentTest { - private static final String TEST_PREFIX = "exercisehintservice"; - - @Autowired - private UserTestRepository userRepository; - - @Autowired - private ExerciseHintService exerciseHintService; - - @Autowired - private ExerciseHintRepository exerciseHintRepository; - - @Autowired - private ProgrammingExerciseTestRepository exerciseRepository; - - @Autowired - private ProgrammingExerciseTaskService programmingExerciseTaskService; - - @Autowired - private ProgrammingSubmissionTestRepository programmingSubmissionRepository; +class ExerciseHintServiceTest extends AbstractProgrammingIntegrationIndependentTest { - @Autowired - private ExerciseHintActivationRepository exerciseHintActivationRepository; - - @Autowired - private ProgrammingExerciseTaskRepository programmingExerciseTaskRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; + private static final String TEST_PREFIX = "exercisehintservice"; private ProgrammingExercise exercise; @@ -107,9 +54,9 @@ void initTestCase() { student = userRepository.getUserWithGroupsAndAuthorities(TEST_PREFIX + "student1"); userUtilService.changeUser(TEST_PREFIX + "student1"); - var activatedTestCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()).stream().peek(testCase -> testCase.setActive(true)).toList(); - programmingExerciseTestCaseRepository.saveAll(activatedTestCases); - exercise = exerciseRepository.findByIdElseThrow(programmingExercise.getId()); + var activatedTestCases = testCaseRepository.findByExerciseId(programmingExercise.getId()).stream().peek(testCase -> testCase.setActive(true)).toList(); + testCaseRepository.saveAll(activatedTestCases); + exercise = programmingExerciseRepository.findByIdElseThrow(programmingExercise.getId()); exercise = programmingExerciseUtilService.loadProgrammingExerciseWithEagerReferences(exercise); programmingExerciseUtilService.addHintsToExercise(exercise); programmingExerciseUtilService.addTasksToProgrammingExercise(exercise); @@ -133,10 +80,10 @@ void testGetAvailableExerciseHintsTasksWithoutTestCases() { addResultWithFailedTestCases(exercise.getTestCases()); for (ProgrammingExerciseTask sortedTask : sortedTasks) { sortedTask.getTestCases().clear(); - programmingExerciseTaskRepository.save(sortedTask); + taskRepository.save(sortedTask); } exercise.setProblemStatement(exercise.getProblemStatement().replaceAll("\\([^()]+\\)", "()")); - exerciseRepository.save(exercise); + programmingExerciseRepository.save(exercise); var availableExerciseHints = exerciseHintService.getAvailableExerciseHints(exercise, student); assertThat(availableExerciseHints).isEmpty(); } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/HestiaDatabaseTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/HestiaDatabaseTest.java index 2267bf5acaae..040547ae9cf9 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/HestiaDatabaseTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/HestiaDatabaseTest.java @@ -8,57 +8,24 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.CodeHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseSolutionEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; -import de.tum.cit.aet.artemis.programming.repository.hestia.CodeHintRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseSolutionEntryRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; /** * This class tests the database relations of the Hestia domain models. * This currently includes ProgrammingExerciseTask, ProgrammingExerciseSolutionEntry and CodeHint. * It tests if the addition and deletion of these models works as expected. */ -class HestiaDatabaseTest extends AbstractSpringIntegrationIndependentTest { +class HestiaDatabaseTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "hestiadatabase"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ProgrammingExerciseTaskRepository programmingExerciseTaskRepository; - - @Autowired - private ProgrammingExerciseSolutionEntryRepository programmingExerciseSolutionEntryRepository; - - @Autowired - private CodeHintRepository codeHintRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - private Long programmingExerciseId; @BeforeEach @@ -72,7 +39,7 @@ ProgrammingExerciseTask addTaskToProgrammingExercise(String taskName) { var task = new ProgrammingExerciseTask(); task.setTaskName(taskName); task.setExercise(programmingExerciseRepository.getReferenceById(programmingExerciseId)); - task = programmingExerciseTaskRepository.save(task); + task = taskRepository.save(task); return task; } @@ -92,21 +59,21 @@ ProgrammingExerciseSolutionEntry[] addSolutionEntriesToTestCase(int count, Progr @Test void addOneTaskToProgrammingExercise() { var task = addTaskToProgrammingExercise("Task 1"); - assertThat(programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExerciseId)).containsExactly(task); + assertThat(taskRepository.findByExerciseIdWithTestCases(programmingExerciseId)).containsExactly(task); } @Test void deleteProgrammingExerciseWithTask() { addOneTaskToProgrammingExercise(); programmingExerciseRepository.deleteById(programmingExerciseId); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExerciseId)).isEmpty(); + assertThat(taskRepository.findByExerciseId(programmingExerciseId)).isEmpty(); } @Test void addTestCasesWithSolutionEntriesToProgrammingExercise() { var programmingExercise = programmingExerciseRepository.findByIdElseThrow(programmingExerciseId); programmingExerciseUtilService.addTestCasesToProgrammingExercise(programmingExercise); - var testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId); + var testCases = testCaseRepository.findByExerciseId(programmingExerciseId); assertThat(testCases).isNotEmpty(); for (ProgrammingExerciseTestCase testCase : testCases) { var solutionEntries = addSolutionEntriesToTestCase(2, testCase); @@ -118,7 +85,7 @@ void addTestCasesWithSolutionEntriesToProgrammingExercise() { void deleteProgrammingExerciseWithTestCasesAndSolutionEntries() { addTestCasesWithSolutionEntriesToProgrammingExercise(); programmingExerciseRepository.deleteById(programmingExerciseId); - assertThat(programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId)).isEmpty(); + assertThat(testCaseRepository.findByExerciseId(programmingExerciseId)).isEmpty(); assertThat(programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(programmingExerciseId)).isEmpty(); } @@ -126,24 +93,24 @@ void deleteProgrammingExerciseWithTestCasesAndSolutionEntries() { void deleteTaskWithTestCases() { var programmingExercise = programmingExerciseRepository.findByIdElseThrow(programmingExerciseId); programmingExerciseUtilService.addTestCasesToProgrammingExercise(programmingExercise); - var testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId); + var testCases = testCaseRepository.findByExerciseId(programmingExerciseId); assertThat(testCases).isNotEmpty(); var task = addTaskToProgrammingExercise("Task 1"); task.setTestCases(testCases); - task = programmingExerciseTaskRepository.save(task); - programmingExerciseTaskRepository.delete(task); - assertThat(programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId)).isEqualTo(testCases); + task = taskRepository.save(task); + taskRepository.delete(task); + assertThat(testCaseRepository.findByExerciseId(programmingExerciseId)).isEqualTo(testCases); } @Test void addCodeHintToProgrammingExercise() { var programmingExercise = programmingExerciseRepository.findByIdElseThrow(programmingExerciseId); programmingExerciseUtilService.addTestCasesToProgrammingExercise(programmingExercise); - var testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId); + var testCases = testCaseRepository.findByExerciseId(programmingExerciseId); assertThat(testCases).isNotEmpty(); var task = addTaskToProgrammingExercise("Task 1"); task.setTestCases(testCases); - task = programmingExerciseTaskRepository.save(task); + task = taskRepository.save(task); Set allSolutionEntries = new HashSet<>(); for (ProgrammingExerciseTestCase testCase : testCases) { var solutionEntries = addSolutionEntriesToTestCase(2, testCase); @@ -162,7 +129,7 @@ void addCodeHintToProgrammingExercise() { codeHint.setSolutionEntries(allSolutionEntries); codeHint = codeHintRepository.save(codeHint); task.setExerciseHints(Set.of(codeHint)); - programmingExerciseTaskRepository.save(task); + taskRepository.save(task); assertThat(programmingExerciseSolutionEntryRepository.findByCodeHintId(codeHint.getId())).isEqualTo(allSolutionEntries); assertThat(codeHintRepository.findByExerciseId(programmingExerciseId)).containsExactly(codeHint); } @@ -172,7 +139,7 @@ void deleteCodeHint() { addCodeHintToProgrammingExercise(); var codeHint = codeHintRepository.findByExerciseId(programmingExerciseId).stream().findAny().orElseThrow(); codeHintRepository.delete(codeHint); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExerciseId)).hasSize(1); + assertThat(taskRepository.findByExerciseId(programmingExerciseId)).hasSize(1); assertThat(programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(programmingExerciseId)).hasSize(6); } @@ -180,19 +147,19 @@ void deleteCodeHint() { void deleteProgrammingExerciseWithCodeHint() { addCodeHintToProgrammingExercise(); programmingExerciseRepository.deleteById(programmingExerciseId); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExerciseId)).isEmpty(); + assertThat(taskRepository.findByExerciseId(programmingExerciseId)).isEmpty(); assertThat(programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(programmingExerciseId)).isEmpty(); assertThat(codeHintRepository.findByExerciseId(programmingExerciseId)).isEmpty(); - assertThat(programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId)).isEmpty(); + assertThat(testCaseRepository.findByExerciseId(programmingExerciseId)).isEmpty(); } @Test void deleteTaskWithCodeHint() { addCodeHintToProgrammingExercise(); - var task = programmingExerciseTaskRepository.findByExerciseId(programmingExerciseId).stream().findAny().orElseThrow(); - programmingExerciseTaskRepository.delete(task); + var task = taskRepository.findByExerciseId(programmingExerciseId).stream().findAny().orElseThrow(); + taskRepository.delete(task); assertThat(codeHintRepository.findByExerciseId(programmingExerciseId)).isEmpty(); - assertThat(programmingExerciseTestCaseRepository.findByExerciseId(programmingExerciseId)).hasSize(3); + assertThat(testCaseRepository.findByExerciseId(programmingExerciseId)).hasSize(3); assertThat(programmingExerciseSolutionEntryRepository.findByExerciseIdWithTestCases(programmingExerciseId)).hasSize(6); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportIntegrationTest.java index 6d5bf267139a..df54e4dc10f5 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportIntegrationTest.java @@ -7,24 +7,21 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseGitDiffEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseGitDiffReport; -import de.tum.cit.aet.artemis.programming.hestia.util.HestiaUtilTestService; -import de.tum.cit.aet.artemis.programming.icl.AbstractLocalCILocalVCIntegrationTest; -import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseGitDiffReportService; import de.tum.cit.aet.artemis.programming.util.LocalRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; /** * Tests for the ProgrammingExerciseGitDiffReportResource */ -class ProgrammingExerciseGitDiffReportIntegrationTest extends AbstractLocalCILocalVCIntegrationTest { +class ProgrammingExerciseGitDiffReportIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "progexgitdiffreport"; @@ -40,12 +37,6 @@ class ProgrammingExerciseGitDiffReportIntegrationTest extends AbstractLocalCILoc private ProgrammingExercise exercise; - @Autowired - private HestiaUtilTestService hestiaUtilTestService; - - @Autowired - private ProgrammingExerciseGitDiffReportService reportService; - @BeforeEach void initTestCase() throws Exception { Course course = courseUtilService.addEmptyCourse(); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportServiceTest.java index 70e3c6fb8301..2516a2f416fc 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseGitDiffReportServiceTest.java @@ -9,38 +9,22 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseGitDiffEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseGitDiffReport; -import de.tum.cit.aet.artemis.programming.hestia.util.HestiaUtilTestService; -import de.tum.cit.aet.artemis.programming.icl.AbstractLocalCILocalVCIntegrationTest; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseGitDiffReportRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseGitDiffReportService; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; /** * Tests for the ProgrammingExerciseGitDiffReportService */ -class ProgrammingExerciseGitDiffReportServiceTest extends AbstractLocalCILocalVCIntegrationTest { +class ProgrammingExerciseGitDiffReportServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "progexgitdiffreportservice"; - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - private static final String FILE_NAME = "test.java"; private final LocalRepository solutionRepo = new LocalRepository("main"); @@ -49,15 +33,6 @@ class ProgrammingExerciseGitDiffReportServiceTest extends AbstractLocalCILocalVC private ProgrammingExercise exercise; - @Autowired - private HestiaUtilTestService hestiaUtilTestService; - - @Autowired - private ProgrammingExerciseGitDiffReportService reportService; - - @Autowired - private ProgrammingExerciseGitDiffReportRepository reportRepository; - @Override protected String getTestPrefix() { return TEST_PREFIX; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseSolutionEntryIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseSolutionEntryIntegrationTest.java index 4bf515d2e4db..17d326cfc221 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseSolutionEntryIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseSolutionEntryIntegrationTest.java @@ -8,41 +8,20 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.CodeHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseSolutionEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; -import de.tum.cit.aet.artemis.programming.repository.hestia.CodeHintRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseSolutionEntryRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseSolutionEntryIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseSolutionEntryIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progexsolutionentry"; - @Autowired - private ProgrammingExerciseSolutionEntryRepository programmingExerciseSolutionEntryRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ProgrammingExerciseTaskRepository programmingExerciseTaskRepository; - - @Autowired - private CodeHintRepository codeHintRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - private ProgrammingExercise programmingExercise; private CodeHint codeHint; @@ -53,7 +32,7 @@ void initTestCase() { userUtilService.addUsers(TEST_PREFIX, 2, 2, 1, 2); programmingExercise = exerciseUtilService.getFirstExerciseWithType(course, ProgrammingExercise.class); - Set testCases = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()); + Set testCases = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()); codeHint = new CodeHint(); codeHint.setExercise(programmingExercise); @@ -76,7 +55,7 @@ void initTestCase() { task.setExercise(programmingExercise); task.setTaskName("Task"); task.setTestCases(new HashSet<>(testCases)); - task = programmingExerciseTaskRepository.save(task); + task = taskRepository.save(task); codeHint.setProgrammingExerciseTask(task); codeHintRepository.save(codeHint); } @@ -119,8 +98,7 @@ void testGetSolutionEntriesByCodeHintId() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "student1", roles = "USER") void testGetSolutionEntriesByTestCaseId() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); final var solutionEntries = new HashSet<>( request.getList("/api/programming-exercises/" + programmingExercise.getId() + "/test-cases/" + testCase.getId() + "/solution-entries", HttpStatus.OK, ProgrammingExerciseSolutionEntry.class)); @@ -139,8 +117,7 @@ void testGetAllSolutionEntries() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "editor1", roles = "EDITOR") void testDeleteSolutionEntry() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); Long entryId = testCase.getSolutionEntries().stream().findFirst().orElseThrow().getId(); request.delete("/api/programming-exercises/" + programmingExercise.getId() + "/test-cases/" + testCase.getId() + "/solution-entries/" + entryId, HttpStatus.NO_CONTENT); assertThat(programmingExerciseSolutionEntryRepository.findById(entryId)).isEmpty(); @@ -149,8 +126,7 @@ void testDeleteSolutionEntry() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "student1", roles = "STUDENT") void testDeleteSolutionEntryAsStudent() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); Long entryId = testCase.getSolutionEntries().stream().findFirst().orElseThrow().getId(); request.delete("/api/programming-exercises/" + programmingExercise.getId() + "/test-cases/" + testCase.getId() + "/solution-entries/" + entryId, HttpStatus.FORBIDDEN); } @@ -158,8 +134,7 @@ void testDeleteSolutionEntryAsStudent() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "tutor1", roles = "TA") void testDeleteSolutionEntryAsTutor() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); Long entryId = testCase.getSolutionEntries().stream().findFirst().orElseThrow().getId(); request.delete("/api/programming-exercises/" + programmingExercise.getId() + "/test-cases/" + testCase.getId() + "/solution-entries/" + entryId, HttpStatus.FORBIDDEN); } @@ -174,8 +149,7 @@ void testDeleteAllSolutionEntriesForExercise() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "editor1", roles = "EDITOR") void testUpdateSolutionEntry() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); ProgrammingExerciseSolutionEntry entry = testCase.getSolutionEntries().stream().findFirst().orElseThrow(); Long entryId = entry.getId(); String updatedFilePath = "NewPath.java"; @@ -190,8 +164,7 @@ void testUpdateSolutionEntry() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "editor1", roles = "EDITOR") void testUpdateSolutionEntryWithInvalidId() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); ProgrammingExerciseSolutionEntry entry = testCase.getSolutionEntries().stream().findFirst().orElseThrow(); Long entryId = entry.getId(); String updatedFilePath = "NewPath.java"; @@ -206,8 +179,7 @@ void testUpdateSolutionEntryWithInvalidId() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "student1", roles = "STUDENT") void testUpdateSolutionEntryAsStudent() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); ProgrammingExerciseSolutionEntry entry = testCase.getSolutionEntries().stream().findFirst().orElseThrow(); Long entryId = entry.getId(); @@ -217,8 +189,7 @@ void testUpdateSolutionEntryAsStudent() throws Exception { @Test @WithMockUser(username = TEST_PREFIX + "tutor1", roles = "TA") void testUpdateSolutionEntryAsTutor() throws Exception { - ProgrammingExerciseTestCase testCase = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst() - .orElseThrow(); + ProgrammingExerciseTestCase testCase = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()).stream().findFirst().orElseThrow(); ProgrammingExerciseSolutionEntry entry = testCase.getSolutionEntries().stream().findFirst().orElseThrow(); Long entryId = entry.getId(); @@ -259,7 +230,7 @@ void testCreateManualSolutionEntry() throws Exception { manualEntry.setLine(1); manualEntry.setFilePath("src/de/tum/in/ase/BubbleSort.java"); - var testCase = programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()).stream().findFirst().orElseThrow(); + var testCase = testCaseRepository.findByExerciseId(programmingExercise.getId()).stream().findFirst().orElseThrow(); manualEntry.setTestCase(testCase); request.postWithoutLocation("/api/programming-exercises/" + programmingExercise.getId() + "/test-cases/" + testCase.getId() + "/solution-entries", manualEntry, diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskIntegrationTest.java index c302c5945314..c4def2a98eb6 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskIntegrationTest.java @@ -10,46 +10,21 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.DomainObject; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseSolutionEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseSolutionEntryRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseTaskService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseTaskIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseTaskIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progextask"; - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseTaskRepository programmingExerciseTaskRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private ProgrammingExerciseSolutionEntryRepository programmingExerciseSolutionEntryRepository; - - @Autowired - private ProgrammingExerciseTaskService programmingExerciseTaskService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - private ProgrammingExercise programmingExercise; private Set testCases; @@ -60,7 +35,7 @@ void initTestCases() { final Course course = programmingExerciseUtilService.addCourseWithOneProgrammingExerciseAndSpecificTestCases(); programmingExercise = exerciseUtilService.getFirstExerciseWithType(course, ProgrammingExercise.class); - this.testCases = programmingExerciseTestCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()); + this.testCases = testCaseRepository.findByExerciseIdWithSolutionEntries(programmingExercise.getId()); for (ProgrammingExerciseTestCase testCase : testCases) { var solutionEntry = new ProgrammingExerciseSolutionEntry(); solutionEntry.setTestCase(testCase); @@ -102,10 +77,10 @@ void testDeleteAllTasksAndSolutionEntriesForProgrammingExercise() throws Excepti task.setExercise(programmingExercise); task.setTaskName("Task"); task.setTestCases(new HashSet<>(testCases)); - programmingExerciseTaskRepository.save(task); + taskRepository.save(task); request.delete("/api/programming-exercises/" + programmingExercise.getId() + "/tasks", HttpStatus.NO_CONTENT); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); assertThat(programmingExerciseSolutionEntryRepository.findAllById(solutionEntryIdsBeforeDeleting)).isEmpty(); } @@ -139,7 +114,7 @@ void testTaskExtractionForProgrammingExercise() throws Exception { programmingExerciseTaskService.updateTasksFromProblemStatement(programmingExercise); request.get("/api/programming-exercises/" + programmingExercise.getId() + "/tasks", HttpStatus.OK, Set.class); - Set extractedTasks = programmingExerciseTaskRepository.findByExerciseIdWithTestCaseAndSolutionEntriesElseThrow(programmingExercise.getId()); + Set extractedTasks = taskRepository.findByExerciseIdWithTestCaseAndSolutionEntriesElseThrow(programmingExercise.getId()); Optional task1Optional = extractedTasks.stream().filter(task -> task.getTaskName().equals(taskName1)).findFirst(); Optional task2Optional = extractedTasks.stream().filter(task -> task.getTaskName().equals(taskName2)).findFirst(); assertThat(task1Optional).isPresent(); @@ -164,7 +139,7 @@ void testTaskExtractionForEmptyProblemStatement() throws Exception { request.get("/api/programming-exercises/" + programmingExercise.getId() + "/tasks", HttpStatus.OK, Set.class); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); } @Test diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskServiceTest.java index b2fcb4b0bf31..a322fa44ba44 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/ProgrammingExerciseTaskServiceTest.java @@ -9,53 +9,20 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.DomainObject; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.CodeHint; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTask; -import de.tum.cit.aet.artemis.programming.repository.hestia.CodeHintRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseTaskRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.ProgrammingExerciseTaskService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseTaskServiceTest extends AbstractSpringIntegrationIndependentTest { +class ProgrammingExerciseTaskServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "progextaskservice"; - @Autowired - private ProgrammingExerciseTaskService programmingExerciseTaskService; - - @Autowired - private ProgrammingExerciseTaskRepository programmingExerciseTaskRepository; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private CodeHintRepository codeHintRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - private ProgrammingExercise programmingExercise; @BeforeEach @@ -78,24 +45,23 @@ private void updateProblemStatement(String problemStatement) { @Test void testNewExercise() { - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).hasSize(2); - var tasks = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).hasSize(2); + var tasks = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); assertThat(tasks).hasSize(2).anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 1", "testClass[BubbleSort]")) .anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 2", "testMethods[Context]")); } @Test void testAddTask() { - var previousTaskIds = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId) - .collect(Collectors.toSet()); + var previousTaskIds = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId).collect(Collectors.toSet()); updateProblemStatement(""" [task][Task 1](testClass[BubbleSort]) [task][Task 2](testMethods[Context]) [task][Task 3](testMethods[Policy]) """); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).hasSize(3); - var tasks = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).hasSize(3); + var tasks = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); assertThat(tasks).hasSize(3).anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 1", "testClass[BubbleSort]")) .anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 2", "testMethods[Context]")) .anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 3", "testMethods[Policy]")); @@ -108,14 +74,14 @@ void testAddTask() { @Test void testRemoveAllTasks() { updateProblemStatement("Empty"); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); } @Test void testReduceToOneTask() { updateProblemStatement("[task][Task 1](testClass[BubbleSort],testMethods[Context], testMethods[Policy])"); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).hasSize(1); - var tasks = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).hasSize(1); + var tasks = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); assertThat(tasks).hasSize(1); var task = tasks.stream().findFirst().orElseThrow(); assertThat(task.getTaskName()).isEqualTo("Task 1"); @@ -130,21 +96,20 @@ void testReduceToOneTask() { */ @Test void testRenameTask() { - var previousTaskIds = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId) - .collect(Collectors.toSet()); + var previousTaskIds = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId).collect(Collectors.toSet()); updateProblemStatement(""" [task][Task 1a](testClass[BubbleSort]) [task][Task 2](testMethods[Context]) """); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).hasSize(2); - var tasks = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).hasSize(2); + var tasks = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()); var newTaskIds = tasks.stream().map(ProgrammingExerciseTask::getId).collect(Collectors.toSet()); assertThat(previousTaskIds).isEqualTo(newTaskIds); - assertThat(programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId())).isEqualTo(tasks); + assertThat(taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId())).isEqualTo(tasks); assertThat(tasks).anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 1a", "testClass[BubbleSort]")) .anyMatch(programmingExerciseTask -> checkTaskEqual(programmingExerciseTask, "Task 2", "testMethods[Context]")); @@ -155,8 +120,7 @@ void testRenameTask() { */ @Test void testNoChanges() { - var previousTaskIds = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId) - .collect(Collectors.toSet()); + var previousTaskIds = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId).collect(Collectors.toSet()); updateProblemStatement(""" Test @@ -164,17 +128,15 @@ void testNoChanges() { [task][Task 2](testMethods[Context]) """); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).hasSize(2); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).hasSize(2); - var newTaskIds = programmingExerciseTaskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId) - .collect(Collectors.toSet()); + var newTaskIds = taskRepository.findByExerciseIdWithTestCases(programmingExercise.getId()).stream().map(ProgrammingExerciseTask::getId).collect(Collectors.toSet()); assertThat(previousTaskIds).isEqualTo(newTaskIds); } @Test void testDeleteWithCodeHints() { - var task = programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId()).stream().filter(task1 -> "Task 1".equals(task1.getTaskName())).findFirst() - .orElse(null); + var task = taskRepository.findByExerciseId(programmingExercise.getId()).stream().filter(task1 -> "Task 1".equals(task1.getTaskName())).findFirst().orElse(null); assertThat(task).isNotNull(); var codeHint = new CodeHint(); @@ -183,8 +145,8 @@ void testDeleteWithCodeHints() { codeHintRepository.save(codeHint); programmingExerciseTaskService.delete(task); - assertThat(programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId())).hasSize(1); - assertThat(programmingExerciseTaskRepository.findById(task.getId())).isEmpty(); + assertThat(taskRepository.findByExerciseId(programmingExercise.getId())).hasSize(1); + assertThat(taskRepository.findById(task.getId())).isEmpty(); assertThat(codeHintRepository.findByExerciseId(programmingExercise.getId())).isEmpty(); } @@ -194,7 +156,7 @@ void getTasksWithoutInactiveFiltersOutInactive() { programmingExercise = programmingExerciseRepository .findByIdWithEagerTestCasesStaticCodeAnalysisCategoriesHintsAndTemplateAndSolutionParticipationsAndAuxReposAndBuildConfig(programmingExercise.getId()) .orElseThrow(); - programmingExerciseTestCaseRepository.deleteAll(programmingExercise.getTestCases()); + testCaseRepository.deleteAll(programmingExercise.getTestCases()); String[] testCaseNames = { "testClass[BubbleSort]", "testParametrized(Parameter1, 2)[1]" }; for (var name : testCaseNames) { @@ -202,14 +164,14 @@ void getTasksWithoutInactiveFiltersOutInactive() { testCase.setExercise(programmingExercise); testCase.setTestName(name); testCase.setActive(true); - programmingExerciseTestCaseRepository.save(testCase); + testCaseRepository.save(testCase); } var testCase = new ProgrammingExerciseTestCase(); testCase.setExercise(programmingExercise); testCase.setTestName("testWithBraces()"); testCase.setActive(false); - programmingExerciseTestCaseRepository.save(testCase); + testCaseRepository.save(testCase); programmingExercise = programmingExerciseRepository .findByIdWithEagerTestCasesStaticCodeAnalysisCategoriesHintsAndTemplateAndSolutionParticipationsAndAuxReposAndBuildConfig(programmingExercise.getId()) @@ -232,7 +194,7 @@ void testParseTestCaseNames() { programmingExercise = programmingExerciseRepository .findByIdWithEagerTestCasesStaticCodeAnalysisCategoriesHintsAndTemplateAndSolutionParticipationsAndAuxReposAndBuildConfig(programmingExercise.getId()) .orElseThrow(); - programmingExerciseTestCaseRepository.deleteAll(programmingExercise.getTestCases()); + testCaseRepository.deleteAll(programmingExercise.getTestCases()); String[] testCaseNames = new String[] { "testClass[BubbleSort]", "testWithBraces()", "testParametrized(Parameter1, 2)[1]" }; for (var name : testCaseNames) { @@ -240,7 +202,7 @@ void testParseTestCaseNames() { testCase.setExercise(programmingExercise); testCase.setTestName(name); testCase.setActive(true); - programmingExerciseTestCaseRepository.save(testCase); + testCaseRepository.save(testCase); } programmingExercise = programmingExerciseRepository .findByIdWithEagerTestCasesStaticCodeAnalysisCategoriesHintsAndTemplateAndSolutionParticipationsAndAuxReposAndBuildConfig(programmingExercise.getId()) @@ -250,10 +212,10 @@ void testParseTestCaseNames() { [task][Task 1](testClass[BubbleSort],testWithBraces(),testParametrized(Parameter1, 2)[1]) """); - var actualTasks = programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId()); + var actualTasks = taskRepository.findByExerciseId(programmingExercise.getId()); assertThat(actualTasks).hasSize(1); final var actualTask = actualTasks.iterator().next().getId(); - var actualTaskWithTestCases = programmingExerciseTaskRepository.findByIdWithTestCaseAndSolutionEntriesElseThrow(actualTask); + var actualTaskWithTestCases = taskRepository.findByIdWithTestCaseAndSolutionEntriesElseThrow(actualTask); assertThat(actualTaskWithTestCases.getTaskName()).isEqualTo("Task 1"); var actualTestCaseNames = actualTaskWithTestCases.getTestCases().stream().map(ProgrammingExerciseTestCase::getTestName).toList(); assertThat(actualTestCaseNames).containsExactlyInAnyOrder(testCaseNames); @@ -262,15 +224,15 @@ void testParseTestCaseNames() { @Test @WithMockUser(username = "instructor1", roles = "INSTRUCTOR") void testExtractTasksFromTestIds() { - var test1 = programmingExerciseTestCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); - var test2 = programmingExerciseTestCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testMethods[Context]").orElseThrow(); + var test1 = testCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); + var test2 = testCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testMethods[Context]").orElseThrow(); updateProblemStatement("[task][Task 1](%s,%s)".formatted(test1.getId(), test2.getId())); - var actualTasks = programmingExerciseTaskRepository.findByExerciseId(programmingExercise.getId()); + var actualTasks = taskRepository.findByExerciseId(programmingExercise.getId()); assertThat(actualTasks).hasSize(1); final var actualTask = actualTasks.iterator().next().getId(); - var actualTaskWithTestCases = programmingExerciseTaskRepository.findByIdWithTestCaseAndSolutionEntriesElseThrow(actualTask); + var actualTaskWithTestCases = taskRepository.findByIdWithTestCaseAndSolutionEntriesElseThrow(actualTask); assertThat(actualTaskWithTestCases.getTaskName()).isEqualTo("Task 1"); var actualTestCaseNames = actualTaskWithTestCases.getTestCases().stream().map(ProgrammingExerciseTestCase::getTestName).toList(); assertThat(actualTestCaseNames).containsExactlyInAnyOrder("testClass[BubbleSort]", "testMethods[Context]"); @@ -283,7 +245,7 @@ private boolean checkTaskEqual(ProgrammingExerciseTask task, String expectedName @Test void testNameReplacement() { - Map testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()).stream() + Map testCases = testCaseRepository.findByExerciseId(programmingExercise.getId()).stream() .collect(Collectors.toMap(ProgrammingExerciseTestCase::getTestName, ProgrammingExerciseTestCase::getId)); programmingExerciseTaskService.replaceTestNamesWithIds(programmingExercise); @@ -300,9 +262,9 @@ void testNameReplacement() { void testNameReplacementKeepsInactiveTests() { // Task 1 is inactive, task 2 does not exist updateProblemStatement("[task][Task 1](testClass[BubbleSort])\n[task][Task 2](nonExistingTask)"); - var testCase = programmingExerciseTestCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); + var testCase = testCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); testCase.setActive(false); - programmingExerciseTestCaseRepository.save(testCase); + testCaseRepository.save(testCase); programmingExerciseTaskService.replaceTestNamesWithIds(programmingExercise); String problemStatement = programmingExercise.getProblemStatement(); @@ -313,7 +275,7 @@ void testNameReplacementKeepsInactiveTests() { @Test void testNameReplacementSpecialNames() { - var bubbleSort = programmingExerciseTestCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); + var bubbleSort = testCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); var braces = programmingExerciseUtilService.addTestCaseToProgrammingExercise(programmingExercise, "testWithBraces()"); var parameterized = programmingExerciseUtilService.addTestCaseToProgrammingExercise(programmingExercise, "testParametrized(Parameter1, 2)[1]"); updateProblemStatement(""" @@ -414,10 +376,10 @@ class LinkedList { @Test void testIdReplacementWithNames() { - var bubbleSort = programmingExerciseTestCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); + var bubbleSort = testCaseRepository.findByExerciseIdAndTestName(programmingExercise.getId(), "testClass[BubbleSort]").orElseThrow(); var inactiveTest = programmingExerciseUtilService.addTestCaseToProgrammingExercise(programmingExercise, "testName"); inactiveTest.setActive(false); - programmingExerciseTestCaseRepository.save(inactiveTest); + testCaseRepository.save(inactiveTest); updateProblemStatement("[task][Taskname](%s,%s)".formatted(bubbleSort.getId(), inactiveTest.getId())); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/StructuralTestCaseServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/StructuralTestCaseServiceTest.java index 08d6f5994ac7..747032881267 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/StructuralTestCaseServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/StructuralTestCaseServiceTest.java @@ -9,21 +9,15 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.core.util.CourseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTestCaseType; -import de.tum.cit.aet.artemis.programming.hestia.util.HestiaUtilTestService; -import de.tum.cit.aet.artemis.programming.icl.AbstractLocalCILocalVCIntegrationTest; import de.tum.cit.aet.artemis.programming.service.hestia.structural.StructuralSolutionEntryGenerationException; -import de.tum.cit.aet.artemis.programming.service.hestia.structural.StructuralTestCaseService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; import de.tum.cit.aet.artemis.programming.util.LocalRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; @@ -31,29 +25,14 @@ * Tests for the StructuralTestCaseService * Test if solution entries are generated as expected for structural tests */ -class StructuralTestCaseServiceTest extends AbstractLocalCILocalVCIntegrationTest { +class StructuralTestCaseServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "structuraltestcaseservice"; - @Autowired - private CourseUtilService courseUtilService; - - @Autowired - private UserUtilService userUtilService; - private final LocalRepository solutionRepo = new LocalRepository("main"); private final LocalRepository testRepo = new LocalRepository("main"); - @Autowired - private HestiaUtilTestService hestiaUtilTestService; - - @Autowired - private StructuralTestCaseService structuralTestCaseService; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - private ProgrammingExercise exercise; @Override diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageIntegrationTest.java index 6319f8395fd4..a9544af19d89 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageIntegrationTest.java @@ -7,11 +7,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; @@ -19,40 +19,11 @@ import de.tum.cit.aet.artemis.programming.domain.hestia.CoverageFileReport; import de.tum.cit.aet.artemis.programming.domain.hestia.CoverageReport; import de.tum.cit.aet.artemis.programming.domain.hestia.TestwiseCoverageReportEntry; -import de.tum.cit.aet.artemis.programming.repository.SolutionProgrammingExerciseParticipationRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageFileReportRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageReportRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.TestwiseCoverageReportEntryRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class TestwiseCoverageIntegrationTest extends AbstractSpringIntegrationIndependentTest { +class TestwiseCoverageIntegrationTest extends AbstractProgrammingIntegrationIndependentTest { private static final String TEST_PREFIX = "testwisecoverageint"; - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private CoverageReportRepository coverageReportRepository; - - @Autowired - private CoverageFileReportRepository coverageFileReportRepository; - - @Autowired - private TestwiseCoverageReportEntryRepository testwiseCoverageReportEntryRepository; - - @Autowired - private ProgrammingSubmissionTestRepository programmingSubmissionRepository; - - @Autowired - private SolutionProgrammingExerciseParticipationRepository solutionProgrammingExerciseRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - private ProgrammingExercise programmingExercise; private ProgrammingSubmission latestSolutionSubmission; @@ -64,7 +35,7 @@ void setup() { userUtilService.addUsers(TEST_PREFIX, 1, 1, 0, 0); final Course course = programmingExerciseUtilService.addCourseWithOneProgrammingExercise(false, true, ProgrammingLanguage.JAVA); programmingExercise = exerciseUtilService.getFirstExerciseWithType(course, ProgrammingExercise.class); - var solutionParticipation = solutionProgrammingExerciseRepository.findWithEagerResultsAndSubmissionsByProgrammingExerciseId(programmingExercise.getId()).orElseThrow(); + var solutionParticipation = solutionEntryRepository.findWithEagerResultsAndSubmissionsByProgrammingExerciseId(programmingExercise.getId()).orElseThrow(); var unsavedPreviousSubmission = new ProgrammingSubmission(); unsavedPreviousSubmission.setParticipation(solutionParticipation); unsavedPreviousSubmission.setSubmissionDate(ZonedDateTime.of(2022, 4, 5, 12, 0, 0, 0, ZoneId.of("Europe/Berlin"))); @@ -74,8 +45,8 @@ void setup() { unsavedLatestSubmission.setSubmissionDate(ZonedDateTime.of(2022, 4, 5, 13, 0, 0, 0, ZoneId.of("Europe/Berlin"))); latestSolutionSubmission = programmingSubmissionRepository.save(unsavedLatestSubmission); - var testCase1 = programmingExerciseTestCaseRepository.save(new ProgrammingExerciseTestCase().exercise(programmingExercise).testName("test1()")); - var testCase2 = programmingExerciseTestCaseRepository.save(new ProgrammingExerciseTestCase().exercise(programmingExercise).testName("test2()")); + var testCase1 = testCaseRepository.save(new ProgrammingExerciseTestCase().exercise(programmingExercise).testName("test1()")); + var testCase2 = testCaseRepository.save(new ProgrammingExerciseTestCase().exercise(programmingExercise).testName("test2()")); generateAndSaveSimpleReport(0.3, "src/de/tum/in/ase/BubbleSort.java", 15, 5, 1, 5, testCase1, previousSolutionSubmission); latestReport = generateAndSaveSimpleReport(0.4, "src/de/tum/in/ase/BubbleSort.java", 20, 8, 1, 8, testCase2, latestSolutionSubmission); } diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageReportServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageReportServiceTest.java index ba89b52dc804..18addd11453e 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageReportServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/TestwiseCoverageReportServiceTest.java @@ -9,60 +9,23 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; import de.tum.cit.aet.artemis.programming.domain.hestia.TestwiseCoverageReportEntry; -import de.tum.cit.aet.artemis.programming.hestia.util.HestiaUtilTestService; import de.tum.cit.aet.artemis.programming.hestia.util.TestwiseCoverageTestUtil; -import de.tum.cit.aet.artemis.programming.icl.AbstractLocalCILocalVCIntegrationTest; -import de.tum.cit.aet.artemis.programming.repository.SolutionProgrammingExerciseParticipationRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageReportRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.TestwiseCoverageService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -class TestwiseCoverageReportServiceTest extends AbstractLocalCILocalVCIntegrationTest { +class TestwiseCoverageReportServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "testwisecoveragereportservice"; - @Autowired - private TestwiseCoverageService testwiseCoverageService; - - @Autowired - private CoverageReportRepository coverageReportRepository; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository programmingExerciseTestCaseRepository; - - @Autowired - private SolutionProgrammingExerciseParticipationRepository solutionProgrammingExerciseRepository; - - @Autowired - private HestiaUtilTestService hestiaUtilTestService; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - private ProgrammingExercise programmingExercise; private ProgrammingSubmission solutionSubmission; @@ -85,9 +48,9 @@ void setup() throws Exception { solutionRepo); var testCase1 = new ProgrammingExerciseTestCase().testName("test1()").exercise(programmingExercise).active(true).weight(1.0); - programmingExerciseTestCaseRepository.save(testCase1); + testCaseRepository.save(testCase1); var testCase2 = new ProgrammingExerciseTestCase().testName("test2()").exercise(programmingExercise).active(true).weight(1.0); - programmingExerciseTestCaseRepository.save(testCase2); + testCaseRepository.save(testCase2); var solutionParticipation = solutionProgrammingExerciseRepository.findWithEagerResultsAndSubmissionsByProgrammingExerciseId(programmingExercise.getId()).orElseThrow(); solutionSubmission = programmingExerciseUtilService.createProgrammingSubmission(solutionParticipation, false); programmingExercise = programmingExerciseRepository.findByIdElseThrow(programmingExercise.getId()); @@ -110,7 +73,7 @@ void shouldCreateFullTestwiseCoverageReport() { // 18/50 lines covered = 32% assertThat(report.getCoveredLineRatio()).isEqualTo(0.32); - var testCases = programmingExerciseTestCaseRepository.findByExerciseId(programmingExercise.getId()); + var testCases = testCaseRepository.findByExerciseId(programmingExercise.getId()); var testCase1 = testCases.stream().filter(testCase -> "test1()".equals(testCase.getTestName())).findFirst().orElseThrow(); var testCase2 = testCases.stream().filter(testCase -> "test2()".equals(testCase.getTestName())).findFirst().orElseThrow(); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/behavioral/BehavioralTestCaseServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/behavioral/BehavioralTestCaseServiceLocalCILocalVCTest.java similarity index 74% rename from src/test/java/de/tum/cit/aet/artemis/programming/hestia/behavioral/BehavioralTestCaseServiceTest.java rename to src/test/java/de/tum/cit/aet/artemis/programming/hestia/behavioral/BehavioralTestCaseServiceLocalCILocalVCTest.java index f646dd652ded..d4de36c789e9 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/hestia/behavioral/BehavioralTestCaseServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/hestia/behavioral/BehavioralTestCaseServiceLocalCILocalVCTest.java @@ -8,13 +8,11 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; @@ -25,57 +23,14 @@ import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseSolutionEntry; import de.tum.cit.aet.artemis.programming.domain.hestia.ProgrammingExerciseTestCaseType; import de.tum.cit.aet.artemis.programming.domain.hestia.TestwiseCoverageReportEntry; -import de.tum.cit.aet.artemis.programming.hestia.util.HestiaUtilTestService; -import de.tum.cit.aet.artemis.programming.icl.AbstractLocalCILocalVCIntegrationTest; -import de.tum.cit.aet.artemis.programming.repository.SolutionProgrammingExerciseParticipationRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageFileReportRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.CoverageReportRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.ProgrammingExerciseGitDiffReportRepository; -import de.tum.cit.aet.artemis.programming.repository.hestia.TestwiseCoverageReportEntryRepository; -import de.tum.cit.aet.artemis.programming.service.hestia.behavioral.BehavioralTestCaseService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -class BehavioralTestCaseServiceTest extends AbstractLocalCILocalVCIntegrationTest { +class BehavioralTestCaseServiceLocalCILocalVCTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "behavioraltestcastservice"; private final LocalRepository solutionRepo = new LocalRepository("main"); - @Autowired - private BehavioralTestCaseService behavioralTestCaseService; - - @Autowired - private HestiaUtilTestService hestiaUtilTestService; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - - @Autowired - private ProgrammingExerciseGitDiffReportRepository programmingExerciseGitDiffReportRepository; - - @Autowired - private SolutionProgrammingExerciseParticipationRepository solutionProgrammingExerciseRepository; - - @Autowired - private CoverageReportRepository coverageReportRepository; - - @Autowired - private CoverageFileReportRepository coverageFileReportRepository; - - @Autowired - private TestwiseCoverageReportEntryRepository testwiseCoverageReportEntryRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - private ProgrammingExercise exercise; @Override @@ -113,7 +68,7 @@ private ProgrammingExerciseGitDiffReport newGitDiffReport() { gitDiffReport.setProgrammingExercise(exercise); gitDiffReport.setSolutionRepositoryCommitHash("123a"); gitDiffReport.setTemplateRepositoryCommitHash("123b"); - gitDiffReport = programmingExerciseGitDiffReportRepository.save(gitDiffReport); + gitDiffReport = reportRepository.save(gitDiffReport); return gitDiffReport; } @@ -124,7 +79,7 @@ private ProgrammingExerciseGitDiffReport addGitDiffEntry(String filePath, int st gitDiffEntry.setLineCount(lineCount); gitDiffEntry.setGitDiffReport(gitDiffReport); gitDiffReport.getEntries().add(gitDiffEntry); - return programmingExerciseGitDiffReportRepository.save(gitDiffReport); + return reportRepository.save(gitDiffReport); } private CoverageReport newCoverageReport() { diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIIntegrationTest.java index 4563d7c9f95c..0be99f7c9aa1 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIIntegrationTest.java @@ -40,9 +40,6 @@ import org.junit.jupiter.api.parallel.ExecutionMode; import org.mockito.ArgumentMatcher; import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.FileSystemResource; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; @@ -53,7 +50,6 @@ import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.api.model.Frame; import com.hazelcast.collection.IQueue; -import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; import de.tum.cit.aet.artemis.assessment.domain.Result; @@ -62,15 +58,12 @@ import de.tum.cit.aet.artemis.core.exception.VersionControlException; import de.tum.cit.aet.artemis.exercise.domain.ExerciseMode; import de.tum.cit.aet.artemis.exercise.domain.Team; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingSubmission; import de.tum.cit.aet.artemis.programming.domain.RepositoryType; import de.tum.cit.aet.artemis.programming.domain.build.BuildJob; import de.tum.cit.aet.artemis.programming.domain.build.BuildStatus; -import de.tum.cit.aet.artemis.programming.service.BuildLogEntryService; -import de.tum.cit.aet.artemis.programming.service.ParticipationVcsAccessTokenService; -import de.tum.cit.aet.artemis.programming.service.localvc.LocalVCServletService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingSubmissionTestRepository; import de.tum.cit.aet.artemis.programming.util.LocalRepository; // TestInstance.Lifecycle.PER_CLASS allows all test methods in this class to share the same instance of the test class. @@ -84,32 +77,10 @@ // concurrently. For example, it prevents overloading the LocalCI's result processing system with too many build job results at the same time, which could lead to flaky tests // or timeouts. By keeping everything in the same thread, we maintain more predictable and stable test behavior, while not increasing the test execution time significantly. @Execution(ExecutionMode.SAME_THREAD) -class LocalCIIntegrationTest extends AbstractLocalCILocalVCIntegrationTest { +class LocalCIIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "localciint"; - @Autowired - private LocalVCServletService localVCServletService; - - @Autowired - private ProgrammingSubmissionTestRepository programmingSubmissionRepository; - - @Autowired - private ParticipationVcsAccessTokenService participationVcsAccessTokenService; - - @Autowired - private BuildLogEntryService buildLogEntryService; - - @Autowired - @Qualifier("hazelcastInstance") - private HazelcastInstance hazelcastInstance; - - @Value("${artemis.user-management.internal-admin.username}") - private String localVCUsername; - - @Value("${artemis.user-management.internal-admin.password}") - private String localVCPassword; - @Override protected String getTestPrefix() { return TEST_PREFIX; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResourceIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResourceIntegrationTest.java index e05b87776154..e5c7f52e1413 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResourceIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResourceIntegrationTest.java @@ -14,14 +14,11 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; import com.hazelcast.collection.IQueue; -import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; import de.tum.cit.aet.artemis.assessment.domain.AssessmentType; @@ -33,33 +30,18 @@ import de.tum.cit.aet.artemis.buildagent.dto.FinishedBuildJobDTO; import de.tum.cit.aet.artemis.buildagent.dto.JobTimingInfo; import de.tum.cit.aet.artemis.buildagent.dto.RepositoryInfo; -import de.tum.cit.aet.artemis.buildagent.service.SharedQueueProcessingService; import de.tum.cit.aet.artemis.core.dto.SortingOrder; import de.tum.cit.aet.artemis.core.dto.pageablesearch.PageableSearchDTO; -import de.tum.cit.aet.artemis.core.util.PageableSearchUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.RepositoryType; import de.tum.cit.aet.artemis.programming.domain.build.BuildJob; import de.tum.cit.aet.artemis.programming.domain.build.BuildLogEntry; import de.tum.cit.aet.artemis.programming.domain.build.BuildStatus; -import de.tum.cit.aet.artemis.programming.service.BuildLogEntryService; -class LocalCIResourceIntegrationTest extends AbstractLocalCILocalVCIntegrationTest { +class LocalCIResourceIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "localciresourceint"; - @Autowired - @Qualifier("hazelcastInstance") - private HazelcastInstance hazelcastInstance; - - @Autowired - private SharedQueueProcessingService sharedQueueProcessingService; - - @Autowired - private BuildLogEntryService buildLogEntryService; - - @Autowired - private PageableSearchUtilService pageableSearchUtilService; - protected BuildJobQueueItem job1; protected BuildJobQueueItem job2; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResultServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResultServiceTest.java index a951d065e0cc..abba77e692d2 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResultServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIResultServiceTest.java @@ -6,19 +6,15 @@ import java.util.Collections; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import de.tum.cit.aet.artemis.core.exception.LocalCIException; -import de.tum.cit.aet.artemis.programming.service.localci.LocalCIResultService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -class LocalCIResultServiceTest extends AbstractLocalCILocalVCIntegrationTest { +class LocalCIResultServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "localciresultservice"; - @Autowired - private LocalCIResultService localCIResultService; - @Override protected String getTestPrefix() { return TEST_PREFIX; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIServiceTest.java index b935eb8d2d67..a3fbfd1b2a7b 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalCIServiceTest.java @@ -11,8 +11,6 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.test.context.support.WithMockUser; @@ -20,56 +18,27 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.hazelcast.collection.IQueue; -import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; import de.tum.cit.aet.artemis.buildagent.dto.BuildConfig; import de.tum.cit.aet.artemis.buildagent.dto.BuildJobQueueItem; import de.tum.cit.aet.artemis.buildagent.dto.JobTimingInfo; import de.tum.cit.aet.artemis.buildagent.dto.RepositoryInfo; -import de.tum.cit.aet.artemis.buildagent.service.SharedQueueProcessingService; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseBuildConfig; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.RepositoryType; import de.tum.cit.aet.artemis.programming.dto.CheckoutDirectoriesDTO; -import de.tum.cit.aet.artemis.programming.service.BuildScriptProviderService; -import de.tum.cit.aet.artemis.programming.service.aeolus.AeolusTemplateService; import de.tum.cit.aet.artemis.programming.service.aeolus.Windfile; import de.tum.cit.aet.artemis.programming.service.ci.ContinuousIntegrationService.BuildStatus; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class LocalCIServiceTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class LocalCIServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "localciservice"; - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private BuildScriptProviderService buildScriptProviderService; - - @Autowired - private AeolusTemplateService aeolusTemplateService; - - @Autowired - private SharedQueueProcessingService sharedQueueProcessingService; - - @Autowired - @Qualifier("hazelcastInstance") - private HazelcastInstance hazelcastInstance; - protected IQueue queuedJobs; protected IMap processingJobs; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCIntegrationTest.java index 1531a4e2649a..af998a54a556 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCIntegrationTest.java @@ -29,13 +29,14 @@ import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.service.ldap.LdapUserDto; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.service.localvc.LocalVCRepositoryUri; import de.tum.cit.aet.artemis.programming.util.LocalRepository; /** * This class contains integration tests for edge cases pertaining to the local VC system. */ -class LocalVCIntegrationTest extends AbstractLocalCILocalVCIntegrationTest { +class LocalVCIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "localvcint"; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIIntegrationTest.java index 17ca800422e9..ff5b37990d74 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIIntegrationTest.java @@ -38,24 +38,19 @@ import org.junit.jupiter.api.parallel.ExecutionMode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import com.hazelcast.collection.IQueue; -import com.hazelcast.core.HazelcastInstance; import de.tum.cit.aet.artemis.buildagent.dto.BuildJobQueueItem; -import de.tum.cit.aet.artemis.buildagent.service.SharedQueueProcessingService; import de.tum.cit.aet.artemis.core.service.ldap.LdapUserDto; import de.tum.cit.aet.artemis.exam.domain.Exam; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; import de.tum.cit.aet.artemis.exam.domain.StudentExam; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; import de.tum.cit.aet.artemis.exercise.domain.ExerciseMode; import de.tum.cit.aet.artemis.exercise.domain.Team; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.domain.AuxiliaryRepository; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; @@ -63,8 +58,6 @@ import de.tum.cit.aet.artemis.programming.domain.build.BuildJob; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.LockRepositoryPolicy; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.SubmissionPolicy; -import de.tum.cit.aet.artemis.programming.service.localci.LocalCITriggerService; -import de.tum.cit.aet.artemis.programming.test_repository.BuildJobTestRepository; import de.tum.cit.aet.artemis.programming.util.LocalRepository; /** @@ -83,37 +76,12 @@ // concurrently. For example, it prevents overloading the LocalCI's result processing system with too many build job results at the same time, which could lead to flaky tests // or timeouts. By keeping everything in the same thread, we maintain more predictable and stable test behavior, while not increasing the test execution time significantly. @Execution(ExecutionMode.SAME_THREAD) -class LocalVCLocalCIIntegrationTest extends AbstractLocalCILocalVCIntegrationTest { +class LocalVCLocalCIIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final Logger log = LoggerFactory.getLogger(LocalVCLocalCIIntegrationTest.class); private static final String TEST_PREFIX = "localvcciint"; - @Autowired - private ExamUtilService examUtilService; - - @Autowired - private BuildJobTestRepository buildJobRepository; - - @Autowired - protected LocalCITriggerService localCITriggerService; - - @Autowired - private SharedQueueProcessingService sharedQueueProcessingService; - - @Autowired - @Qualifier("hazelcastInstance") - private HazelcastInstance hazelcastInstance; - - @Value("${artemis.user-management.internal-admin.username}") - private String localVCUsername; - - @Value("${artemis.user-management.internal-admin.password}") - private String localVCPassword; - - @Value("${artemis.version-control.url}") - protected String artemisVersionControlUrl; - // ---- Repository handles ---- private LocalRepository templateRepository; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIParticipationIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIParticipationIntegrationTest.java index 7552efe686e0..a7389b52273f 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIParticipationIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCLocalCIParticipationIntegrationTest.java @@ -6,39 +6,26 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.User; import de.tum.cit.aet.artemis.exercise.domain.participation.StudentParticipation; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTest; import de.tum.cit.aet.artemis.programming.domain.AuthenticationMechanism; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.TemplateProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.VcsAccessLog; import de.tum.cit.aet.artemis.programming.dto.VcsAccessLogDTO; -import de.tum.cit.aet.artemis.programming.repository.VcsAccessLogRepository; import de.tum.cit.aet.artemis.programming.service.localvc.LocalVCRepositoryUri; import de.tum.cit.aet.artemis.programming.util.LocalRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; import de.tum.cit.aet.artemis.programming.web.repository.RepositoryActionType; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class LocalVCLocalCIParticipationIntegrationTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class LocalVCLocalCIParticipationIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "participationlocalvclocalci"; - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private VcsAccessLogRepository vcsAccessLogRepository; - - @Autowired - private ParticipationUtilService participationUtilService; - private ProgrammingExercise programmingExercise; @BeforeEach diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCServiceTest.java index 9c6c71b4d8af..dea6e48fc3bc 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCServiceTest.java @@ -4,32 +4,19 @@ import static org.mockito.Mockito.verifyNoInteractions; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.service.connectors.ConnectorHealth; import de.tum.cit.aet.artemis.exam.domain.Exam; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class LocalVCServiceTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class LocalVCServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "localvcservice"; - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ExamUtilService examUtilService; - @Test void testHealth() { ConnectorHealth health = versionControlService.health(); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCSshIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCSshIntegrationTest.java index bca0ed60beb9..fd4abf09a0d1 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCSshIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/LocalVCSshIntegrationTest.java @@ -22,10 +22,8 @@ import org.apache.sshd.common.config.keys.AuthorizedKeyEntry; import org.apache.sshd.common.config.keys.writer.openssh.OpenSSHKeyPairResourceWriter; import org.apache.sshd.common.session.helpers.AbstractSession; -import org.apache.sshd.server.SshServer; import org.apache.sshd.server.session.ServerSession; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Profile; import org.springframework.security.test.context.support.WithMockUser; @@ -39,9 +37,6 @@ class LocalVCSshIntegrationTest extends LocalVCIntegrationTest { private static final String TEST_PREFIX = "localvcsshint"; - @Autowired - private SshServer sshServer; - @Override protected String getTestPrefix() { return TEST_PREFIX; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/MultipleHostKeyProviderTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/MultipleHostKeyProviderTest.java index a386ae6ccc2d..db3c01ca029e 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/MultipleHostKeyProviderTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/MultipleHostKeyProviderTest.java @@ -8,10 +8,11 @@ import org.junit.jupiter.api.Test; import org.springframework.context.annotation.Profile; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTestBase; import de.tum.cit.aet.artemis.programming.service.localvc.ssh.MultipleHostKeyProvider; @Profile(PROFILE_LOCALVC) -class MultipleHostKeyProviderTest extends AbstractLocalCILocalVCIntegrationTest { +class MultipleHostKeyProviderTest extends AbstractProgrammingIntegrationLocalCILocalVCTestBase { private static final String TEST_PREFIX = "multiplehostkeyprovider"; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/ProgrammingExerciseLocalVCLocalCIIntegrationTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/ProgrammingExerciseLocalVCLocalCIIntegrationTest.java index f5ec144c6bf0..9d88101f8fb2 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/ProgrammingExerciseLocalVCLocalCIIntegrationTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/ProgrammingExerciseLocalVCLocalCIIntegrationTest.java @@ -26,17 +26,13 @@ import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.parallel.Execution; import org.junit.jupiter.api.parallel.ExecutionMode; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.LinkedMultiValueMap; -import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyUtilService; import de.tum.cit.aet.artemis.atlas.domain.competency.Competency; -import de.tum.cit.aet.artemis.core.connector.AeolusRequestMockProvider; import de.tum.cit.aet.artemis.core.domain.Course; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTest; import de.tum.cit.aet.artemis.programming.domain.AeolusTarget; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; @@ -47,8 +43,6 @@ import de.tum.cit.aet.artemis.programming.service.localvc.LocalVCRepositoryUri; import de.tum.cit.aet.artemis.programming.util.LocalRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; // TestInstance.Lifecycle.PER_CLASS allows all test methods in this class to share the same instance of the test class. // This reduces the overhead of repeatedly creating and tearing down a new Spring application context for each test method. @@ -61,22 +55,10 @@ // concurrently. For example, it prevents overloading the LocalCI's result processing system with too many build job results at the same time, which could lead to flaky tests // or timeouts. By keeping everything in the same thread, we maintain more predictable and stable test behavior, while not increasing the test execution time significantly. @Execution(ExecutionMode.SAME_THREAD) -class ProgrammingExerciseLocalVCLocalCIIntegrationTest extends AbstractSpringIntegrationLocalCILocalVCTest { +class ProgrammingExerciseLocalVCLocalCIIntegrationTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { private static final String TEST_PREFIX = "progexlocalvclocalci"; - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private AeolusRequestMockProvider aeolusRequestMockProvider; - - @Autowired - private CompetencyUtilService competencyUtilService; - private Course course; private ProgrammingExercise programmingExercise; @@ -91,12 +73,6 @@ class ProgrammingExerciseLocalVCLocalCIIntegrationTest extends AbstractSpringInt private Competency competency; - @Value("${artemis.user-management.internal-admin.username}") - private String localVCUsername; - - @Value("${artemis.user-management.internal-admin.password}") - private String localVCPassword; - @BeforeAll void setupAll() { CredentialsProvider.setDefault(new UsernamePasswordCredentialsProvider(localVCUsername, localVCPassword)); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/icl/SharedQueueManagementServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/icl/SharedQueueManagementServiceTest.java index e0a20b1bed46..f61ff0bce53e 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/icl/SharedQueueManagementServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/icl/SharedQueueManagementServiceTest.java @@ -5,24 +5,13 @@ import java.time.ZonedDateTime; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import com.hazelcast.core.HazelcastInstance; import com.hazelcast.map.IMap; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationLocalCILocalVCTest; import de.tum.cit.aet.artemis.programming.domain.build.BuildJob; -import de.tum.cit.aet.artemis.programming.service.localci.SharedQueueManagementService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest; -class SharedQueueManagementServiceTest extends AbstractSpringIntegrationLocalCILocalVCTest { - - @Autowired - private SharedQueueManagementService sharedQueueManagementService; - - @Autowired - @Qualifier("hazelcastInstance") - private HazelcastInstance hazelcastInstance; +class SharedQueueManagementServiceTest extends AbstractProgrammingIntegrationLocalCILocalVCTest { @Test void testPushDockerImageCleanupInfo() { diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/BuildLogEntryServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/BuildLogEntryServiceTest.java index 04f7854a5b2a..e74c88fff158 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/BuildLogEntryServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/BuildLogEntryServiceTest.java @@ -12,13 +12,12 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.build.BuildLogEntry; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class BuildLogEntryServiceTest extends AbstractSpringIntegrationIndependentTest { +class BuildLogEntryServiceTest extends AbstractProgrammingIntegrationIndependentTest { private static final String GRADLE_SCENARIO = """ ~~~~~~~~~~~~~~~~~~~~ Pull image progress: Downloading ~~~~~~~~~~~~~~~~~~~~ @@ -331,9 +330,6 @@ class BuildLogEntryServiceTest extends AbstractSpringIntegrationIndependentTest Finished building MTCTSTMVN-ARTEMISADMIN-JOB1-7. """; - @Autowired - private BuildLogEntryService buildLogEntryService; - @ValueSource(strings = { GRADLE_SCENARIO, MAVEN_SCENARIO }) @ParameterizedTest void testScenario(String scenario) { diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/GitlabCIServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/GitlabCIServiceTest.java index e91e0d1fdb83..fda58121a3ac 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/GitlabCIServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/GitlabCIServiceTest.java @@ -11,7 +11,6 @@ import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; -import java.net.URL; import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; @@ -23,69 +22,24 @@ import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.exception.GitLabCIException; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; import de.tum.cit.aet.artemis.exercise.domain.participation.Participation; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.exercise.test_repository.ParticipationTestRepository; -import de.tum.cit.aet.artemis.exercise.util.ExerciseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationGitlabCIGitlabSamlTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.ProjectType; import de.tum.cit.aet.artemis.programming.domain.build.BuildLogEntry; -import de.tum.cit.aet.artemis.programming.repository.BuildLogStatisticsEntryRepository; -import de.tum.cit.aet.artemis.programming.repository.BuildPlanRepository; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; import de.tum.cit.aet.artemis.programming.service.ci.ContinuousIntegrationService; -import de.tum.cit.aet.artemis.programming.service.gitlabci.GitLabCIResultService; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationGitlabCIGitlabSamlTest; -class GitlabCIServiceTest extends AbstractSpringIntegrationGitlabCIGitlabSamlTest { +class GitlabCIServiceTest extends AbstractProgrammingIntegrationGitlabCIGitlabSamlTest { private static final String TEST_PREFIX = "gitlabciservicetest"; - @Value("${artemis.version-control.url}") - private URL gitlabServerUrl; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private ParticipationTestRepository participationRepository; - - @Autowired - private BuildPlanRepository buildPlanRepository; - - @Autowired - private GitLabCIResultService gitLabCIResultService; - - @Autowired - private BuildLogStatisticsEntryRepository buildLogStatisticsEntryRepository; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExerciseUtilService exerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - private Long programmingExerciseId; @BeforeEach diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsAuthorizationInterceptorTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsAuthorizationInterceptorTest.java index bd42466d4c6c..00cb27b62167 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsAuthorizationInterceptorTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsAuthorizationInterceptorTest.java @@ -8,13 +8,10 @@ import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus; import java.net.URISyntaxException; -import java.net.URL; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpRequest; @@ -24,28 +21,17 @@ import org.springframework.security.test.context.support.WithMockUser; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.web.client.MockRestServiceServer; -import org.springframework.web.client.RestTemplate; import org.springframework.web.util.UriComponentsBuilder; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import de.tum.cit.aet.artemis.programming.service.jenkins.JenkinsAuthorizationInterceptor; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; -class JenkinsAuthorizationInterceptorTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class JenkinsAuthorizationInterceptorTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "jenkinsauthintercept"; - @Value("${artemis.continuous-integration.url}") - private URL jenkinsServerUrl; - - @Autowired - JenkinsAuthorizationInterceptor jenkinsAuthorizationInterceptor; - - @Autowired - private RestTemplate restTemplate; - private MockRestServiceServer mockRestServiceServer; /** diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsInternalUriServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsInternalUriServiceTest.java index 404051085bda..7315a73e4b5c 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsInternalUriServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsInternalUriServiceTest.java @@ -14,17 +14,12 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.util.ReflectionTestUtils; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.domain.VcsRepositoryUri; -import de.tum.cit.aet.artemis.programming.service.jenkins.JenkinsInternalUrlService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class JenkinsInternalUriServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { - - @Autowired - private JenkinsInternalUrlService jenkinsInternalUrlService; +class JenkinsInternalUriServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private VcsRepositoryUri vcsRepositoryUri; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobPermissionServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobPermissionServiceTest.java index c6db962e6c5f..9eb595ca878d 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobPermissionServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobPermissionServiceTest.java @@ -12,23 +12,18 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import org.w3c.dom.DOMException; import org.w3c.dom.Document; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.service.jenkins.jobs.JenkinsJobPermission; -import de.tum.cit.aet.artemis.programming.service.jenkins.jobs.JenkinsJobPermissionsService; import de.tum.cit.aet.artemis.programming.service.jenkins.jobs.JenkinsJobPermissionsUtils; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class JenkinsJobPermissionServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class JenkinsJobPermissionServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "jenkinsjobpermservice"; - @Autowired - private JenkinsJobPermissionsService jenkinsJobPermissionsService; - private static MockedStatic mockedJenkinsJobPermissionsUtils; @BeforeEach diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobServiceTest.java index 738312ba6ecd..8c550e21e210 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsJobServiceTest.java @@ -21,28 +21,19 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.test.context.support.WithMockUser; import org.w3c.dom.Document; import com.offbytwo.jenkins.model.FolderJob; import de.tum.cit.aet.artemis.core.exception.JenkinsException; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.service.jenkins.JenkinsXmlFileUtils; -import de.tum.cit.aet.artemis.programming.service.jenkins.jobs.JenkinsJobService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class JenkinsJobServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class JenkinsJobServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "jenkinsjobservicetest"; - @Autowired - private JenkinsJobService jenkinsJobService; - - @Autowired - private UserUtilService userUtilService; - private static MockedStatic mockedXmlFileUtils; private Document invalidDocument; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsServiceTest.java index fa7183716ec8..c6e828b48b3a 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/JenkinsServiceTest.java @@ -24,7 +24,6 @@ import org.junit.jupiter.params.provider.EnumSource; import org.mockito.ArgumentCaptor; import org.mockito.MockedStatic; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import org.springframework.util.StreamUtils; @@ -32,48 +31,17 @@ import com.offbytwo.jenkins.model.JobWithDetails; import de.tum.cit.aet.artemis.core.exception.JenkinsException; -import de.tum.cit.aet.artemis.core.util.CourseUtilService; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; -import de.tum.cit.aet.artemis.programming.ContinuousIntegrationTestService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseBuildConfig; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.build.BuildPlan; -import de.tum.cit.aet.artemis.programming.repository.BuildPlanRepository; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; import de.tum.cit.aet.artemis.programming.service.jenkins.build_plan.JenkinsBuildPlanUtils; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class JenkinsServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class JenkinsServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "jenkinsservicetest"; - @Autowired - private ContinuousIntegrationTestService continuousIntegrationTestService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private ProgrammingExerciseImportService programmingExerciseImportService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private CourseUtilService courseUtilService; - - @Autowired - private BuildPlanRepository buildPlanRepository; - /** * This method initializes the test case by setting up a local repo */ diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseFeedbackCreationServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseFeedbackCreationServiceTest.java index a8e26befb1d3..fa9ff3a32070 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseFeedbackCreationServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/ProgrammingExerciseFeedbackCreationServiceTest.java @@ -10,14 +10,13 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import de.tum.cit.aet.artemis.assessment.domain.Feedback; import de.tum.cit.aet.artemis.assessment.domain.Visibility; import de.tum.cit.aet.artemis.core.config.Constants; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.exam.domain.ExerciseGroup; -import de.tum.cit.aet.artemis.exam.util.ExamUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationIndependentTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseTestCase; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; @@ -27,32 +26,9 @@ import de.tum.cit.aet.artemis.programming.dto.AbstractBuildResultNotificationDTO; import de.tum.cit.aet.artemis.programming.dto.StaticCodeAnalysisIssue; import de.tum.cit.aet.artemis.programming.dto.StaticCodeAnalysisReportDTO; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestCaseTestRepository; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest; -class ProgrammingExerciseFeedbackCreationServiceTest extends AbstractSpringIntegrationIndependentTest { - - @Autowired - private ProgrammingExerciseFeedbackCreationService feedbackCreationService; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private ProgrammingExerciseTestCaseTestRepository testCaseRepository; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ExamUtilService examUtilService; +class ProgrammingExerciseFeedbackCreationServiceTest extends AbstractProgrammingIntegrationIndependentTest { private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/RepositoryAccessServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/RepositoryAccessServiceTest.java index 8d5106407a89..9c64b9e2845e 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/RepositoryAccessServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/RepositoryAccessServiceTest.java @@ -14,51 +14,24 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.security.test.context.support.WithMockUser; import de.tum.cit.aet.artemis.core.domain.Course; import de.tum.cit.aet.artemis.core.domain.User; import de.tum.cit.aet.artemis.core.exception.AccessForbiddenException; -import de.tum.cit.aet.artemis.core.test_repository.UserTestRepository; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; import de.tum.cit.aet.artemis.core.util.TestConstants; -import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseStudentParticipation; import de.tum.cit.aet.artemis.programming.domain.submissionpolicy.LockRepositoryPolicy; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseFactory; -import de.tum.cit.aet.artemis.programming.util.ProgrammingExerciseUtilService; import de.tum.cit.aet.artemis.programming.web.repository.RepositoryActionType; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class RepositoryAccessServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class RepositoryAccessServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "rastest"; - @Autowired - private UserTestRepository userRepository; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private RepositoryAccessService repositoryAccessService; - - @Autowired - private UserUtilService userUtilService; - - @Autowired - private ProgrammingExerciseUtilService programmingExerciseUtilService; - - @Autowired - private ParticipationUtilService participationUtilService; - - @Autowired - private ProgrammingExerciseGradingService programmingExerciseGradingService; - User student; Course course; diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/gitlab/GitLabPersonalAccessTokenManagementServiceTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/gitlab/GitLabPersonalAccessTokenManagementServiceTest.java index e6a8ed1e7eb8..d9f5c658ddb8 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/gitlab/GitLabPersonalAccessTokenManagementServiceTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/gitlab/GitLabPersonalAccessTokenManagementServiceTest.java @@ -21,7 +21,6 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpMethod; import org.springframework.security.test.context.support.WithMockUser; @@ -30,26 +29,14 @@ import org.springframework.web.client.RestTemplate; import de.tum.cit.aet.artemis.core.domain.User; -import de.tum.cit.aet.artemis.core.test_repository.UserTestRepository; -import de.tum.cit.aet.artemis.core.user.util.UserUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.service.gitlab.GitLabException; -import de.tum.cit.aet.artemis.programming.service.gitlab.GitLabPersonalAccessTokenManagementService; import de.tum.cit.aet.artemis.programming.service.gitlab.dto.GitLabPersonalAccessTokenListResponseDTO; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class GitLabPersonalAccessTokenManagementServiceTest extends AbstractSpringIntegrationJenkinsGitlabTest { +class GitLabPersonalAccessTokenManagementServiceTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private static final String TEST_PREFIX = "gitlabusermanagementservice"; - @Autowired - private GitLabPersonalAccessTokenManagementService gitLabPersonalAccessTokenManagementService; - - @Autowired - private UserTestRepository userRepository; - - @Autowired - private UserUtilService userUtilService; - @BeforeEach void setUp() { gitlabRequestMockProvider.enableMockingOfRequests(); diff --git a/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/jenkins/build_plan/JenkinsPipelineScriptCreatorTest.java b/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/jenkins/build_plan/JenkinsPipelineScriptCreatorTest.java index 81110e30059c..34afe9865fd2 100644 --- a/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/jenkins/build_plan/JenkinsPipelineScriptCreatorTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/programming/service/connectors/jenkins/build_plan/JenkinsPipelineScriptCreatorTest.java @@ -6,36 +6,15 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import de.tum.cit.aet.artemis.core.util.CourseUtilService; +import de.tum.cit.aet.artemis.programming.AbstractProgrammingIntegrationJenkinsGitlabTest; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExercise; import de.tum.cit.aet.artemis.programming.domain.ProgrammingExerciseBuildConfig; import de.tum.cit.aet.artemis.programming.domain.ProgrammingLanguage; import de.tum.cit.aet.artemis.programming.domain.ProjectType; import de.tum.cit.aet.artemis.programming.domain.build.BuildPlan; -import de.tum.cit.aet.artemis.programming.repository.BuildPlanRepository; -import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository; -import de.tum.cit.aet.artemis.programming.service.jenkins.build_plan.JenkinsPipelineScriptCreator; -import de.tum.cit.aet.artemis.programming.test_repository.ProgrammingExerciseTestRepository; -import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationJenkinsGitlabTest; -class JenkinsPipelineScriptCreatorTest extends AbstractSpringIntegrationJenkinsGitlabTest { - - @Autowired - private BuildPlanRepository buildPlanRepository; - - @Autowired - private JenkinsPipelineScriptCreator jenkinsPipelineScriptCreator; - - @Autowired - private ProgrammingExerciseTestRepository programmingExerciseRepository; - - @Autowired - private ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository; - - @Autowired - private CourseUtilService courseUtilService; +class JenkinsPipelineScriptCreatorTest extends AbstractProgrammingIntegrationJenkinsGitlabTest { private ProgrammingExercise programmingExercise; diff --git a/src/test/java/de/tum/cit/aet/artemis/shared/architecture/module/AbstractModuleTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/shared/architecture/module/AbstractModuleTestArchitectureTest.java index 66da61a07636..b88a82887ac7 100644 --- a/src/test/java/de/tum/cit/aet/artemis/shared/architecture/module/AbstractModuleTestArchitectureTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/shared/architecture/module/AbstractModuleTestArchitectureTest.java @@ -1,26 +1,82 @@ package de.tum.cit.aet.artemis.shared.architecture.module; -import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.noMembers; +import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes; + +import java.util.Set; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import com.tngtech.archunit.base.DescribedPredicate; +import com.tngtech.archunit.core.domain.JavaClass; +import com.tngtech.archunit.core.domain.JavaField; +import com.tngtech.archunit.core.domain.JavaModifier; +import com.tngtech.archunit.lang.ArchCondition; +import com.tngtech.archunit.lang.ConditionEvents; +import com.tngtech.archunit.lang.SimpleConditionEvent; + import de.tum.cit.aet.artemis.shared.architecture.AbstractArchitectureTest; -public abstract class AbstractModuleTestArchitectureTest extends AbstractArchitectureTest implements ModuleArchitectureTest { +public abstract class AbstractModuleTestArchitectureTest extends AbstractArchitectureTest implements ModuleArchitectureTest { - abstract protected Class getAbstractModuleIntegrationTestClass(); + protected abstract Set> getAbstractModuleIntegrationTestClasses(); @Test void integrationTestsShouldExtendAbstractModuleIntegrationTest() { - classesOfThisModuleThat().haveSimpleNameEndingWith("IntegrationTest").should().beAssignableTo(getAbstractModuleIntegrationTestClass()) - .because("All integration tests should extend %s".formatted(getAbstractModuleIntegrationTestClass())).check(testClasses); + classesOfThisModuleThat().haveSimpleNameEndingWith("IntegrationTest").should().beAssignableTo(isAssignableToAnyAllowedClass(getAbstractModuleIntegrationTestClasses())) + .because("All integration tests should extend any of %s".formatted(getAbstractModuleIntegrationTestClasses())).check(testClasses); } @Test void integrationTestsShouldNotAutowireMembers() { - noMembers().that().areAnnotatedWith(Autowired.class).should().beDeclaredInClassesThat().areAssignableTo(getAbstractModuleIntegrationTestClass()).andShould() - .notBeDeclaredIn(getAbstractModuleIntegrationTestClass()) - .because("Integration tests should not autowire members in any class that inherits from %s".formatted(getAbstractModuleIntegrationTestClass())).check(testClasses); + classes().that().doNotHaveModifier(JavaModifier.ABSTRACT).and().areAssignableTo(isAssignableToAnyAllowedClass(getAbstractModuleIntegrationTestClasses())) + .should(notHaveAutowiredFieldsOrMethods()) + .because("Integration tests should not autowire members in any class that inherits from any of %s".formatted(getAbstractModuleIntegrationTestClasses())) + .check(testClasses); + } + + private static DescribedPredicate isAssignableToAnyAllowedClass(Iterable> allowedClasses) { + return new DescribedPredicate<>(stringifyClasses(allowedClasses)) { + + @Override + public boolean test(JavaClass javaClass) { + for (Class allowedClass : allowedClasses) { + if (javaClass.isAssignableTo(allowedClass)) { + return true; + } + } + return false; + } + }; + } + + private static ArchCondition notHaveAutowiredFieldsOrMethods() { + return new ArchCondition<>("not have @Autowired fields or methods") { + + @Override + public void check(JavaClass javaClass, ConditionEvents events) { + // Check fields for @Autowired + for (JavaField field : javaClass.getFields()) { + if (field.isAnnotatedWith(Autowired.class)) { + String message = String.format("%s has a field %s annotated with @Autowired", javaClass.getName(), field.getName()); + events.add(SimpleConditionEvent.violated(field, message)); + } + } + + // Check methods for @Autowired + javaClass.getMethods().stream().filter(method -> method.isAnnotatedWith(Autowired.class)).forEach(method -> { + String message = String.format("%s has a method %s annotated with @Autowired", javaClass.getName(), method.getName()); + events.add(SimpleConditionEvent.violated(method, message)); + }); + } + }; + } + + private static String stringifyClasses(Iterable> classes) { + StringBuilder stringBuilder = new StringBuilder(); + for (Class clazz : classes) { + stringBuilder.append(clazz.getSimpleName()).append(", "); + } + return stringBuilder.substring(0, stringBuilder.length() - 2); } } diff --git a/src/test/java/de/tum/cit/aet/artemis/tutorialgroup/architecture/TutorialGroupTestArchitectureTest.java b/src/test/java/de/tum/cit/aet/artemis/tutorialgroup/architecture/TutorialGroupTestArchitectureTest.java index cd7ad9b0ad12..6aea11fdd6fe 100644 --- a/src/test/java/de/tum/cit/aet/artemis/tutorialgroup/architecture/TutorialGroupTestArchitectureTest.java +++ b/src/test/java/de/tum/cit/aet/artemis/tutorialgroup/architecture/TutorialGroupTestArchitectureTest.java @@ -1,9 +1,11 @@ package de.tum.cit.aet.artemis.tutorialgroup.architecture; +import java.util.Set; + import de.tum.cit.aet.artemis.shared.architecture.module.AbstractModuleTestArchitectureTest; import de.tum.cit.aet.artemis.tutorialgroup.AbstractTutorialGroupIntegrationTest; -class TutorialGroupTestArchitectureTest extends AbstractModuleTestArchitectureTest { +class TutorialGroupTestArchitectureTest extends AbstractModuleTestArchitectureTest { @Override public String getModulePackage() { @@ -11,7 +13,7 @@ public String getModulePackage() { } @Override - protected Class getAbstractModuleIntegrationTestClass() { - return AbstractTutorialGroupIntegrationTest.class; + protected Set> getAbstractModuleIntegrationTestClasses() { + return Set.of(AbstractTutorialGroupIntegrationTest.class); } }