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') {
|
||||
useJUnitPlatform()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,10 @@ dependencies {
|
|||
compileOnly '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)
|
||||
implementation 'org.mapstruct:mapstruct:1.5.3.Final'
|
||||
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.3.Final'
|
||||
|
|
@ -40,6 +44,10 @@ dependencies {
|
|||
// Mockito for mocking in tests
|
||||
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 {
|
||||
|
|
|
|||
|
|
@ -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.repository.UserRepository;
|
||||
import models.exceptions.ResourceNotFoundException;
|
||||
import models.requests.CreateUserRequest;
|
||||
import models.responses.UserResponse;
|
||||
|
||||
import static br.com.rayankonecny.userserviceapi.creator.CreatorUtils.generateMock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.Mockito.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.times;
|
||||
|
||||
|
|
@ -43,15 +44,15 @@ public class UserServiceTest {
|
|||
@Test
|
||||
public void whenCallFindByIdWithValidIdTheReturnUserResponse() {
|
||||
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");
|
||||
|
||||
Assertions.assertNotNull(response);
|
||||
assertEquals(UserResponse.class, response.getClass());
|
||||
|
||||
verify(repository, times(1)).findById(anyString());
|
||||
verify(mapper, times(1)).fromEntity(any(User.class));
|
||||
verify(repository).findById(anyString());
|
||||
verify(mapper).fromEntity(any(User.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -73,7 +74,7 @@ public class UserServiceTest {
|
|||
public void whenCallFindAllThenReturnListOfUserResponses() {
|
||||
// Implement test for findAll method
|
||||
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();
|
||||
|
||||
|
|
@ -85,4 +86,23 @@ public class UserServiceTest {
|
|||
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