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

Expand unit tests for services #413

Merged
merged 17 commits into from
Sep 2, 2024
Merged
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
1 change: 1 addition & 0 deletions server/src/main/java/de/uftos/services/TagService.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import de.uftos.repositories.database.TimeslotRepository;
import de.uftos.utils.ConstraintInstanceDeleter;
import de.uftos.utils.SpecificationBuilder;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
Expand Down
5 changes: 1 addition & 4 deletions server/src/test/java/de/uftos/e2e/CurriculumTest.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package de.uftos.e2e;

import static de.uftos.utils.JsonGenerator.generateCurriculumJson;
import static de.uftos.utils.JsonGenerator.generateGradeJson;
import static de.uftos.utils.JsonGenerator.generateIdListJson;
import static de.uftos.utils.JsonGenerator.generatePageJson;
Expand All @@ -9,11 +8,9 @@
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.notNullValue;

import de.uftos.dto.requestdtos.LessonsCountRequestDto;
import io.restassured.filter.log.LogDetail;
import io.restassured.http.ContentType;
import java.util.Collections;
import java.util.List;
import org.json.JSONException;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
Expand All @@ -38,7 +35,7 @@ class CurriculumTest {
static void createTestCurricula() throws JSONException {

subjectId = given().contentType(ContentType.JSON)
.body(generateSubjectJson(SUBJECT_NAME))
.body(generateSubjectJson(SUBJECT_NAME, "ffffff"))
.when()
.post("/subjects")
.then()
Expand Down
2 changes: 1 addition & 1 deletion server/src/test/java/de/uftos/e2e/StudentGroupsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ static void createTestStudentGroups() throws JSONException {
.body().jsonPath().getString("id");

subjectId = given().contentType(ContentType.JSON)
.body(generateSubjectJson(SUBJECT_NAME))
.body(generateSubjectJson(SUBJECT_NAME, "ffffff"))
.when()
.post("/subjects")
.then()
Expand Down
4 changes: 2 additions & 2 deletions server/src/test/java/de/uftos/e2e/SubjectsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class SubjectsTest {
@BeforeAll
static void createTestStudents() throws JSONException {
subject1Id = given().contentType(ContentType.JSON)
.body(generateSubjectJson(SUBJECT1_NAME))
.body(generateSubjectJson(SUBJECT1_NAME, "ffffff"))
.when()
.post("/subjects")
.then()
Expand All @@ -36,7 +36,7 @@ static void createTestStudents() throws JSONException {
.body().jsonPath().getString("id");

subject2Id = given().contentType(ContentType.JSON)
.body(generateSubjectJson(SUBJECT2_NAME))
.body(generateSubjectJson(SUBJECT2_NAME, "ffffff"))
.when()
.post("/subjects")
.then()
Expand Down
2 changes: 1 addition & 1 deletion server/src/test/java/de/uftos/e2e/TeachersTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ static void createTestTeachers() throws JSONException {
.body().jsonPath().getString("id");

subjectId = given().contentType(ContentType.JSON)
.body(generateSubjectJson(SUBJECT_NAME))
.body(generateSubjectJson(SUBJECT_NAME, "ffffff"))
.when()
.post("/subjects")
.then()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
Expand Down Expand Up @@ -51,6 +53,10 @@
import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.server.ResponseStatusException;

@SuppressWarnings("checkstyle:MissingJavadocType")
Expand Down Expand Up @@ -260,11 +266,19 @@ void setUp() {
Optional.of(constraintInstanceInvalidArgs));
when(constraintSignatureRepository.findById(constraintSignature.getName())).thenReturn(
Optional.of(constraintSignature));

Page<ConstraintInstance> instancePage = new PageImpl<>(List.of(constraintInstance));
when(constraintInstanceRepository.findByArguments(eq("teacherArgId"),
any(Pageable.class))).thenReturn(instancePage);

when(
constraintSignatureRepository.findById(constraintSignatureManyParams.getName())).thenReturn(
Optional.of(constraintSignatureManyParams));
when(constraintSignatureRepository.findById(constraintSignatureInvalid.getName())).thenReturn(
Optional.of(constraintSignatureInvalid));
when(constraintSignatureRepository.findInstancesBySignatureId(eq("test constraint"),
any(Pageable.class))).thenReturn(instancePage);


Timeslot timeslot = new Timeslot("timeslotId1");
timeslot.setDay(Weekday.TUESDAY);
Expand Down Expand Up @@ -331,6 +345,35 @@ void nonExistentParameter() {
() -> constraintInstanceService.create("test constraint", constraintInstanceRequestDto));
}

@Test
void getConstraintInstancesNoArgs() {
ConstraintInstancesResponseDto result =
constraintInstanceService.get("test constraint", PageRequest.of(0, 10), Optional.empty());
assertEquals(1, result.totalElements());
List<ConstraintInstancesResponseDto.SlimInstance> instances = result.constraintInstances();
assertEquals("123", instances.getFirst().id());
}

@Test
void getConstraintInstancesWithArgs() {
ConstraintInstancesResponseDto result =
constraintInstanceService.get("test constraint", PageRequest.of(0, 10),
Optional.of("teacherArgId"));
assertEquals(1, result.totalElements());
List<ConstraintInstancesResponseDto.SlimInstance> instances = result.constraintInstances();
assertEquals("123", instances.getFirst().id());
}

@Test
void getConstraintInstancesWithEmptyArg() {
ConstraintInstancesResponseDto result =
constraintInstanceService.get("test constraint", PageRequest.of(0, 10),
Optional.of(""));
assertEquals(1, result.totalElements());
List<ConstraintInstancesResponseDto.SlimInstance> instances = result.constraintInstances();
assertEquals("123", instances.getFirst().id());
}

@Test
void tooManyParameter() {
ConstraintArgumentRequestDto arg1 =
Expand All @@ -355,6 +398,17 @@ void createConstraintInstance() {
() -> constraintInstanceService.create("test constraint", constraintInstanceRequestDto));
}

@Test
void createConstraintInstanceInvalidSignatureId() {
ConstraintArgumentRequestDto arg =
new ConstraintArgumentRequestDto("teacher123", "teacherId1");
ConstraintInstanceRequestDto constraintInstanceRequestDto =
new ConstraintInstanceRequestDto(List.of(arg), RewardPenalize.HARD_PENALIZE);

assertThrows(ResponseStatusException.class,
() -> constraintInstanceService.create("nonExistentId", constraintInstanceRequestDto));
}

@Test
void createConstraintInstanceWrongParamName() {
ConstraintArgumentRequestDto arg =
Expand Down
72 changes: 72 additions & 0 deletions server/src/test/java/de/uftos/services/CurriculumServiceTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,17 @@ void setUp() {
newGrade.setId("newGrade");

LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Mathe", 4);
LessonsCountRequestDto otherLessonCount = new LessonsCountRequestDto("OtherSubject", 4);

Curriculum curriculum1 = new Curriculum(testGrade, "EmptyCurriculum", List.of());
curriculum1.setId("123");
Curriculum curriculum2 = new Curriculum(grade2, "TestCurriculum", List.of(lessonsCount));
curriculum2.setId("456");
Curriculum curriculum3 = new Curriculum(newGrade, "UpdateCurriculum", List.of(lessonsCount));
curriculum3.setId("234");
Curriculum curriculumMultipleLessonsCounts =
new Curriculum(newGrade, "UpdateCurriculum", List.of(lessonsCount, otherLessonCount));
curriculumMultipleLessonsCounts.setId("multipleCounts");

Curriculum testCurriculum =
new Curriculum(testGrade, "testName", List.of(lessonsCount));
Expand All @@ -100,6 +104,8 @@ void setUp() {
when(curriculumRepository.findById("123")).thenReturn(Optional.of(curriculum1));
when(curriculumRepository.findById("456")).thenReturn(Optional.of(curriculum2));
when(curriculumRepository.findById("234")).thenReturn(Optional.of(curriculum3));
when(curriculumRepository.findById("multipleCounts")).thenReturn(
Optional.of(curriculumMultipleLessonsCounts));
when(curriculumRepository.save(any(Curriculum.class))).thenReturn(testCurriculum);
}

Expand Down Expand Up @@ -142,6 +148,22 @@ void createCurriculum() {
assertEquals(1, curriculum.getLessonsCounts().size());
}

@Test
void createEmptyName() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Englisch", 4);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("testGrade", "", List.of(lessonsCount));
assertThrows(ResponseStatusException.class, () -> curriculumService.create(requestDto));
}

@Test
void createNonExistentGrade() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Englisch", 4);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("nonExistentGrade", "testName", List.of(lessonsCount));
assertThrows(ResponseStatusException.class, () -> curriculumService.create(requestDto));
}

@Test
void updateCurriculum() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Mathe", 5);
Expand All @@ -157,6 +179,56 @@ void updateCurriculum() {
assertEquals(1, curriculum.getLessonsCounts().size());
}

@Test
void updateCurriculumMultipleLessonsCounts() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Mathe", 5);
LessonsCountRequestDto otherCount = new LessonsCountRequestDto("OtherSubject", 5);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("newGrade", "newName", List.of(lessonsCount, otherCount));
curriculumService.update("multipleCounts", requestDto);

Curriculum curriculum = curriculumRepository.findById("multipleCounts").get();
assertNotNull(curriculum);

assertEquals(newGrade, curriculum.getGrade());

assertEquals(2, curriculum.getLessonsCounts().size());
}

@Test
void updateCurriculumInconsistentLessonCountAmounts() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Mathe", 5);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("newGrade", "newName", List.of(lessonsCount));
assertThrows(ResponseStatusException.class, () -> curriculumService.update("123", requestDto));
}

@Test
void updateCurriculumInconsistentLessonCountSubjects() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("OtherSubject", 5);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("newGrade", "newName", List.of(lessonsCount));
assertThrows(ResponseStatusException.class, () -> curriculumService.update("234", requestDto));
}

@Test
void updateCurriculumNonExistent() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Physik", 4);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("newGrade", "newName", List.of(lessonsCount));
assertThrows(ResponseStatusException.class,
() -> curriculumService.update("nonExistentId", requestDto));
}

@Test
void updateCurriculumNonExistentGrade() {
LessonsCountRequestDto lessonsCount = new LessonsCountRequestDto("Physik", 4);
CurriculumRequestDto requestDto =
new CurriculumRequestDto("nonExistentGrade", "newName", List.of(lessonsCount));
assertThrows(ResponseStatusException.class,
() -> curriculumService.update("234", requestDto));
}

@Test
void deleteExistentCurriculum() {
assertDoesNotThrow(() -> curriculumService.delete("123"));
Expand Down
Loading