Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
barcellos-pedro committed Feb 4, 2024
1 parent d2cf76e commit dadb240
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 6 deletions.
15 changes: 11 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,37 @@ Project based on [Spring Guide](https://spring.io/guides/tutorials/rest/)
## Roadmap

- Refactor (Project Structure)

- [x] Controller
- [x] Model
- [x] Interface
- [x] Etc...

- [x] [Metrics and Tracing](https://spring.io/guides/gs/tanzu-observability/)
- [x] [Dockerfile](https://spring.io/guides/topicals/spring-boot-docker/)

### Todo

- [Tests](https://docs.spring.io/spring-boot/docs/3.2.2/reference/html/features.html#features.testing)

- [x] [JSON](https://spring.academy/courses/building-a-rest-api-with-spring-boot)
- [ ] Unit (in progress)
- [ ] Integration (in progress)
- [x] Unit
- [x] Integration
- [ ] [WebMvc](https://spring.io/guides/gs/testing-web/)


- [CI/CD GitHub Actions](https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-maven)

- [x] Build
- [x] Test
- [ ] Publish API Docs

### Bônus 🎁

- [ ] [API Docs with Restdocs](https://spring.io/guides/gs/testing-restdocs/)
- [ ] Replace H2 to Postgres
- [ ] Monitor Database with PGAdmin using Docker
- [ ] Monitor Postgres with PGAdmin
- [ ] [Caching (Redis)](https://docs.spring.io/spring-framework/reference/integration/cache/annotations.html)
- [ ] Nginx
- [ ] Docker Compose
- [ ] Stress Testing
- [ ] [API Docs with Restdocs](https://spring.io/guides/gs/testing-restdocs/)
59 changes: 57 additions & 2 deletions src/test/java/com/pedro/rest/service/impl/EmployeeServiceTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.springframework.hateoas.EntityModel;

import java.util.List;
import java.util.Optional;

import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
Expand All @@ -31,15 +32,21 @@ public class EmployeeServiceTest {

private CollectionModel<EntityModel<Employee>> entityModels;

private final Long id = 1L;

private final Employee employee = new Employee("Pedro", "Reis", "developer");

private final EntityModel<Employee> entity = EntityModel.of(employee);

@BeforeEach
void setup() {
Employee employee = new Employee("Pedro", "Reis", "developer");
EntityModel<Employee> entity = EntityModel.of(employee);
employee.setId(id);
entityModels = CollectionModel.of(List.of(entity));
}

@Test
void getAll() {
when(repository.findAll()).thenReturn(List.of(employee));
when(service.getAll()).thenReturn(entityModels);

var result = service.getAll();
Expand All @@ -49,4 +56,52 @@ void getAll() {
verify(repository, atLeast(1)).findAll();
verify(assembler).toCollectionModel(anyCollection());
}

@Test
void getById() {
when(repository.findById(anyLong())).thenReturn(Optional.of(employee));
when(service.getById(anyLong())).thenReturn(entity);

var result = service.getById(id);
var name = result.getContent().getName();

assertFalse(name.isEmpty());
verify(repository).findById(id);
verify(assembler).toModel(employee);
}

@Test
void create() {
when(repository.save(any())).thenReturn(employee);
when(assembler.toModel(any())).thenReturn(entity);

service.create(employee);

verify(repository).save(employee);
verify(assembler, atLeast(1)).toModel(employee);
verify(assembler).getSelfURI(entity);
}

@Test
void update() {
var expectedEmployee = new Employee("Pedro", "Barcellos", "developer");

when(repository.findById(anyLong())).thenReturn(Optional.of(employee));
when(repository.save(any())).thenReturn(expectedEmployee);
when(assembler.toModel(any())).thenReturn(entity);

service.update(expectedEmployee, id);

assertEquals(expectedEmployee.getLastName(), employee.getLastName());
verify(repository).save(employee);
verify(assembler, atLeast(1)).toModel(expectedEmployee);
verify(assembler).getSelfURI(entity);
}

@Test
void delete() {
doNothing().when(repository).deleteById(anyLong());
service.delete(id);
verify(repository).deleteById(id);
}
}

0 comments on commit dadb240

Please sign in to comment.