Curso de Spring Boot | Tests unitarios con JUnit 1

Curso de Spring Boot
Tests unitarios con JUnit

Curso de Spring Boot | Tests unitarios con JUnit 2

Esta lección trata sobre tests unitarios con JUnit en Spring Boot. Se explica cómo escribir y ejecutar pruebas para verificar el correcto funcionamiento de una aplicación basada en Spring Boot.

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
</dependency>
@Transactional // Esta anotación significa que las operación se realizarán contra la base de datos que utiliza la aplicación (y luego se desharán)
@SpringBootTest
class HelpinghandslocationApplicationTests {
 @Autowired
 private LocationRepository locationRepository;

 @Autowired
 private LocationController locationController;

 @Test // Esta anotación significa que el contenido de la anotación es un test
 @Order(1) // Podemos establecer el orden en el que se realizarán los tests (si no lo específicamos, el orden será aleatorio)
 void addLocationViaController(){
  LocationTagDTO testlocationTagDTO = new LocationTagDTO("Test Name1", 1.1,1.1, "Test Address1", List.of(2L,5L));
  assertNotNull(locationController.saveLocations(testlocationTagDTO).getBody(), "When saving the object, it needs to be returned");

  testlocationTagDTO =  new LocationTagDTO("Test Name2", 2.2,2.2, "Test Address2", List.of(2L,7L));
  assertNotNull(locationController.saveLocations(testlocationTagDTO).getBody(), "When saving the object, it needs to be returned");

 }

 @Test 
 @Order(2)
 void allLocationsReturnedWithoutTagIds(){
  long allRepositoryLocationsCount = locationRepository.count();
  assertTrue(allRepositoryLocationsCount>0, "Repository should have data!");

  List<Location> allControllerLocations = (List<Location>) locationController.getLocations(null).getBody();
  assertNotNull(allControllerLocations, "Controller should return a list");
  assertEquals(allRepositoryLocationsCount, allControllerLocations.size(), "Controller should return all locations");
 }

 @Test 
 @Order(3)
 void allLocationsHaveRequestedTags(){
  List <Long> requestedTagIds = List.of(2L, 5L);
  List<Location> allControllerLocations = (List<Location>) locationController.getLocations(requestedTagIds).getBody();
  assertNotNull(allControllerLocations, "Controller should return a list");

  allControllerLocations.forEach(location->{
   List<Tag> tags = location.getTags();
   List<Long> locationTagIds = tags.stream().map(Tag::getId).collect(Collectors.toList());
   assertTrue(locationTagIds.containsAll(requestedTagIds), "Location tags should include all requested tags");    
  });  
 }
}