diff --git a/user-service-api/src/test/java/br/com/rayankonecny/userserviceapi/service/UserServiceTest.java b/user-service-api/src/test/java/br/com/rayankonecny/userserviceapi/service/UserServiceTest.java index a8ad260..de80ad7 100644 --- a/user-service-api/src/test/java/br/com/rayankonecny/userserviceapi/service/UserServiceTest.java +++ b/user-service-api/src/test/java/br/com/rayankonecny/userserviceapi/service/UserServiceTest.java @@ -11,6 +11,7 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import br.com.rayankonecny.userserviceapi.entity.User; import br.com.rayankonecny.userserviceapi.mapper.UserMapper; @@ -105,4 +106,27 @@ public class UserServiceTest { verify(repository).findByEmail(request.email()); } + + @Test + void whenCallSaveWithInvalidEmailThenThrowDataIntegrityViolationException() { + + final var request = generateMock(CreateUserRequest.class); + final var entity = generateMock(User.class); + + when(repository.findByEmail(anyString())).thenReturn(Optional.of(entity)); + + try { + service.save(request); + } catch (Exception ex) { + assertEquals(DataIntegrityViolationException.class, ex.getClass()); + assertEquals("Email [" + request.email() + "] already exists", ex.getMessage()); + } + + verify(repository).findByEmail(request.email()); + verify(mapper, times(0)).fromRequest(any()); + verify(encoder, times(0)).encode(anyString()); + verify(repository, times(0)).save(any(User.class)); + + } + }