Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Development: Refactor atlas tests #9352

Open
wants to merge 2 commits into
base: chore/restructure-tests
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
package de.tum.cit.aet.artemis.atlas;

import org.springframework.beans.factory.annotation.Autowired;

import de.tum.cit.aet.artemis.assessment.repository.GradingCriterionRepository;
import de.tum.cit.aet.artemis.assessment.util.StudentScoreUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyProgressUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.PrerequisiteUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.StandardizedCompetencyUtilService;
import de.tum.cit.aet.artemis.atlas.learningpath.util.LearningPathUtilService;
import de.tum.cit.aet.artemis.atlas.repository.CompetencyJolRepository;
import de.tum.cit.aet.artemis.atlas.repository.CompetencyRelationRepository;
import de.tum.cit.aet.artemis.atlas.repository.CompetencyRepository;
import de.tum.cit.aet.artemis.atlas.repository.CourseCompetencyRepository;
import de.tum.cit.aet.artemis.atlas.repository.KnowledgeAreaRepository;
import de.tum.cit.aet.artemis.atlas.repository.PrerequisiteRepository;
import de.tum.cit.aet.artemis.atlas.repository.ScienceSettingRepository;
import de.tum.cit.aet.artemis.atlas.repository.SourceRepository;
import de.tum.cit.aet.artemis.atlas.repository.StandardizedCompetencyRepository;
import de.tum.cit.aet.artemis.atlas.service.competency.CompetencyProgressService;
import de.tum.cit.aet.artemis.atlas.test_repository.CompetencyProgressTestRepository;
import de.tum.cit.aet.artemis.atlas.test_repository.LearningPathTestRepository;
import de.tum.cit.aet.artemis.atlas.test_repository.ScienceEventTestRepository;
import de.tum.cit.aet.artemis.core.service.feature.FeatureToggleService;
import de.tum.cit.aet.artemis.core.util.PageableSearchUtilService;
import de.tum.cit.aet.artemis.exercise.participation.util.ParticipationUtilService;
import de.tum.cit.aet.artemis.exercise.repository.SubmissionRepository;
import de.tum.cit.aet.artemis.exercise.service.ParticipationService;
import de.tum.cit.aet.artemis.exercise.team.TeamUtilService;
import de.tum.cit.aet.artemis.lecture.repository.AttachmentUnitRepository;
import de.tum.cit.aet.artemis.lecture.repository.ExerciseUnitRepository;
import de.tum.cit.aet.artemis.lecture.repository.LectureRepository;
import de.tum.cit.aet.artemis.lecture.repository.LectureUnitRepository;
import de.tum.cit.aet.artemis.lecture.repository.TextUnitRepository;
import de.tum.cit.aet.artemis.lecture.service.LectureUnitService;
import de.tum.cit.aet.artemis.lecture.util.LectureUtilService;
import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseBuildConfigRepository;
import de.tum.cit.aet.artemis.programming.repository.ProgrammingExerciseRepository;
import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest;
import de.tum.cit.aet.artemis.text.util.TextExerciseUtilService;

