add test to save user servie
This commit is contained in:
parent
6fbc769195
commit
20b84b73a2
4 changed files with 49 additions and 38 deletions
|
|
@ -15,38 +15,6 @@ java {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// ext {
|
|
||||||
// springCloudVersion = "2023.0.3"
|
|
||||||
// }
|
|
||||||
|
|
||||||
// dependencies {
|
|
||||||
|
|
||||||
// implementation 'br.com.rayan:hd-commons-lib:1.0.0'
|
|
||||||
|
|
||||||
// implementation 'org.springframework.boot:spring-boot-starter'
|
|
||||||
// implementation 'org.springframework.boot:spring-boot-starter-web'
|
|
||||||
// implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
|
|
||||||
// implementation 'org.springframework.boot:spring-boot-starter-validation'
|
|
||||||
|
|
||||||
// // Swagger / OpenAPI (compatível com Spring Boot 3.3.x)
|
|
||||||
// implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
|
|
||||||
|
|
||||||
// compileOnly 'org.projectlombok:lombok'
|
|
||||||
// annotationProcessor 'org.projectlombok:lombok'
|
|
||||||
|
|
||||||
// implementation 'org.mapstruct:mapstruct:1.5.3.Final'
|
|
||||||
// annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
|
|
||||||
|
|
||||||
// testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
|
||||||
// }
|
|
||||||
|
|
||||||
// dependencyManagement {
|
|
||||||
// imports {
|
|
||||||
// mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
tasks.named('test') {
|
tasks.named('test') {
|
||||||
useJUnitPlatform()
|
useJUnitPlatform()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,10 @@ dependencies {
|
||||||
compileOnly 'org.projectlombok:lombok'
|
compileOnly 'org.projectlombok:lombok'
|
||||||
annotationProcessor 'org.projectlombok:lombok'
|
annotationProcessor 'org.projectlombok:lombok'
|
||||||
|
|
||||||
|
// Lombok para TESTES (ESSENCIAL)
|
||||||
|
testCompileOnly 'org.projectlombok:lombok'
|
||||||
|
testAnnotationProcessor 'org.projectlombok:lombok'
|
||||||
|
|
||||||
// MapStruct for object mapping (at compile time)
|
// MapStruct for object mapping (at compile time)
|
||||||
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
|
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
|
||||||
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
|
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
|
||||||
|
|
@ -40,6 +44,10 @@ dependencies {
|
||||||
// Mockito for mocking in tests
|
// Mockito for mocking in tests
|
||||||
testImplementation 'org.mockito:mockito-core:5.12.0'
|
testImplementation 'org.mockito:mockito-core:5.12.0'
|
||||||
|
|
||||||
|
// Podam for data mocking in tests
|
||||||
|
testImplementation 'uk.co.jemos.podam:podam:8.0.2.RELEASE'
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencyManagement {
|
dependencyManagement {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
package br.com.rayankonecny.userserviceapi.creator;
|
||||||
|
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
import uk.co.jemos.podam.api.PodamFactory;
|
||||||
|
import uk.co.jemos.podam.api.PodamFactoryImpl;
|
||||||
|
|
||||||
|
@UtilityClass
|
||||||
|
public class CreatorUtils {
|
||||||
|
|
||||||
|
private static final PodamFactory factory = new PodamFactoryImpl();
|
||||||
|
|
||||||
|
public static <T> T generateMock(final Class<T> classe) {
|
||||||
|
return factory.manufacturePojo(classe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -16,12 +16,13 @@ import br.com.rayankonecny.userserviceapi.entity.User;
|
||||||
import br.com.rayankonecny.userserviceapi.mapper.UserMapper;
|
import br.com.rayankonecny.userserviceapi.mapper.UserMapper;
|
||||||
import br.com.rayankonecny.userserviceapi.repository.UserRepository;
|
import br.com.rayankonecny.userserviceapi.repository.UserRepository;
|
||||||
import models.exceptions.ResourceNotFoundException;
|
import models.exceptions.ResourceNotFoundException;
|
||||||
|
import models.requests.CreateUserRequest;
|
||||||
import models.responses.UserResponse;
|
import models.responses.UserResponse;
|
||||||
|
|
||||||
|
import static br.com.rayankonecny.userserviceapi.creator.CreatorUtils.generateMock;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
import static org.mockito.Mockito.anyString;
|
import static org.mockito.Mockito.anyString;
|
||||||
import static org.mockito.Mockito.mock;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.Mockito.any;
|
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
|
|
||||||
|
|
@ -43,15 +44,15 @@ public class UserServiceTest {
|
||||||
@Test
|
@Test
|
||||||
public void whenCallFindByIdWithValidIdTheReturnUserResponse() {
|
public void whenCallFindByIdWithValidIdTheReturnUserResponse() {
|
||||||
when(repository.findById(anyString())).thenReturn(Optional.of(new User()));
|
when(repository.findById(anyString())).thenReturn(Optional.of(new User()));
|
||||||
when(mapper.fromEntity(any(User.class))).thenReturn(mock(UserResponse.class));
|
when(mapper.fromEntity(any(User.class))).thenReturn(generateMock(UserResponse.class));
|
||||||
|
|
||||||
final var response = service.findById("1");
|
final var response = service.findById("1");
|
||||||
|
|
||||||
Assertions.assertNotNull(response);
|
Assertions.assertNotNull(response);
|
||||||
assertEquals(UserResponse.class, response.getClass());
|
assertEquals(UserResponse.class, response.getClass());
|
||||||
|
|
||||||
verify(repository, times(1)).findById(anyString());
|
verify(repository).findById(anyString());
|
||||||
verify(mapper, times(1)).fromEntity(any(User.class));
|
verify(mapper).fromEntity(any(User.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -73,7 +74,7 @@ public class UserServiceTest {
|
||||||
public void whenCallFindAllThenReturnListOfUserResponses() {
|
public void whenCallFindAllThenReturnListOfUserResponses() {
|
||||||
// Implement test for findAll method
|
// Implement test for findAll method
|
||||||
when(repository.findAll()).thenReturn(List.of(new User(), new User()));
|
when(repository.findAll()).thenReturn(List.of(new User(), new User()));
|
||||||
when(mapper.fromEntity(any(User.class))).thenReturn(mock(UserResponse.class));
|
when(mapper.fromEntity(any(User.class))).thenReturn(generateMock(UserResponse.class));
|
||||||
|
|
||||||
final var responses = service.findAll();
|
final var responses = service.findAll();
|
||||||
|
|
||||||
|
|
@ -85,4 +86,23 @@ public class UserServiceTest {
|
||||||
verify(mapper, times(2)).fromEntity(any(User.class));
|
verify(mapper, times(2)).fromEntity(any(User.class));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void whenCallSaveThenSucess() {
|
||||||
|
|
||||||
|
final var request = generateMock(CreateUserRequest.class);
|
||||||
|
|
||||||
|
when(mapper.fromRequest(any())).thenReturn(new User());
|
||||||
|
when(encoder.encode(anyString())).thenReturn("encoded");
|
||||||
|
when(repository.save(any(User.class))).thenReturn(new User());
|
||||||
|
when(repository.findByEmail(anyString())).thenReturn(Optional.empty());
|
||||||
|
|
||||||
|
service.save(request);
|
||||||
|
|
||||||
|
verify(mapper).fromRequest(request);
|
||||||
|
verify(encoder).encode(request.password());
|
||||||
|
verify(repository).save(any(User.class));
|
||||||
|
verify(repository).findByEmail(request.email());
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue