From d4764d6b4dba3a8db3b5a566238ca44669b397c6 Mon Sep 17 00:00:00 2001 From: eduardoSantiag0 <143814420+eduardoSantiag0@users.noreply.github.com> Date: Wed, 8 Oct 2025 11:13:16 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20Implementa=C3=A7=C3=A3o=20dos=20m=C3=A9?= =?UTF-8?q?todos=20faltantes=20em=20PlaceService=20e=20testes=20unit=C3=A1?= =?UTF-8?q?rios=20para=20PlaceService.findAll?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/clickbus/challenge/entity/Place.java | 9 ++ .../challenge/service/PlaceService.java | 13 ++- .../service/PlaceServiceFindAllTest.java | 96 +++++++++++++++++++ 3 files changed, 113 insertions(+), 5 deletions(-) create mode 100644 src/test/java/br/com/clickbus/challenge/service/PlaceServiceFindAllTest.java diff --git a/src/main/java/br/com/clickbus/challenge/entity/Place.java b/src/main/java/br/com/clickbus/challenge/entity/Place.java index ccfc550..6c5ccef 100644 --- a/src/main/java/br/com/clickbus/challenge/entity/Place.java +++ b/src/main/java/br/com/clickbus/challenge/entity/Place.java @@ -54,4 +54,13 @@ public static Place of(String name, String slug, String city, String state) { public PlaceDTO convertToDTO() { return PlaceDTO.of(this.name, this.slug, this.city, this.state); } + + public void updateFromDTO(@NotNull PlaceDTO dto) { + this.name = dto.getName(); + this.slug = dto.getSlug(); + this.city = dto.getCity(); + this.state = dto.getState(); + this.updatedAt = LocalDateTime.now(); + } + } diff --git a/src/main/java/br/com/clickbus/challenge/service/PlaceService.java b/src/main/java/br/com/clickbus/challenge/service/PlaceService.java index 799d1a8..ced5064 100644 --- a/src/main/java/br/com/clickbus/challenge/service/PlaceService.java +++ b/src/main/java/br/com/clickbus/challenge/service/PlaceService.java @@ -19,22 +19,25 @@ public class PlaceService { private PlaceRepository repository; public List findAll() { - throw new NotImplementedException("Metodo nao implementado"); + return repository.findAll(); } public Optional findById(@NotNull Long id) { - throw new NotImplementedException("Metodo nao implementado"); + return repository.findById(id); } public Place save(@NotNull Place place) { - throw new NotImplementedException("Metodo nao implementado"); + return repository.save(place); } public List findByName(@NotNull String name) { - throw new NotImplementedException("Metodo nao implementado"); + return repository.findByName(name); } public Place alter(@NotNull Place place,@NotNull PlaceDTO placeDTO) { - throw new NotImplementedException("Metodo nao implementado"); + place.updateFromDTO(placeDTO); + repository.save(place); + return place; } + } diff --git a/src/test/java/br/com/clickbus/challenge/service/PlaceServiceFindAllTest.java b/src/test/java/br/com/clickbus/challenge/service/PlaceServiceFindAllTest.java new file mode 100644 index 0000000..86b999b --- /dev/null +++ b/src/test/java/br/com/clickbus/challenge/service/PlaceServiceFindAllTest.java @@ -0,0 +1,96 @@ +package br.com.clickbus.challenge.service; + +import br.com.clickbus.challenge.entity.Place; +import br.com.clickbus.challenge.repository.PlaceRepository; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.mockito.Mockito.*; + +@ExtendWith(MockitoExtension.class) +class PlaceServiceFindAllTest { + + private List places = new ArrayList<>(); + + @Mock + private PlaceRepository repository; + + @InjectMocks + private PlaceService placeService; + + @BeforeEach + void setup() { + Place place1 = new Place( + "Terminal Rodoviário do Tietê", + "terminal-rodoviario-do-tiete", + "São Paulo", + "SP" + ); + + Place place2 = new Place( + "Rodoviária Novo Rio", + "rodoviaria-novo-rio", + "Rio de Janeiro", + "RJ" + ); + + Place place3 = new Place( + "Estação Rodoviária de Belo Horizonte", + "estacao-rodoviaria-de-belo-horizonte", + "Belo Horizonte", + "MG" + ); + + places = new ArrayList<>(Arrays.asList(place1, place2, place3)); + + } + + @Test + void quandoChamado_DeveRetornarTodosOsPlaces() { + when(repository.findAll()).thenReturn(places); + + List actualList = placeService.findAll(); + + Assertions.assertEquals(actualList, places); + Assertions.assertSame(places.size(), actualList.size()); + + } + + @Test + void quandoNaoExisteNenhumPlace_DeveRetornarListaVazia() { + when(repository.findAll()).thenReturn(new ArrayList<>()); + + List emptyList = placeService.findAll(); + + Assertions.assertTrue(emptyList.isEmpty()); + } + + @Test + void quandoPossuiUmElemento_DeveRetornarListaComUmElemento() { + when(repository.findAll()).thenReturn(new ArrayList<>(Arrays.asList(new Place( + "Estação Rodoviária de Belo Horizonte", + "estacao-rodoviaria-de-belo-horizonte","Belo Horizonte","MG")))); + + List actualList = placeService.findAll(); + Assertions.assertEquals(1, actualList.size()); + } + + @Test + void deveChamarRepositorioFindAllUmaVez() { + + placeService.findAll(); + + verify(repository, times(1)).findAll(); + } + + +} \ No newline at end of file