public abstract class AbstractAtlasIntegrationTest extends AbstractSpringIntegrationIndependentTest {

// Repositories
@Autowired
protected CompetencyRepository competencyRepository;

@Autowired
protected CourseCompetencyRepository courseCompetencyRepository;

@Autowired
protected CompetencyRelationRepository competencyRelationRepository;

@Autowired
protected CompetencyProgressTestRepository competencyProgressRepository;

@Autowired
protected KnowledgeAreaRepository knowledgeAreaRepository;

@Autowired
protected StandardizedCompetencyRepository standardizedCompetencyRepository;

@Autowired
protected SourceRepository sourceRepository;

@Autowired
protected LearningPathTestRepository learningPathRepository;

@Autowired
protected ScienceSettingRepository scienceSettingRepository;

@Autowired
protected ScienceEventTestRepository scienceEventRepository;

@Autowired
protected PrerequisiteRepository prerequisiteRepository;

@Autowired
protected CompetencyJolRepository competencyJolRepository;

// External Repositories
@Autowired
protected LectureRepository lectureRepository;

@Autowired
protected LectureUnitRepository lectureUnitRepository;

@Autowired
protected GradingCriterionRepository gradingCriterionRepository;

@Autowired
protected TextUnitRepository textUnitRepository;

@Autowired
protected AttachmentUnitRepository attachmentUnitRepository;

@Autowired
protected ExerciseUnitRepository exerciseUnitRepository;

@Autowired
protected SubmissionRepository submissionRepository;

@Autowired
protected ProgrammingExerciseRepository programmingExerciseRepository;

@Autowired
protected ProgrammingExerciseBuildConfigRepository programmingExerciseBuildConfigRepository;

// Services

@Autowired
protected CompetencyProgressService competencyProgressService;

@Autowired
protected FeatureToggleService featureToggleService;

// External Services
@Autowired
protected LectureUnitService lectureUnitService;

@Autowired
protected ParticipationService participationService;

// Util Services
@Autowired
protected CompetencyProgressUtilService competencyProgressUtilService;

@Autowired
protected CompetencyUtilService competencyUtilService;

@Autowired
protected PrerequisiteUtilService prerequisiteUtilService;

@Autowired
protected StandardizedCompetencyUtilService standardizedCompetencyUtilService;

@Autowired
protected LearningPathUtilService learningPathUtilService;

// External Util Services
@Autowired
protected PageableSearchUtilService pageableSearchUtilService;

@Autowired
protected TextExerciseUtilService textExerciseUtilService;

@Autowired
protected LectureUtilService lectureUtilService;

@Autowired
protected StudentScoreUtilService studentScoreUtilService;

@Autowired
protected ParticipationUtilService participationUtilService;

@Autowired
protected TeamUtilService teamUtilService;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package de.tum.cit.aet.artemis.atlas.architecture;

import static com.tngtech.archunit.lang.syntax.ArchRuleDefinition.classes;

import org.junit.jupiter.api.Test;

import de.tum.cit.aet.artemis.atlas.AbstractAtlasIntegrationTest;
import de.tum.cit.aet.artemis.shared.architecture.AbstractArchitectureTest;

class TestArchitectureTest extends AbstractArchitectureTest {

@Test
void integrationTestsShouldExtendAbstractAtlasIntegrationTest() {
classes().that().resideInAPackage(ARTEMIS_PACKAGE + ".atlas").and().haveSimpleNameEndingWith("IntegrationTest").should().beAssignableTo(AbstractAtlasIntegrationTest.class)
.because("All integration tests should extend AbstractAtlasIntegrationTest").check(testClasses);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,16 @@
import java.util.function.Function;
import java.util.stream.Collectors;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;

import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyProgressUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.PrerequisiteUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.StandardizedCompetencyUtilService;
import de.tum.cit.aet.artemis.atlas.AbstractAtlasIntegrationTest;
import de.tum.cit.aet.artemis.atlas.domain.competency.CompetencyRelation;
import de.tum.cit.aet.artemis.atlas.domain.competency.CompetencyTaxonomy;
import de.tum.cit.aet.artemis.atlas.domain.competency.CourseCompetency;
import de.tum.cit.aet.artemis.atlas.domain.competency.Prerequisite;
import de.tum.cit.aet.artemis.atlas.domain.competency.RelationType;
import de.tum.cit.aet.artemis.atlas.dto.CompetencyImportResponseDTO;
import de.tum.cit.aet.artemis.atlas.dto.CompetencyWithTailRelationDTO;
import de.tum.cit.aet.artemis.atlas.repository.CompetencyRelationRepository;
import de.tum.cit.aet.artemis.atlas.repository.CourseCompetencyRepository;
import de.tum.cit.aet.artemis.atlas.repository.PrerequisiteRepository;
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.domain.User;
Expand All @@ -39,53 +33,10 @@
import de.tum.cit.aet.artemis.lecture.domain.Lecture;
import de.tum.cit.aet.artemis.lecture.domain.LectureUnit;
import de.tum.cit.aet.artemis.lecture.domain.TextUnit;
import de.tum.cit.aet.artemis.lecture.repository.AttachmentUnitRepository;
import de.tum.cit.aet.artemis.lecture.repository.ExerciseUnitRepository;
import de.tum.cit.aet.artemis.lecture.repository.LectureRepository;
import de.tum.cit.aet.artemis.lecture.repository.LectureUnitRepository;
import de.tum.cit.aet.artemis.lecture.repository.TextUnitRepository;
import de.tum.cit.aet.artemis.lecture.util.LectureUtilService;
import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationLocalCILocalVCTest;
import de.tum.cit.aet.artemis.text.domain.TextExercise;
import de.tum.cit.aet.artemis.text.util.TextExerciseFactory;

abstract class AbstractCompetencyPrerequisiteIntegrationTest extends AbstractSpringIntegrationLocalCILocalVCTest {

@Autowired
protected LectureRepository lectureRepository;

@Autowired
protected TextUnitRepository textUnitRepository;

@Autowired
protected AttachmentUnitRepository attachmentUnitRepository;

@Autowired
protected ExerciseUnitRepository exerciseUnitRepository;

@Autowired
protected CompetencyRelationRepository competencyRelationRepository;

@Autowired
protected PrerequisiteRepository prerequisiteRepository;

@Autowired
protected LectureUnitRepository lectureUnitRepository;

@Autowired
protected PrerequisiteUtilService prerequisiteUtilService;

@Autowired
protected CompetencyProgressUtilService competencyProgressUtilService;

@Autowired
protected LectureUtilService lectureUtilService;

@Autowired
protected StandardizedCompetencyUtilService standardizedCompetencyUtilService;

@Autowired
protected CourseCompetencyRepository courseCompetencyRepository;
abstract class AbstractCompetencyPrerequisiteIntegrationTest extends AbstractAtlasIntegrationTest {

protected Course course;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,19 @@
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.http.HttpStatus;
import org.springframework.security.test.context.support.WithMockUser;

import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyProgressUtilService;
import de.tum.cit.aet.artemis.atlas.competency.util.CompetencyUtilService;
import de.tum.cit.aet.artemis.atlas.AbstractAtlasIntegrationTest;
import de.tum.cit.aet.artemis.atlas.domain.competency.Competency;
import de.tum.cit.aet.artemis.atlas.domain.competency.CompetencyProgress;
import de.tum.cit.aet.artemis.atlas.dto.CompetencyJolPairDTO;
import de.tum.cit.aet.artemis.atlas.repository.CompetencyJolRepository;
import de.tum.cit.aet.artemis.core.domain.User;
import de.tum.cit.aet.artemis.shared.base.AbstractSpringIntegrationIndependentTest;

class CompetencyJolIntegrationTest extends AbstractSpringIntegrationIndependentTest {
class CompetencyJolIntegrationTest extends AbstractAtlasIntegrationTest {

private static final String TEST_PREFIX = "competencyjolintegrationtest";

@Autowired
private CompetencyUtilService competencyUtilService;

@Autowired
private CompetencyProgressUtilService competencyProgressUtilService;

@Autowired
private CompetencyJolRepository competencyJOLRepository;

private final Competency[] competency = new Competency[3];

private CompetencyProgress competencyProgress;
Expand Down Expand Up @@ -63,7 +50,7 @@ void setup() {

@AfterEach
void tearDown() {
competencyJOLRepository.deleteAll();
competencyJolRepository.deleteAll();
}

@Nested
Expand Down Expand Up @@ -100,7 +87,7 @@ void shouldReturnForbiddenForStudentNotInCourse() throws Exception {
void shouldCreateJOL() throws Exception {
short jolValue = 3;
sendRequest(competency[0].getId(), jolValue, HttpStatus.OK);
final var jol = competencyJOLRepository.findLatestByCompetencyIdAndUserId(competency[0].getId(), student.getId());
final var jol = competencyJolRepository.findLatestByCompetencyIdAndUserId(competency[0].getId(), student.getId());
assertThat(jol).isPresent();
assertThat(jol.get().getValue()).isEqualTo(jolValue);
assertThat(jol.get().getCompetencyConfidence()).isEqualTo(competencyProgress.getConfidence());
Expand All @@ -113,7 +100,7 @@ void shouldUpdateJOL() throws Exception {
competencyUtilService.createJol(competency[0], student, (short) 123, ZonedDateTime.now().minusDays(1), 0.0, 0.0);
short jolValue = 3;
sendRequest(competency[0].getId(), jolValue, HttpStatus.OK);
final var jol = competencyJOLRepository.findLatestByCompetencyIdAndUserId(competency[0].getId(), student.getId());
final var jol = competencyJolRepository.findLatestByCompetencyIdAndUserId(competency[0].getId(), student.getId());
assertThat(jol).isPresent();
assertThat(jol.get().getValue()).isEqualTo(jolValue);
assertThat(jol.get().getCompetencyConfidence()).isEqualTo(competencyProgress.getConfidence());
Expand Down
Loading
Loading