Solo hace falta tener instalado Docker Desktop (el pack docker engine y docker compose), seguí las instrucciones de esta página en el párrafo Docker
.
docker compose up
Eso levanta tanto PostgreSQL como el cliente pgAdmin, como está explicado en este ejemplo.
La conexión a la base se configura en el archivo application.yml
:
datasource:
url: jdbc:postgresql://0.0.0.0:5432/politics
username: postgres
password: postgres
driver-class-name: org.postgresql.Driver
0.0.0.0
apunta a nuestro contenedor de Docker- el usuario y contraseña está definido en el archivo
docker-compose.yml
Podés ver la implementación de varios casos de prueba:
- para el controller de zonas
- al traer todas las zonas no trae las personas candidatas
- al traer una zona trae todas las personas candidatas (para este caso de prueba necesitamos convertir el JSON a una clase DTO especial para el test, ya que la serialización se hace con una clase ZonaParaGrillaSerializer en lugar de manejar el mapeo con anotaciones de Jackson o un DTO, quizás una razón más para utilizar como técnica el DTO)
- si buscamos una zona inexistente debe devolver código de http 404
- para el controller de candidates
- si actualizamos un candidate mediante un PUT eso se refleja en la base de datos. Dado que tiene efecto colateral debemos utilizar la anotación @Transactional para este test. Si bien utilizamos una base de datos in-memory y podríamos pensar "los cambios realmente no persisten", sí lo hacen en el contexto de los tests. Es decir, si repetimos el mismo test sin revertir el cambio, el primer test pasará correctamente y el segundo fallará cuando espere que nuestro candidate tenga 0 votos.
Podés descargarte la colección de endpoints en formato json para luego importarlo en alguno de estos clientes