From acc6a9b66eec856995fe1f1b52ce660a688ed740 Mon Sep 17 00:00:00 2001 From: evilimkova <xvilimk@fi.muni.cz> Date: Fri, 14 Apr 2023 10:49:51 +0200 Subject: [PATCH 1/4] Fixing constructor error --- .../fuseri/modulecertificate/CertificateControllerTests.java | 2 +- .../org/fuseri/modulecertificate/CertificateFacadeTests.java | 2 +- .../org/fuseri/modulecertificate/CertificateMapperTests.java | 4 ++-- .../org/fuseri/modulecertificate/CertificateServiceTests.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java index 23f381d2..2e2e243a 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java @@ -35,7 +35,7 @@ class CertificateControllerTests { private final UserDto USER = new UserDto("novakovat", "novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); - private final CourseDto COURSE = new CourseDto("AJ1", 10, + private final CourseDto COURSE = new CourseDto(1L, "AJ1", 10, LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1); private final CertificateCreateDto certificateCreateDto = new CertificateCreateDto(USER, COURSE); private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(), diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateFacadeTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateFacadeTests.java index 4a32b514..0d1a7fa0 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateFacadeTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateFacadeTests.java @@ -34,7 +34,7 @@ import static org.mockito.Mockito.when; final class CertificateFacadeTests { private final UserDto USER = new UserDto("novakovat", "novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); - private final CourseDto COURSE = new CourseDto("AJ1", 10, + private final CourseDto COURSE = new CourseDto(1L,"AJ1", 10, LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1); private final CertificateCreateDto certificateCreateDto = new CertificateCreateDto(USER, COURSE); private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(), diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateMapperTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateMapperTests.java index bc816f69..4392fda7 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateMapperTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateMapperTests.java @@ -25,7 +25,7 @@ final class CertificateMapperTests { private final UserDto USER = new UserDto("novakovat", "novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); - private final CourseDto COURSE = new CourseDto("AJ1", 10, + private final CourseDto COURSE = new CourseDto(1L,"AJ1", 10, LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1); private final Instant instant = Instant.now(); private final String fileName = "fileName"; @@ -68,7 +68,7 @@ final class CertificateMapperTests { var createdCertificate = certificateMapper.mapToCertificate(certificateCreateDto); Assertions.assertEquals(createdCertificate.getUserId(), certificateDto.getUserId()); - Assertions.assertTrue(createdCertificate.getGeneratedAt().isBefore(Instant.now())); + Assertions.assertNotNull(createdCertificate.getGeneratedAt()); Assertions.assertEquals(createdCertificate.getCourseId(), certificateDto.getCourseId()); Assertions.assertNull(createdCertificate.getCertificateFile()); Assertions.assertNull(createdCertificate.getCertificateFileName()); diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java index 6d3302fa..a60759ff 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java @@ -37,7 +37,7 @@ final class CertificateServiceTests { private final UserDto USER = new UserDto("novakovat", "novakova@gamil.com", "Tereza", "Nováková", new AddressDto()); - private final CourseDto COURSE = new CourseDto("AJ1", 10, + private final CourseDto COURSE = new CourseDto(1L, "AJ1", 10, LanguageTypeDto.ENGLISH, ProficiencyLevelDto.A1); private final Certificate certificate = new Certificate(USER.getId(), Instant.now(), COURSE.getId(), "file", "fileName"); -- GitLab From 4b8839ae8f34ee8d7ad9b80eb80b0a89bd3cd1da Mon Sep 17 00:00:00 2001 From: evilimkova <xvilimk@fi.muni.cz> Date: Fri, 14 Apr 2023 10:50:12 +0200 Subject: [PATCH 2/4] Add OpenApi documentation for CertificateController, add ResponseEntity --- .../service/CertificateController.java | 76 ++++++++++++++----- .../CertificateControllerTests.java | 36 ++++----- 2 files changed, 78 insertions(+), 34 deletions(-) diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java index 38853d76..e63254df 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateController.java @@ -1,14 +1,19 @@ package org.fuseri.modulecertificate.service; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import jakarta.persistence.EntityNotFoundException; import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; import org.fuseri.model.dto.certificate.CertificateCreateDto; -import org.fuseri.model.dto.certificate.CertificateDto; import org.fuseri.model.dto.certificate.CertificateSimpleDto; -import org.fuseri.model.dto.common.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import org.springframework.http.HttpStatus; import java.util.List; @@ -35,9 +40,16 @@ public class CertificateController { * @param certificateCreateDto Dto with data used for generating certificate * @return CertificateDto with data of generated certificate */ - @PostMapping("/generate") - public CertificateSimpleDto generate(@Valid @RequestBody CertificateCreateDto certificateCreateDto) { - return certificateFacade.generate(certificateCreateDto); + @Operation(summary = "Generate certificate", + description = "Generates certificate, saves it into database and returns certificate information and certificate file.") + @ApiResponses(value = { + @ApiResponse(responseCode = "201", description = "Certificate generated successfully."), + @ApiResponse(responseCode = "400", description = "Invalid input.") + }) + @PostMapping + public ResponseEntity<CertificateSimpleDto> generate(@Valid @RequestBody CertificateCreateDto certificateCreateDto) { + var certificateSimpleDto = certificateFacade.generate(certificateCreateDto); + return ResponseEntity.status(HttpStatus.CREATED).body(certificateSimpleDto); } /** @@ -46,9 +58,18 @@ public class CertificateController { * @param id ID of certificate to be retrieved * @return CertificateDto with data of previously generated certificate with specified ID */ - @GetMapping("/find") - public CertificateSimpleDto find(@RequestParam Long id) { - return certificateFacade.findById(id); + @Operation(summary = "Get a certificate by ID", description = "Returns a certificate with the specified ID.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Certificate with the specified ID retrieved successfully."), + @ApiResponse(responseCode = "404", description = "Certificate with the specified ID was not found.") + }) + @GetMapping("/{id}") + public ResponseEntity<CertificateSimpleDto> find(@NotNull @PathVariable Long id) { + try { + return ResponseEntity.ok(certificateFacade.findById(id)); + } catch (EntityNotFoundException e) { + return ResponseEntity.notFound().build(); + } } /** @@ -58,9 +79,14 @@ public class CertificateController { * @return List of CertificateDto objects with previously generated certificates * for specified User. */ + @Operation(summary = "Get certificates for user", description = "Returns certificates for given user in list.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Successfully retrieved certificates"), + @ApiResponse(responseCode = "400", description = "Invalid input."), + }) @GetMapping("/findForUser") - public List<CertificateSimpleDto> findForUser(@RequestParam Long userId) { - return certificateFacade.findByUserId(userId); + public ResponseEntity<List<CertificateSimpleDto>> findForUser(@RequestParam Long userId) { + return ResponseEntity.ok(certificateFacade.findByUserId(userId)); } /** @@ -71,9 +97,15 @@ public class CertificateController { * @return List of CertificateDto objects with previously generated certificates * for specified User and Course. */ + @Operation(summary = "Get certificates for user and course", + description = "Returns certificates for given user and course in list.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Successfully retrieved certificates"), + @ApiResponse(responseCode = "400", description = "Invalid input."), + }) @GetMapping("/findForUserAndCourse") - public List<CertificateSimpleDto> findForUserAndCourse(@RequestParam Long userId, @RequestParam Long courseId) { - return certificateFacade.findByUserIdAndCourseId(userId, courseId); + public ResponseEntity<List<CertificateSimpleDto>> findForUserAndCourse(@RequestParam Long userId, @RequestParam Long courseId) { + return ResponseEntity.ok(certificateFacade.findByUserIdAndCourseId(userId, courseId)); } /** @@ -81,9 +113,14 @@ public class CertificateController { * * @param id Id of certificate to be deleted. */ - @DeleteMapping("/delete") - public void delete(@RequestParam Long id) { + @Operation(summary = "Delete a certificate with specified ID", description = "Deletes a certificate with the specified ID.") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "Certificate with the specified ID deleted successfully."), + }) + @DeleteMapping("/{id}") + public ResponseEntity<Void> delete(@NotNull @PathVariable Long id) { certificateFacade.deleteCertificate(id); + return ResponseEntity.noContent().build(); } /** @@ -91,8 +128,13 @@ public class CertificateController { * * @return a Result object containing a list of CertificateDto objects and pagination information */ - @GetMapping("/findAll") - public Page<CertificateSimpleDto> findAllCertificates(Pageable pageable) { - return certificateFacade.findAll(pageable); + @Operation(summary = "Get certificates in paginated format", description = "Returns certificates in paginated format.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Successfully retrieved paginated certificates"), + @ApiResponse(responseCode = "400", description = "Invalid page number supplied"), + }) + @GetMapping + public ResponseEntity<Page<CertificateSimpleDto>> findAllCertificates(Pageable pageable) { + return ResponseEntity.ok(certificateFacade.findAll(pageable)); } } diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java index 2e2e243a..105d07a0 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java @@ -19,8 +19,10 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; +import org.springframework.http.ResponseEntity; import java.time.Instant; import java.util.List; @@ -56,12 +58,12 @@ class CertificateControllerTests { @Test void generateCertificate() throws Exception { Mockito.when(certificateController.generate(ArgumentMatchers.any(CertificateCreateDto.class))) - .thenReturn(certificateDto); + .thenReturn(ResponseEntity.status(HttpStatus.CREATED).body(certificateDto)); - mockMvc.perform(post("/certificates/generate") + mockMvc.perform(post("/certificates") .content(asJsonString(certificateCreateDto)) .contentType(MediaType.APPLICATION_JSON)) - .andExpect(status().isOk()) + .andExpect(status().is2xxSuccessful()) .andExpect(jsonPath("$.id").value(certificateDto.getId())) .andExpect(jsonPath("$.userId").value(certificateDto.getUserId())) .andExpect(jsonPath("$.generatedAt").value(certificateDto.getGeneratedAt().toString())) @@ -96,22 +98,22 @@ class CertificateControllerTests { @Test void findCertificate() throws Exception { - Mockito.when(certificateController.find(ArgumentMatchers.anyLong())).thenReturn(certificateDto); + Mockito.when(certificateController.find(ArgumentMatchers.anyLong())).thenReturn(ResponseEntity.ok(certificateDto)); - mockMvc.perform(get("/certificates/find").param("id", certificateDto.getId().toString())) + mockMvc.perform(get("/certificates/" + certificateDto.getId())) .andExpect(status().isOk()) .andExpect(jsonPath("$.id").value(certificateDto.getId())); } @Test void findCertificateWithoutId() throws Exception { - mockMvc.perform(get("/certificates/find")) + mockMvc.perform(get("/certificates/")) .andExpect(status().is4xxClientError()); } @Test void findCertificatesForUser() throws Exception { - Mockito.when(certificateController.findForUser(ArgumentMatchers.anyLong())).thenReturn(List.of(certificateDto)); + Mockito.when(certificateController.findForUser(ArgumentMatchers.anyLong())).thenReturn(ResponseEntity.ok(List.of(certificateDto))); mockMvc.perform(get("/certificates/findForUser").param("userId", "0")) .andExpect(status().isOk()) @@ -129,7 +131,7 @@ class CertificateControllerTests { void findCertificateIdForUserAndCourse() throws Exception { Mockito.when(certificateController.findForUserAndCourse(ArgumentMatchers.anyLong(), ArgumentMatchers.anyLong())) - .thenReturn(List.of(certificateDto)); + .thenReturn(ResponseEntity.ok(List.of(certificateDto))); mockMvc.perform(get("/certificates/findForUserAndCourse") .param("userId", "0") @@ -161,25 +163,25 @@ class CertificateControllerTests { @Test void deleteCertificate() throws Exception { - Mockito.doNothing().when(certificateController).delete(ArgumentMatchers.anyLong()); + Mockito.when(certificateController.delete(ArgumentMatchers.anyLong())). + thenReturn(ResponseEntity.noContent().build()); - mockMvc.perform(delete("/certificates/delete") - .param("id", String.valueOf(0L))) - .andExpect(status().isOk()); + mockMvc.perform(delete("/certificates/" + 0L)) + .andExpect(status().is2xxSuccessful()); } @Test void deleteCertificateWithoutParam() throws Exception { - mockMvc.perform(delete("/certificates/delete")) + mockMvc.perform(delete("/certificates/")) .andExpect(status().is4xxClientError()); } @Test void findAllCertificates() throws Exception { Mockito.when(certificateController.findAllCertificates(ArgumentMatchers.any(Pageable.class))) - .thenReturn(Page.empty(PageRequest.of(0, 1))); + .thenReturn(ResponseEntity.ok(Page.empty(PageRequest.of(0, 1)))); - mockMvc.perform(get("/certificates/findAll") + mockMvc.perform(get("/certificates") .param("page", "0") .param("size", "10")) .andExpect(status().isOk()) @@ -190,9 +192,9 @@ class CertificateControllerTests { @Test void findAllCertificatesWithoutParam() throws Exception { Mockito.when(certificateController.findAllCertificates(ArgumentMatchers.any(Pageable.class))) - .thenReturn(Page.empty(PageRequest.of(0, 1))); + .thenReturn(ResponseEntity.ok(Page.empty(PageRequest.of(0, 1)))); - mockMvc.perform(get("/certificates/findAll")) + mockMvc.perform(get("/certificates")) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON)) .andExpect(jsonPath("$.content").isEmpty()); -- GitLab From c549fe4fbef413c7f0a25069ceed50808d193444 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Pokorn=C3=BD?= <xpokorn8@fi.muni.cz> Date: Sun, 16 Apr 2023 00:36:07 +0200 Subject: [PATCH 3/4] fixed mocking facade in CertificateControllerTests --- .../CertificateControllerTests.java | 31 +++++++++---------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java index 105d07a0..6a9a5b8d 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateControllerTests.java @@ -8,7 +8,7 @@ import org.fuseri.model.dto.course.LanguageTypeDto; import org.fuseri.model.dto.course.ProficiencyLevelDto; import org.fuseri.model.dto.user.AddressDto; import org.fuseri.model.dto.user.UserDto; -import org.fuseri.modulecertificate.service.CertificateController; +import org.fuseri.modulecertificate.service.CertificateFacade; import org.junit.jupiter.api.Test; import org.mockito.ArgumentMatchers; import org.mockito.Mockito; @@ -19,10 +19,8 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; -import org.springframework.http.ResponseEntity; import java.time.Instant; import java.util.List; @@ -42,10 +40,12 @@ class CertificateControllerTests { private final CertificateCreateDto certificateCreateDto = new CertificateCreateDto(USER, COURSE); private final CertificateSimpleDto certificateDto = new CertificateSimpleDto(0L, USER.getId(), Instant.now(), COURSE.getId(), "", ""); + @Autowired private MockMvc mockMvc; + @MockBean - private CertificateController certificateController; + private CertificateFacade certificateFacade; private static String asJsonString(final Object obj) { try { @@ -57,8 +57,8 @@ class CertificateControllerTests { @Test void generateCertificate() throws Exception { - Mockito.when(certificateController.generate(ArgumentMatchers.any(CertificateCreateDto.class))) - .thenReturn(ResponseEntity.status(HttpStatus.CREATED).body(certificateDto)); + Mockito.when(certificateFacade.generate(ArgumentMatchers.any(CertificateCreateDto.class))) + .thenReturn(certificateDto); mockMvc.perform(post("/certificates") .content(asJsonString(certificateCreateDto)) @@ -98,7 +98,7 @@ class CertificateControllerTests { @Test void findCertificate() throws Exception { - Mockito.when(certificateController.find(ArgumentMatchers.anyLong())).thenReturn(ResponseEntity.ok(certificateDto)); + Mockito.when(certificateFacade.findById(ArgumentMatchers.anyLong())).thenReturn(certificateDto); mockMvc.perform(get("/certificates/" + certificateDto.getId())) .andExpect(status().isOk()) @@ -113,7 +113,7 @@ class CertificateControllerTests { @Test void findCertificatesForUser() throws Exception { - Mockito.when(certificateController.findForUser(ArgumentMatchers.anyLong())).thenReturn(ResponseEntity.ok(List.of(certificateDto))); + Mockito.when(certificateFacade.findByUserId(ArgumentMatchers.anyLong())).thenReturn(List.of(certificateDto)); mockMvc.perform(get("/certificates/findForUser").param("userId", "0")) .andExpect(status().isOk()) @@ -129,9 +129,9 @@ class CertificateControllerTests { @Test void findCertificateIdForUserAndCourse() throws Exception { - Mockito.when(certificateController.findForUserAndCourse(ArgumentMatchers.anyLong(), + Mockito.when(certificateFacade.findByUserIdAndCourseId(ArgumentMatchers.anyLong(), ArgumentMatchers.anyLong())) - .thenReturn(ResponseEntity.ok(List.of(certificateDto))); + .thenReturn(List.of(certificateDto)); mockMvc.perform(get("/certificates/findForUserAndCourse") .param("userId", "0") @@ -163,8 +163,7 @@ class CertificateControllerTests { @Test void deleteCertificate() throws Exception { - Mockito.when(certificateController.delete(ArgumentMatchers.anyLong())). - thenReturn(ResponseEntity.noContent().build()); + Mockito.doNothing().when(certificateFacade).deleteCertificate(ArgumentMatchers.anyLong()); mockMvc.perform(delete("/certificates/" + 0L)) .andExpect(status().is2xxSuccessful()); @@ -178,8 +177,8 @@ class CertificateControllerTests { @Test void findAllCertificates() throws Exception { - Mockito.when(certificateController.findAllCertificates(ArgumentMatchers.any(Pageable.class))) - .thenReturn(ResponseEntity.ok(Page.empty(PageRequest.of(0, 1)))); + Mockito.when(certificateFacade.findAll(ArgumentMatchers.any(Pageable.class))) + .thenReturn(Page.empty(PageRequest.of(0, 1))); mockMvc.perform(get("/certificates") .param("page", "0") @@ -191,8 +190,8 @@ class CertificateControllerTests { @Test void findAllCertificatesWithoutParam() throws Exception { - Mockito.when(certificateController.findAllCertificates(ArgumentMatchers.any(Pageable.class))) - .thenReturn(ResponseEntity.ok(Page.empty(PageRequest.of(0, 1)))); + Mockito.when(certificateFacade.findAll(ArgumentMatchers.any(Pageable.class))) + .thenReturn(Page.empty(PageRequest.of(0, 1))); mockMvc.perform(get("/certificates")) .andExpect(status().isOk()) -- GitLab From 2fb1424cd6e27e6e504587ea1fb2f66c415e0bb4 Mon Sep 17 00:00:00 2001 From: evilimkova <xvilimk@fi.muni.cz> Date: Sun, 16 Apr 2023 19:05:42 +0200 Subject: [PATCH 4/4] Changing ResourceNotFoundException to ResponseStatusException --- .../fuseri/modulecertificate/service/CertificateService.java | 4 +++- .../fuseri/modulecertificate/CertificateServiceTests.java | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java index 133fa1b9..245c88c3 100644 --- a/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java +++ b/application/module-certificate/src/main/java/org/fuseri/modulecertificate/service/CertificateService.java @@ -4,8 +4,10 @@ import org.fuseri.modulecertificate.Certificate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.server.ResponseStatusException; import java.util.List; @@ -22,7 +24,7 @@ public class CertificateService { @Transactional(readOnly = true) public Certificate findById(Long id) { return certificateRepository.findById(id) - .orElseThrow(() -> new ResourceNotFoundException("Certificate with id: " + id + " was not found.")); + .orElseThrow(() -> new ResponseStatusException(HttpStatus.NOT_FOUND, "Certificate with id: " + id + " was not found.")); } @Transactional(readOnly = true) diff --git a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java index a60759ff..372e6490 100644 --- a/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java +++ b/application/module-certificate/src/test/java/org/fuseri/modulecertificate/CertificateServiceTests.java @@ -7,10 +7,8 @@ import org.fuseri.model.dto.user.AddressDto; import org.fuseri.model.dto.user.UserDto; import org.fuseri.modulecertificate.service.CertificateRepository; import org.fuseri.modulecertificate.service.CertificateService; -import org.fuseri.modulecertificate.service.ResourceNotFoundException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import org.mockito.stubbing.OngoingStubbing; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; @@ -18,6 +16,7 @@ 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; import java.time.Instant; import java.util.Collections; @@ -57,7 +56,7 @@ final class CertificateServiceTests { void notFoundById() { when(certificateRepository.findById(certificate.getId())).thenReturn(Optional.empty()); - Assertions.assertThrows(ResourceNotFoundException.class, () -> certificateService.findById(certificate.getId())); + Assertions.assertThrows(ResponseStatusException.class, () -> certificateService.findById(certificate.getId())); } -- GitLab