Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/main/java/br/com/clickbus/challenge/entity/Place.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,25 @@ public class PlaceService {
private PlaceRepository repository;

public List<Place> findAll() {
throw new NotImplementedException("Metodo nao implementado");
return repository.findAll();
}

public Optional<Place> 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<Place> 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;
}

}
Original file line number Diff line number Diff line change
@@ -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<Place> 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<Place> actualList = placeService.findAll();

Assertions.assertEquals(actualList, places);
Assertions.assertSame(places.size(), actualList.size());

}

@Test
void quandoNaoExisteNenhumPlace_DeveRetornarListaVazia() {
when(repository.findAll()).thenReturn(new ArrayList<>());

List<Place> 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<Place> actualList = placeService.findAll();
Assertions.assertEquals(1, actualList.size());
}

@Test
void deveChamarRepositorioFindAllUmaVez() {

placeService.findAll();

verify(repository, times(1)).findAll();
}


}