From 91cee601f6cc6860608317c61c0bf9487bc1c74a Mon Sep 17 00:00:00 2001 From: PatMaz999 Date: Thu, 18 Sep 2025 14:14:17 +0200 Subject: [PATCH] add examId to response entity --- .../pkwmtt/examCalendar/ExamController.java | 21 ++-- .../org/pkwmtt/examCalendar/ExamService.java | 38 +++--- .../dto/{ExamDto.java => RequestExamDto.java} | 19 ++- .../examCalendar/dto/ResponseExamDto.java | 12 ++ .../examCalendar/mapper/ExamDtoMapper.java | 34 +++--- .../examCalendar/ExamControllerTest.java | 79 ++++++------ .../pkwmtt/examCalendar/ExamServiceTest.java | 112 +++++++++--------- ...amDtoTest.java => RequestExamDtoTest.java} | 66 +++++------ 8 files changed, 202 insertions(+), 179 deletions(-) rename src/main/java/org/pkwmtt/examCalendar/dto/{ExamDto.java => RequestExamDto.java} (58%) create mode 100644 src/main/java/org/pkwmtt/examCalendar/dto/ResponseExamDto.java rename src/test/java/org/pkwmtt/examCalendar/dto/{ExamDtoTest.java => RequestExamDtoTest.java} (73%) diff --git a/src/main/java/org/pkwmtt/examCalendar/ExamController.java b/src/main/java/org/pkwmtt/examCalendar/ExamController.java index 8e7ebd0..88e36a4 100644 --- a/src/main/java/org/pkwmtt/examCalendar/ExamController.java +++ b/src/main/java/org/pkwmtt/examCalendar/ExamController.java @@ -3,7 +3,8 @@ import jakarta.validation.Valid; import jakarta.validation.constraints.Positive; import lombok.RequiredArgsConstructor; -import org.pkwmtt.examCalendar.dto.ExamDto; +import org.pkwmtt.examCalendar.dto.RequestExamDto; +import org.pkwmtt.examCalendar.dto.ResponseExamDto; import org.pkwmtt.examCalendar.entity.Exam; import org.pkwmtt.examCalendar.entity.ExamType; import org.pkwmtt.examCalendar.mapper.ExamDtoMapper; @@ -25,12 +26,12 @@ public class ExamController { private final ExamService examService; /** - * @param examDto details of exam + * @param requestExamDto details of exam * @return 201 created with URI to GET method which returns created resource */ @PostMapping("") - public ResponseEntity addExam(@RequestBody @Valid ExamDto examDto){ - int id = examService.addExam(examDto); + public ResponseEntity addExam(@RequestBody @Valid RequestExamDto requestExamDto){ + int id = examService.addExam(requestExamDto); URI uri = ServletUriComponentsBuilder .fromCurrentRequest() .path("/{id}") @@ -41,12 +42,12 @@ public ResponseEntity addExam(@RequestBody @Valid ExamDto examDto){ /** * @param id of exam or test - * @param examDto new details of exam or test + * @param requestExamDto new details of exam or test * @return 204 no content */ @PutMapping("/{id}") - public ResponseEntity modifyExam(@PathVariable @Positive int id, @RequestBody @Valid ExamDto examDto) { - examService.modifyExam(examDto, id); + public ResponseEntity modifyExam(@PathVariable @Positive int id, @RequestBody @Valid RequestExamDto requestExamDto) { + examService.modifyExam(requestExamDto, id); return ResponseEntity.noContent().build(); } @@ -64,7 +65,7 @@ public ResponseEntity deleteExam(@PathVariable int id) { * @param id of exam or test * @return 200 ok with single exam or test details */ - @GetMapping("/{id}") +// @GetMapping("/{id}") public ResponseEntity getExam(@PathVariable int id) { return ResponseEntity.ok(examService.getExamById(id)); } @@ -73,10 +74,10 @@ public ResponseEntity getExam(@PathVariable int id) { * when subgroups isn't null all generalGroups must be form the same year of study. e.g. 12K2, 12K1 is from 12K * @param generalGroups set of general groups e.g. 12K2 * @param subgroups set of subgroups of general group e.g. L04 - * @return List of ExamDto for specific groups + * @return List of RequestExamDto for specific groups */ @GetMapping("/by-groups") - public ResponseEntity> getExams( + public ResponseEntity> getExams( @RequestParam Set generalGroups, @RequestParam(required = false) Set subgroups ){ diff --git a/src/main/java/org/pkwmtt/examCalendar/ExamService.java b/src/main/java/org/pkwmtt/examCalendar/ExamService.java index fa4ee54..f1d4d92 100644 --- a/src/main/java/org/pkwmtt/examCalendar/ExamService.java +++ b/src/main/java/org/pkwmtt/examCalendar/ExamService.java @@ -3,7 +3,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; -import org.pkwmtt.examCalendar.dto.ExamDto; +import org.pkwmtt.examCalendar.dto.RequestExamDto; import org.pkwmtt.examCalendar.entity.Exam; import org.pkwmtt.examCalendar.entity.ExamType; import org.pkwmtt.examCalendar.entity.StudentGroup; @@ -34,19 +34,19 @@ public class ExamService { private final TimetableService timetableService; /** - * @param examDto details of exam + * @param requestExamDto details of exam * @return id of exam added to database */ - public int addExam(ExamDto examDto) { + public int addExam(RequestExamDto requestExamDto) { - verifyGroupPermissionsForNewResource(examDto.getGeneralGroups()); + verifyGroupPermissionsForNewResource(requestExamDto.getGeneralGroups()); - Set groups = verifyAndUpdateExamGroups(examDto); + Set groups = verifyAndUpdateExamGroups(requestExamDto); - ExamType examType = examTypeRepository.findByName(examDto.getExamType()) - .orElseThrow(() -> new ExamTypeNotExistsException(examDto.getExamType())); + ExamType examType = examTypeRepository.findByName(requestExamDto.getExamType()) + .orElseThrow(() -> new ExamTypeNotExistsException(requestExamDto.getExamType())); - Exam exam = ExamDtoMapper.mapToNewExam(examDto, groups, examType); + Exam exam = ExamDtoMapper.mapToNewExam(requestExamDto, groups, examType); Set existingExam = examRepository.findAllByTitle(exam.getTitle()); if (existingExam.contains(exam)) @@ -55,21 +55,21 @@ public int addExam(ExamDto examDto) { } /** - * @param examDto new details of exam that overwrite old ones + * @param requestExamDto new details of exam that overwrite old ones * @param id of exam that need to be modified */ - public void modifyExam(ExamDto examDto, int id) { + public void modifyExam(RequestExamDto requestExamDto, int id) { examRepository.findById(id).orElseThrow(() -> new NoSuchElementWithProvidedIdException(id)); - verifyGroupPermissionsForModifiedResource(examDto.getGeneralGroups(), id); + verifyGroupPermissionsForModifiedResource(requestExamDto.getGeneralGroups(), id); - Set groups = verifyAndUpdateExamGroups(examDto); + Set groups = verifyAndUpdateExamGroups(requestExamDto); - ExamType examType = examTypeRepository.findByName(examDto.getExamType()) - .orElseThrow(() -> new ExamTypeNotExistsException(examDto.getExamType())); + ExamType examType = examTypeRepository.findByName(requestExamDto.getExamType()) + .orElseThrow(() -> new ExamTypeNotExistsException(requestExamDto.getExamType())); - examRepository.save(ExamDtoMapper.mapToExistingExam(examDto, groups, examType, id)); + examRepository.save(ExamDtoMapper.mapToExistingExam(requestExamDto, groups, examType, id)); } /** @@ -119,13 +119,13 @@ public List getExamTypes() { /** * verify if groups exists and updates database when it exists, but repository doesn't contain it. * When timetable service is unavailable verifies groups using groupsRepository - * @param examDto containing groups for verification + * @param requestExamDto containing groups for verification * @return single set of all kinds of provided groups as StudentGroup entities * that are in database and could be safely attach to Exam entity */ - private Set verifyAndUpdateExamGroups(ExamDto examDto) { - Set generalGroups = examDto.getGeneralGroups(); - Set subgroups = examDto.getSubgroups(); + private Set verifyAndUpdateExamGroups(RequestExamDto requestExamDto) { + Set generalGroups = requestExamDto.getGeneralGroups(); + Set subgroups = requestExamDto.getSubgroups(); if (generalGroups == null || generalGroups.isEmpty()) throw new InvalidGroupIdentifierException("general group is missing"); diff --git a/src/main/java/org/pkwmtt/examCalendar/dto/ExamDto.java b/src/main/java/org/pkwmtt/examCalendar/dto/RequestExamDto.java similarity index 58% rename from src/main/java/org/pkwmtt/examCalendar/dto/ExamDto.java rename to src/main/java/org/pkwmtt/examCalendar/dto/RequestExamDto.java index 8b5e72a..5fbd3ac 100644 --- a/src/main/java/org/pkwmtt/examCalendar/dto/ExamDto.java +++ b/src/main/java/org/pkwmtt/examCalendar/dto/RequestExamDto.java @@ -1,36 +1,35 @@ package org.pkwmtt.examCalendar.dto; import jakarta.validation.constraints.*; -import lombok.Builder; import lombok.Getter; import lombok.RequiredArgsConstructor; -import org.pkwmtt.examCalendar.entity.StudentGroup; +import lombok.experimental.SuperBuilder; import java.time.LocalDateTime; import java.util.Set; @Getter @RequiredArgsConstructor -@Builder -public class ExamDto { +@SuperBuilder +public class RequestExamDto { @NotBlank @Size(max = 255, message = "max size of field is 255") - private final String title; + private String title; @Size(max = 255, message = "max size of field is 255") - private final String description; + private String description; @Future(message = "Date must be in the future") @NotNull - private final LocalDateTime date; + private LocalDateTime date; @NotNull - private final String examType; + private String examType; @NotEmpty @Size(min = 1) - private final Set generalGroups; + private Set generalGroups; - private final Set subgroups; + private Set subgroups; } diff --git a/src/main/java/org/pkwmtt/examCalendar/dto/ResponseExamDto.java b/src/main/java/org/pkwmtt/examCalendar/dto/ResponseExamDto.java new file mode 100644 index 0000000..07584d9 --- /dev/null +++ b/src/main/java/org/pkwmtt/examCalendar/dto/ResponseExamDto.java @@ -0,0 +1,12 @@ +package org.pkwmtt.examCalendar.dto; + +import lombok.Getter; +import lombok.experimental.SuperBuilder; + +@Getter +@SuperBuilder +public class ResponseExamDto extends RequestExamDto { + + private int examId; + +} diff --git a/src/main/java/org/pkwmtt/examCalendar/mapper/ExamDtoMapper.java b/src/main/java/org/pkwmtt/examCalendar/mapper/ExamDtoMapper.java index aae4659..71bbbdb 100644 --- a/src/main/java/org/pkwmtt/examCalendar/mapper/ExamDtoMapper.java +++ b/src/main/java/org/pkwmtt/examCalendar/mapper/ExamDtoMapper.java @@ -1,7 +1,8 @@ package org.pkwmtt.examCalendar.mapper; import lombok.extern.slf4j.Slf4j; -import org.pkwmtt.examCalendar.dto.ExamDto; +import org.pkwmtt.examCalendar.dto.RequestExamDto; +import org.pkwmtt.examCalendar.dto.ResponseExamDto; import org.pkwmtt.examCalendar.entity.Exam; import org.pkwmtt.examCalendar.entity.ExamType; import org.pkwmtt.examCalendar.entity.StudentGroup; @@ -11,7 +12,7 @@ import java.util.stream.Collectors; /** - * Utility class for mapping Exam entity to ExamDto and ExamDto to Exam entity + * Utility class for mapping Exam entity to RequestExamDto and RequestExamDto to Exam entity */ @Slf4j public class ExamDtoMapper { @@ -20,32 +21,32 @@ private ExamDtoMapper() { } /** - * @param examDto examDto object received from request + * @param requestExamDto requestExamDto object received from request * @return Exam entity WITHOUT examId which should be assigned by database * Also contains examType field converted from String do ExamType */ - public static Exam mapToNewExam(ExamDto examDto, Set groups, ExamType examType) { + public static Exam mapToNewExam(RequestExamDto requestExamDto, Set groups, ExamType examType) { return Exam.builder() - .title(examDto.getTitle()) - .description(examDto.getDescription()) - .examDate(examDto.getDate()) + .title(requestExamDto.getTitle()) + .description(requestExamDto.getDescription()) + .examDate(requestExamDto.getDate()) .examType(examType) .groups(groups) .build(); } /** - * @param examDto examDto object received from request + * @param requestExamDto requestExamDto object received from request * @param id of Exam that need to be modified * @return Exam entity WITH examId that allow to update entity in database instead of creating new one * Also contains examType field converted from String do ExamType */ - public static Exam mapToExistingExam(ExamDto examDto, Set groups, ExamType examType, int id) { + public static Exam mapToExistingExam(RequestExamDto requestExamDto, Set groups, ExamType examType, int id) { return Exam.builder() .examId(id) - .title(examDto.getTitle()) - .description(examDto.getDescription()) - .examDate(examDto.getDate()) + .title(requestExamDto.getTitle()) + .description(requestExamDto.getDescription()) + .examDate(requestExamDto.getDate()) .examType(examType) .groups(groups) .build(); @@ -55,21 +56,22 @@ public static Exam mapToExistingExam(ExamDto examDto, Set groups, * @param exams Set of Exams that would be mapped * @return List of ExamDtos */ - public static List mapToExamDto(Set exams) { + public static List mapToExamDto(Set exams) { return exams.stream().map(ExamDtoMapper::mapToExamDto).collect(Collectors.toList()); } /** * @param exam single exam that would be mapped - * @return ExamDto + * @return RequestExamDto */ - public static ExamDto mapToExamDto(Exam exam) { + public static ResponseExamDto mapToExamDto(Exam exam) { Set groups = exam.getGroups().stream().map(StudentGroup::getName).collect(Collectors.toSet()); Set generalGroups = groups.stream().filter(group -> Character.isDigit(group.charAt(0))).collect(Collectors.toSet()); Set subgroups = groups.stream().filter(group -> Character.isAlphabetic(group.charAt(0))).collect(Collectors.toSet()); if(groups.size() != subgroups.size() + generalGroups.size()) log.warn("Some groups of {} were not consumed in ExamDtoMapper.mapToExamDto()", groups); - return ExamDto.builder() + return ResponseExamDto.builder() + .examId(exam.getExamId()) .title(exam.getTitle()) .description(exam.getDescription()) .date(exam.getExamDate()) diff --git a/src/test/java/org/pkwmtt/examCalendar/ExamControllerTest.java b/src/test/java/org/pkwmtt/examCalendar/ExamControllerTest.java index 68f0c14..1f4459e 100644 --- a/src/test/java/org/pkwmtt/examCalendar/ExamControllerTest.java +++ b/src/test/java/org/pkwmtt/examCalendar/ExamControllerTest.java @@ -5,9 +5,10 @@ import jakarta.transaction.Transactional; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.mockito.Mock; -import org.pkwmtt.examCalendar.dto.ExamDto; +import org.pkwmtt.examCalendar.dto.RequestExamDto; import org.pkwmtt.examCalendar.entity.Exam; import org.pkwmtt.examCalendar.entity.ExamType; import org.pkwmtt.examCalendar.entity.StudentGroup; @@ -106,8 +107,8 @@ void clearSecurityContext() { void addExamWithCorrectData () throws Exception { // given createExampleExamType("Project"); - ExamDto examDtoRequest = createExampleExamDto("Project"); - String json = mapper.writeValueAsString(examDtoRequest); + RequestExamDto requestExamDtoRequest = createExampleExamDto("Project"); + String json = mapper.writeValueAsString(requestExamDtoRequest); when(timetableService.getGeneralGroupList()).thenReturn(List.of("12K1", "12K2", "12K3")); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(List.of("K04", "L04", "P04")); @@ -139,17 +140,17 @@ void addExamWithCorrectData () throws Exception { responseSubgroups.removeAll(responseGeneralGroups); assertEquals(responseGeneralGroups, Set.of("12K")); - assertEquals(responseSubgroups, examDtoRequest.getSubgroups()); + assertEquals(responseSubgroups, requestExamDtoRequest.getSubgroups()); - assertEquals(examDtoRequest.getTitle(), examResponse.getTitle()); - assertEquals(examDtoRequest.getDescription(), examResponse.getDescription()); + assertEquals(requestExamDtoRequest.getTitle(), examResponse.getTitle()); + assertEquals(requestExamDtoRequest.getDescription(), examResponse.getDescription()); // compare dates with minutes level precision assertEquals( - examDtoRequest.getDate().truncatedTo(ChronoUnit.MINUTES), + requestExamDtoRequest.getDate().truncatedTo(ChronoUnit.MINUTES), examResponse.getExamDate().truncatedTo(ChronoUnit.MINUTES) ); - assertEquals(examDtoRequest.getExamType(), examResponse.getExamType().getName()); + assertEquals(requestExamDtoRequest.getExamType(), examResponse.getExamType().getName()); } @Test @@ -157,24 +158,24 @@ void addExamWithCorrectData () throws Exception { void addExamTwice () throws Exception { // given createExampleExamType("Project"); - ExamDto examDtoRequest = createExampleExamDto("Project"); + RequestExamDto requestExamDtoRequest = createExampleExamDto("Project"); when(timetableService.getGeneralGroupList()).thenReturn(List.of("12K1", "12K2", "12K3")); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(List.of("K04", "L04", "P04")); // when - assertPostRequest(status().isCreated(), examDtoRequest); - MvcResult result = assertPostRequest(status().isConflict(), examDtoRequest); + assertPostRequest(status().isCreated(), requestExamDtoRequest); + MvcResult result = assertPostRequest(status().isConflict(), requestExamDtoRequest); // then assertResponseMessage("Exam already exists", result); - assertEquals(1, examRepository.findAllByTitle(examDtoRequest.getTitle()).size()); + assertEquals(1, examRepository.findAllByTitle(requestExamDtoRequest.getTitle()).size()); } @Test void addExamWithBlankExamTitle () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .description("first exam") .date(LocalDateTime.now().plusDays(1)) @@ -193,7 +194,7 @@ void addExamWithBlankExamTitle () throws Exception { void addExamWithBlankExamDescription () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .date(LocalDateTime.now().plusDays(1)) @@ -218,7 +219,7 @@ void addExamWithBlankExamDescription () throws Exception { void addExamWithBlankDate () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -237,7 +238,7 @@ void addExamWithBlankDate () throws Exception { void addExamWithBlankExamGroups () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -256,7 +257,7 @@ void addExamWithBlankExamGroups () throws Exception { void addExamWithBlankGeneralGroups () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -277,7 +278,7 @@ void addExamWithBlankGeneralGroups () throws Exception { void addExamWithBlankSubgroups () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -304,7 +305,7 @@ void addExamWithBlankSubgroups () throws Exception { void addExamWithMultipleGeneralGroupsAndSubgroups () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -326,7 +327,7 @@ void addExamWithMultipleGeneralGroupsAndSubgroups () throws Exception { @Test void addExamWithNullExamTypes () throws Exception { // given - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -348,7 +349,7 @@ void addExamWithNullExamTypes () throws Exception { void addExamWithNotFutureDate () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -368,7 +369,7 @@ void addExamWithNotFutureDate () throws Exception { void addExamWithEmptyStringExamTitle () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("") .description("first exam") @@ -389,7 +390,7 @@ void addExamWithEmptyStringExamTitle () throws Exception { void addExamWithTooLongExamTitle () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("a".repeat(256)) .description("first exam") @@ -410,7 +411,7 @@ void addExamWithTooLongExamTitle () throws Exception { void addExamWithTooLongDescription () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("a".repeat(256)) @@ -431,7 +432,7 @@ void addExamWithTooLongDescription () throws Exception { void addExamWithNonExistingExamType () throws Exception { // given createExampleExamType("Project"); - ExamDto requestData = ExamDto + RequestExamDto requestData = RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -463,13 +464,13 @@ void modifyExamWithCorrectData () throws Exception { ExamType examType = createExampleExamType("Exam"); Exam exam = createExampleExam(examType); int id = examRepository.save(exam).getExamId(); - ExamDto examDto = createExampleExamDto(examType.getName(), date); + RequestExamDto requestExamDto = createExampleExamDto(examType.getName(), date); when(timetableService.getGeneralGroupList()).thenReturn(List.of("12K1", "12K2", "12K3")); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(List.of("K04", "L04", "P04")); // when - assertPutRequest(status().isNoContent(), examDto, id); + assertPutRequest(status().isNoContent(), requestExamDto, id); // then Exam responseExam = examRepository.findById(id).orElseThrow(); @@ -498,12 +499,12 @@ void modifyExamWithIncorrectExamId () throws Exception { ExamType examType = createExampleExamType("Exam"); Exam exam = createExampleExam(examType); int id = examRepository.save(exam).getExamId(); - ExamDto examDto = createExampleExamDto(examType.getName()); + RequestExamDto requestExamDto = createExampleExamDto(examType.getName()); int invalidId = Integer.MAX_VALUE - 10; assertNotEquals(invalidId, id); // when - MvcResult result = assertPutRequest(status().isNotFound(), examDto, invalidId); + MvcResult result = assertPutRequest(status().isNotFound(), requestExamDto, invalidId); // then assertResponseMessage("No such element with id: " + (invalidId), result); @@ -548,6 +549,7 @@ void deleteNonExistingExam () throws Exception { // @Test + @Disabled("Endpoint are disabled") void getExamByIdWithCorrectId () throws Exception { // given ExamType examType = createExampleExamType("Exam"); @@ -573,6 +575,7 @@ void getExamByIdWithCorrectId () throws Exception { } @Test + @Disabled("Endpoint are disabled") void getNonExistingExamById () throws Exception { // given ExamType examType = createExampleExamType("Exam"); @@ -604,6 +607,12 @@ void getExamsWithGeneralGroups () throws Exception { // then JsonNode responseArray = mapper.readTree(result.getResponse().getContentAsString()); assertEquals(2, responseArray.size()); + + assertTrue(responseArray.valueStream().anyMatch(e -> e.get("examId").asInt() == exam1.getExamId())); + assertTrue(responseArray.valueStream().anyMatch(e -> e.get("examId").asInt() == exam2.getExamId())); + assertTrue(responseArray.valueStream().noneMatch(e -> e.get("examId").asInt() == exam3.getExamId())); + assertTrue(responseArray.valueStream().noneMatch(e -> e.get("examId").asInt() == exam4.getExamId())); + assertTrue(responseArray.valueStream().anyMatch(e -> e.get("title").asText().equals(exam1.getTitle()))); assertTrue(responseArray.valueStream().anyMatch(e -> e.get("title").asText().equals(exam2.getTitle()))); assertTrue(responseArray.valueStream().noneMatch(e -> e.get("title").asText().equals(exam3.getTitle()))); @@ -798,10 +807,10 @@ private Exam createAndSaveExamWithTitleAndGroups (String title, Set grou /** * @param examTypeName name of type of exam as String - * @return created ExamDto + * @return created RequestExamDto */ - private ExamDto createExampleExamDto (String examTypeName) { - return ExamDto + private RequestExamDto createExampleExamDto (String examTypeName) { + return RequestExamDto .builder() .title("Math exam") .description("first exam") @@ -815,10 +824,10 @@ private ExamDto createExampleExamDto (String examTypeName) { /** * @param examTypeName name of type of exam as String * @param date . - * @return created ExamDto + * @return created RequestExamDto */ - private ExamDto createExampleExamDto (String examTypeName, LocalDateTime date) { - return ExamDto + private RequestExamDto createExampleExamDto (String examTypeName, LocalDateTime date) { + return RequestExamDto .builder() .title("Math exam") .description("first exam") diff --git a/src/test/java/org/pkwmtt/examCalendar/ExamServiceTest.java b/src/test/java/org/pkwmtt/examCalendar/ExamServiceTest.java index d793b92..5d2fae3 100644 --- a/src/test/java/org/pkwmtt/examCalendar/ExamServiceTest.java +++ b/src/test/java/org/pkwmtt/examCalendar/ExamServiceTest.java @@ -9,7 +9,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.pkwmtt.examCalendar.dto.ExamDto; +import org.pkwmtt.examCalendar.dto.RequestExamDto; import org.pkwmtt.examCalendar.entity.Exam; import org.pkwmtt.examCalendar.entity.ExamType; import org.pkwmtt.examCalendar.entity.StudentGroup; @@ -76,7 +76,7 @@ void testBlankSubgroupAndMoreArgumentsThatRequiredReturnedByService() { Set g12K2 = Set.of("12K2"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("title") .description("description") .date(date) @@ -87,16 +87,16 @@ void testBlankSubgroupAndMoreArgumentsThatRequiredReturnedByService() { List studentGroups = buildExampleStudentGroupList(g12K2); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); // more groups than in set when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(List.of("12K1", "12K2", "12K3"))); when(groupRepository.findAllByNameIn(g12K2)).thenReturn(new HashSet<>(Set.of())); when(groupRepository.saveAll(anyList())).thenReturn(studentGroups); when(examRepository.save(any(Exam.class))).thenReturn(exam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(1)).findAllByNameIn(g12K2); @@ -126,21 +126,21 @@ void addExamForMultipleGeneralGroupsWithEmptySubgroups() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(generalGroups); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(generalGroups)); when(groupRepository.findAllByNameIn(generalGroups)).thenReturn(new HashSet<>(Set.of())); when(groupRepository.saveAll(anyList())).thenReturn(studentGroups); when(examRepository.save(any(Exam.class))).thenReturn(exam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(1)).findAllByNameIn(generalGroups); @@ -171,9 +171,9 @@ void shouldThrowWhenThereAreMoreThan1GeneralGroupsAndSubgroupsIsPresent() { LocalDateTime date = LocalDateTime.now().plusDays(1); Set generalGroups = Set.of("12K1", "12K2", "12K3"); Set subgroups = Set.of("L04", "L05"); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(generalGroups)); - RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(requestExamDto)); assertEquals("Invalid group identifier: ambiguous general groups for subgroups", exception.getMessage()); } @@ -226,10 +226,10 @@ void addExamForEmptyGeneralGroup() { Set generalGroups = Set.of(); Set subgroups = Set.of("K04"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); RuntimeException exception = assertThrows( InvalidGroupIdentifierException.class, - () -> examService.addExam(examDto) + () -> examService.addExam(requestExamDto) ); assertEquals("Invalid group identifier: general group is missing", exception.getMessage()); } @@ -239,9 +239,9 @@ void addExamThatAlreadyExists() throws JsonProcessingException { // given LocalDateTime date = LocalDateTime.now().plusDays(1); ExamType examType = buildExampleExamType(); - ExamDto examDto = buildExampleExamDto(Set.of("12K2"), Set.of("L04"), date.plusSeconds(34)); + RequestExamDto requestExamDto = buildExampleExamDto(Set.of("12K2"), Set.of("L04"), date.plusSeconds(34)); Set studentGroups = new HashSet<>(buildExampleStudentGroupList(Set.of("12K2", "L04"))); - Exam exam = ExamDtoMapper.mapToNewExam(examDto, studentGroups, examType); + Exam exam = ExamDtoMapper.mapToNewExam(requestExamDto, studentGroups, examType); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(List.of("12K1", "12K2", "12K3"))); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(new ArrayList<>(List.of("L04"))); @@ -249,12 +249,12 @@ void addExamThatAlreadyExists() throws JsonProcessingException { when(groupRepository.findAllByNameIn(any(Set.class))).thenReturn(studentGroups); // - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); - when(examRepository.findAllByTitle(examDto.getTitle())).thenReturn(Set.of(exam)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); + when(examRepository.findAllByTitle(requestExamDto.getTitle())).thenReturn(Set.of(exam)); // when RuntimeException exception = assertThrows( ResourceAlreadyExistsException.class, - () -> examService.addExam(examDto) + () -> examService.addExam(requestExamDto) ); // then verify(examRepository, times(0)).save(exam); @@ -281,10 +281,10 @@ void shouldThrowWhenGeneralGroupsDontMatchService() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(List.of())); // when - RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(requestExamDto)); // then assertEquals("Invalid group identifiers: [12K1, 12K2]", exception.getMessage()); } @@ -296,10 +296,10 @@ void shouldThrowWhenNotAllGeneralGroupsMatchService() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(List.of("12K1"))); // when - RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(requestExamDto)); // then assertEquals("Invalid group identifiers: [12K2]", exception.getMessage()); } @@ -319,11 +319,11 @@ void shouldThrowWhenSubgroupsDontMatchService() throws JsonProcessingException { Set subgroups = Set.of("K04", "P04", "L04"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(List.of("12K2"))); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(List.of("K05")); // when - RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(requestExamDto)); // then String message = exception.getMessage(); assertTrue(message.startsWith("Invalid group identifiers:")); @@ -341,11 +341,11 @@ void shouldThrowWhenNotAllSubgroupsMatchService() throws JsonProcessingException Set subgroups = Set.of("K04", "P04", "L04"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(List.of("12K2"))); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(List.of("P04", "L04", "K05")); // when - RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(InvalidGroupIdentifierException.class, () -> examService.addExam(requestExamDto)); // then String message = exception.getMessage(); assertTrue(message.startsWith("Invalid group identifiers:")); @@ -375,21 +375,21 @@ void addExamForSingleGeneralGroupWithRepositoryContainingGroup() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(generalGroups); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(generalGroups)); when(groupRepository.findAllByNameIn(generalGroups)).thenReturn(new HashSet<>(studentGroups)); when(groupRepository.saveAll(any())).thenReturn(List.of()); when(examRepository.save(any(Exam.class))).thenReturn(exam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(1)).findAllByNameIn(any()); //??? verify(groupRepository, times(1)).saveAll(List.of()); @@ -407,7 +407,7 @@ void addExamWithNonUniqueTitle() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(generalGroups); Exam newExam = buildExamWithIdAndGroups(1, studentGroups); @@ -419,7 +419,7 @@ void addExamWithNonUniqueTitle() { .groups(new HashSet<>(studentGroups)) .build(); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(generalGroups)); when(groupRepository.findAllByNameIn(generalGroups)).thenReturn(new HashSet<>(studentGroups)); @@ -427,9 +427,9 @@ void addExamWithNonUniqueTitle() { when(examRepository.findAllByTitle(any())).thenReturn(Set.of(existingExam)); when(examRepository.save(any(Exam.class))).thenReturn(newExam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(1)).findAllByNameIn(any()); //??? verify(groupRepository, times(1)).saveAll(List.of()); @@ -456,12 +456,12 @@ void addExamForSingleGeneralGroupAndSubgroupsWithRepositoryContainingGroups() th Set combinedGroups = Set.of("12K", "K04", "P04", "L04", "K05"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(combinedGroups); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(generalGroups)); when(timetableService.getAvailableSubGroups("12K2")).thenReturn(List.of("K04", "P04", "L04", "K05")); @@ -470,9 +470,9 @@ void addExamForSingleGeneralGroupAndSubgroupsWithRepositoryContainingGroups() th when(groupRepository.saveAll(any())).thenReturn(studentGroups.subList(3, 5)); when(examRepository.save(any(Exam.class))).thenReturn(exam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(1)).findAllByNameIn(any()); verify(groupRepository, times(1)).saveAll(any()); @@ -502,13 +502,13 @@ void unavailableServiceAndRepositoryDontMatch() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); // more groups than in set when(timetableService.getGeneralGroupList()).thenThrow(new WebPageContentNotAvailableException()); when(groupRepository.findAllByNameIn(generalGroups)).thenReturn(new HashSet<>(Set.of())); // when - RuntimeException exception = assertThrows(ServiceNotAvailableException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(ServiceNotAvailableException.class, () -> examService.addExam(requestExamDto)); // then assertEquals("Timetable service unavailable, couldn't verify groups using repository", exception.getMessage()); verify(timetableService, times(1)).getGeneralGroupList(); @@ -531,7 +531,7 @@ void unavailableServiceAndRepositoryDontMatchForSubgroups() throws JsonProcessin Set subgroups = Set.of("L04", "K04", "P04"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); List studentGroups = buildExampleStudentGroupList(Set.of("12K2", "L04")); // more groups than in set @@ -539,7 +539,7 @@ void unavailableServiceAndRepositoryDontMatchForSubgroups() throws JsonProcessin when(timetableService.getAvailableSubGroups("12K2")).thenThrow(new WebPageContentNotAvailableException()); when(groupRepository.findAllByNameIn(any())).thenReturn(new HashSet<>(studentGroups)); // when - RuntimeException exception = assertThrows(ServiceNotAvailableException.class, () -> examService.addExam(examDto)); + RuntimeException exception = assertThrows(ServiceNotAvailableException.class, () -> examService.addExam(requestExamDto)); // then assertEquals("Timetable service unavailable, couldn't verify groups using repository", exception.getMessage()); verify(timetableService, times(1)).getGeneralGroupList(); @@ -565,21 +565,21 @@ void addExamWhenServiceIsUnavailableAndRepositoryContainsGeneralGroups() { Set subgroups = Set.of(); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(generalGroups); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenThrow(new WebPageContentNotAvailableException()); when(groupRepository.findAllByNameIn(generalGroups)).thenReturn(new HashSet<>(studentGroups)); when(groupRepository.saveAll(anyList())).thenReturn(studentGroups); when(examRepository.save(any(Exam.class))).thenReturn(exam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(2)).findAllByNameIn(any()); verify(groupRepository, times(1)).saveAll(any()); @@ -606,12 +606,12 @@ void addExamWhenServiceIsUnavailableAndRepositoryContainsGroups() throws JsonPro Set combinedGroups = Set.of("12K", "12K2", "L04", "K04", "P04", "K05"); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(combinedGroups); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenThrow(new WebPageContentNotAvailableException()); when(timetableService.getAvailableSubGroups("12K2")).thenThrow(new JsonParseException("parsing subgroups failed")); @@ -623,9 +623,9 @@ void addExamWhenServiceIsUnavailableAndRepositoryContainsGroups() throws JsonPro //noinspection unchecked when(examRepository.findCommonExamIdsForGroups(any(Set.class), any(Integer.class))).thenReturn(Set.of(1)); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(2)).findAllByNameIn(any()); verify(groupRepository, times(1)).saveAll(any()); @@ -820,8 +820,8 @@ private static ExamType buildExampleExamType() { .build(); } - private static ExamDto buildExampleExamDto(Set generalGroups, Set subgroups, LocalDateTime date) { - return ExamDto.builder() + private static RequestExamDto buildExampleExamDto(Set generalGroups, Set subgroups, LocalDateTime date) { + return RequestExamDto.builder() .title("title") .description("description") .date(date) @@ -848,21 +848,21 @@ private void testExamServiceForSubgroups(Set generalGroups, Set .collect(Collectors.toSet())); LocalDateTime date = LocalDateTime.now().plusDays(1); - ExamDto examDto = buildExampleExamDto(generalGroups, subgroups, date); + RequestExamDto requestExamDto = buildExampleExamDto(generalGroups, subgroups, date); ExamType examType = buildExampleExamType(); List studentGroups = buildExampleStudentGroupList(combinedGroups); Exam exam = buildExamWithIdAndGroups(1, studentGroups); - when(examTypeRepository.findByName(examDto.getExamType())).thenReturn(Optional.of(examType)); + when(examTypeRepository.findByName(requestExamDto.getExamType())).thenReturn(Optional.of(examType)); when(timetableService.getGeneralGroupList()).thenReturn(new ArrayList<>(generalGroups)); when(groupRepository.findAllByNameIn(combinedGroups)).thenReturn(new HashSet<>(Set.of())); when(groupRepository.saveAll(anyList())).thenReturn(studentGroups); when(examRepository.save(any(Exam.class))).thenReturn(exam); // when - int savedId = examService.addExam(examDto); + int savedId = examService.addExam(requestExamDto); // then - verify(examTypeRepository, times(1)).findByName(examDto.getExamType()); + verify(examTypeRepository, times(1)).findByName(requestExamDto.getExamType()); verify(timetableService, times(1)).getGeneralGroupList(); verify(groupRepository, times(1)).findAllByNameIn(combinedGroups); diff --git a/src/test/java/org/pkwmtt/examCalendar/dto/ExamDtoTest.java b/src/test/java/org/pkwmtt/examCalendar/dto/RequestExamDtoTest.java similarity index 73% rename from src/test/java/org/pkwmtt/examCalendar/dto/ExamDtoTest.java rename to src/test/java/org/pkwmtt/examCalendar/dto/RequestExamDtoTest.java index f278e3b..d203c05 100644 --- a/src/test/java/org/pkwmtt/examCalendar/dto/ExamDtoTest.java +++ b/src/test/java/org/pkwmtt/examCalendar/dto/RequestExamDtoTest.java @@ -11,18 +11,18 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; -class ExamDtoTest { +class RequestExamDtoTest { private final Validator validator; - public ExamDtoTest() { + public RequestExamDtoTest() { this.validator = Validation.buildDefaultValidatorFactory().getValidator(); } @Test void shouldSuccessWithCompleteData() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .description("First exam") .date(LocalDateTime.now().plusDays(1)) @@ -31,13 +31,13 @@ void shouldSuccessWithCompleteData() { .subgroups(Set.of("L04")) .build(); // when, then - assertTrue(validator.validate(examDto).isEmpty()); + assertTrue(validator.validate(requestExamDto).isEmpty()); } @Test void shouldSuccessWithEmptyDescription() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .description("") .date(LocalDateTime.now().plusDays(1)) @@ -46,13 +46,13 @@ void shouldSuccessWithEmptyDescription() { .subgroups(Set.of("L04")) .build(); // when, then - assertTrue(validator.validate(examDto).isEmpty()); + assertTrue(validator.validate(requestExamDto).isEmpty()); } @Test void shouldSuccessWithBlankDescription() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .date(LocalDateTime.now().plusDays(1)) .examType("exam") @@ -60,13 +60,13 @@ void shouldSuccessWithBlankDescription() { .subgroups(Set.of("L04")) .build(); // when, then - assertTrue(validator.validate(examDto).isEmpty()); + assertTrue(validator.validate(requestExamDto).isEmpty()); } @Test void shouldSuccessWithBlankSubgroups() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .description("First exam") .date(LocalDateTime.now().plusDays(1)) @@ -74,13 +74,13 @@ void shouldSuccessWithBlankSubgroups() { .generalGroups(Set.of("12K2")) .build(); // when, then - assertTrue(validator.validate(examDto).isEmpty()); + assertTrue(validator.validate(requestExamDto).isEmpty()); } @Test void shouldSuccessWithEmptySubgroups() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .description("First exam") .date(LocalDateTime.now().plusDays(1)) @@ -89,7 +89,7 @@ void shouldSuccessWithEmptySubgroups() { .subgroups(Set.of("")) .build(); // when, then - assertTrue(validator.validate(examDto).isEmpty()); + assertTrue(validator.validate(requestExamDto).isEmpty()); } @@ -97,7 +97,7 @@ void shouldSuccessWithEmptySubgroups() { @Test void shouldFailWithEmptyTitle() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("") .description("First exam") .date(LocalDateTime.now().plusDays(1)) @@ -106,16 +106,16 @@ void shouldFailWithEmptyTitle() { .subgroups(Set.of("")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("title"))); } @Test void shouldFailWithBlankTitle() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .description("First exam") .date(LocalDateTime.now().plusDays(1)) .examType("exam") @@ -123,16 +123,16 @@ void shouldFailWithBlankTitle() { .subgroups(Set.of("")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("title"))); } @Test void shouldFailWithEmptyGeneralGroups() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .description("First exam") .date(LocalDateTime.now().plusDays(1)) @@ -141,16 +141,16 @@ void shouldFailWithEmptyGeneralGroups() { .subgroups(Set.of("L04")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("generalGroups"))); } @Test void shouldFailWithBlankGeneralGroups() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() .title("Math exam") .description("First exam") .date(LocalDateTime.now().plusDays(1)) @@ -158,9 +158,9 @@ void shouldFailWithBlankGeneralGroups() { .subgroups(Set.of("L04")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("generalGroups"))); } @@ -169,7 +169,7 @@ void shouldFailWithBlankGeneralGroups() { @Test void ShouldFailWithTooLongTitle() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() // 256 characters .title("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") .description("First exam") @@ -179,16 +179,16 @@ void ShouldFailWithTooLongTitle() { .subgroups(Set.of("L04")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("title"))); } @Test void toLongDescription() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() // 256 characters .title("Math exam") .description("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") @@ -198,16 +198,16 @@ void toLongDescription() { .subgroups(Set.of("L04")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("description"))); } @Test void dateNotInFuture() { // given - ExamDto examDto = ExamDto.builder() + RequestExamDto requestExamDto = RequestExamDto.builder() // 256 characters .title("Math exam") .description("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa") @@ -217,9 +217,9 @@ void dateNotInFuture() { .subgroups(Set.of("L04")) .build(); // when - Set> violations = validator.validate(examDto); + Set> violations = validator.validate(requestExamDto); // then - assertFalse(validator.validate(examDto).isEmpty()); + assertFalse(validator.validate(requestExamDto).isEmpty()); assertTrue(violations.stream().anyMatch(v -> v.getPropertyPath().toString().equals("date"))); }