diff --git a/pom.xml b/pom.xml index bfa72237..4792f1d6 100644 --- a/pom.xml +++ b/pom.xml @@ -175,4 +175,4 @@ - + \ No newline at end of file diff --git a/src/main/java/org/unilab/uniplan/major/MajorMapper.java b/src/main/java/org/unilab/uniplan/major/MajorMapper.java index 782457ac..5dfcfdfd 100644 --- a/src/main/java/org/unilab/uniplan/major/MajorMapper.java +++ b/src/main/java/org/unilab/uniplan/major/MajorMapper.java @@ -3,7 +3,6 @@ import java.util.List; import org.mapstruct.Mapper; import org.mapstruct.Mapping; -import org.mapstruct.MappingTarget; import org.unilab.uniplan.course.CourseMapper; import org.unilab.uniplan.major.dto.MajorCoursesDto; import org.unilab.uniplan.major.dto.MajorCoursesResponseDto; @@ -23,9 +22,6 @@ public interface MajorMapper { @Mapping(source = "faculty.id", target = "facultyId") MajorCoursesDto toFullDto(Major major); - @Mapping(source = "facultyId", target = "faculty.id") - void updateEntityFromDto(MajorDto majorDto, @MappingTarget Major major); - @Mapping(target = "id", ignore = true) MajorDto toInnerDto(MajorRequestDto requestDto); diff --git a/src/main/java/org/unilab/uniplan/major/MajorService.java b/src/main/java/org/unilab/uniplan/major/MajorService.java index 0933024b..0f2381fe 100644 --- a/src/main/java/org/unilab/uniplan/major/MajorService.java +++ b/src/main/java/org/unilab/uniplan/major/MajorService.java @@ -1,7 +1,7 @@ package org.unilab.uniplan.major; +import org.unilab.uniplan.faculty.Faculty; import org.unilab.uniplan.major.dto.MajorCoursesDto; - import static org.unilab.uniplan.utils.ErrorConstants.MAJOR_NOT_FOUND; import jakarta.transaction.Transactional; @@ -77,7 +77,10 @@ public void deleteMajor(final UUID id) { private MajorDto updateEntityAndConvertToDto(final MajorDto dto, final Major entity) { - majorMapper.updateEntityFromDto(dto, entity); + Faculty faculty = new Faculty(); + faculty.setId(dto.facultyId()); + entity.setFaculty(faculty); + entity.setMajorName(dto.majorName()); return saveEntityAndConvertToDto(entity); } diff --git a/src/test/java/org/unilab/uniplan/major/MajorServiceTest.java b/src/test/java/org/unilab/uniplan/major/MajorServiceTest.java index 6430ee97..a89bcf17 100644 --- a/src/test/java/org/unilab/uniplan/major/MajorServiceTest.java +++ b/src/test/java/org/unilab/uniplan/major/MajorServiceTest.java @@ -6,7 +6,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.any; -import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -20,6 +19,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import org.unilab.uniplan.exception.ResourceNotFoundException; +import org.unilab.uniplan.faculty.Faculty; import org.unilab.uniplan.major.dto.MajorCoursesDto; import org.unilab.uniplan.major.dto.MajorDto; @@ -38,6 +38,7 @@ class MajorServiceTest { private MajorCoursesDto majorCoursesDto; private MajorDto majorDTO; private Major major; + private Faculty faculty; private UUID majorId; private UUID facultyId; @@ -48,6 +49,8 @@ void setUp() { majorCoursesDto = new MajorCoursesDto(majorId, facultyId, "Informatics", List.of()); majorDTO = new MajorDto(majorId, facultyId, "Informatics"); major = new Major(); + faculty = new Faculty(); + faculty.setId(facultyId); } @Test @@ -166,7 +169,6 @@ void findAllShouldReturnListOfMajorDTOs() { @Test void updateMajorShouldReturnUpdatedMajorDTOIfFound() { when(majorRepository.findById(majorId)).thenReturn(Optional.of(major)); - doNothing().when(majorMapper).updateEntityFromDto(majorDTO, major); when(majorRepository.save(major)).thenReturn(major); when(majorMapper.toDto(major)).thenReturn(majorDTO); @@ -176,6 +178,15 @@ void updateMajorShouldReturnUpdatedMajorDTOIfFound() { verify(majorRepository).save(major); } + @Test + void updateMajorShouldThrowResourceNotFoundExceptionIfFacultyNotFound() { + when(majorRepository.findById(majorId)).thenReturn(Optional.empty()); + + assertThrows(ResourceNotFoundException.class, () -> majorService.updateMajor(majorId, majorDTO)); + + verify(majorRepository, never()).save(any()); + } + @Test void updateMajorShouldReturnEmptyIfNotFound() { when(majorRepository.findById(majorId)).thenReturn(Optional.empty());