Giter Site home page Giter Site logo

eg-politics-springboot's Introduction

Ejemplo Politics

Build Status

Material relacionado

  • En el branch master está la versión que recomendamos usar para resolver el TP, en el branch entity-manager está la versión menos declarativa que usa el Entity Manager como representación de los queries a la base
  • Apunte con la explicación completa

Swagger - Open API

Un chiche interesante es que pueden explorar y testear con Swagger el presente ejemplo, levantando la aplicación y navegando en la siguiente URL:

http://localhost:8080/swagger-ui/index.html#/

Swagger busca los controllers y arma un entorno web para probar los endpoints (puede resultar más cómodo que POSTMAN sobre todo para métodos POST o PUT).

Para conseguir el mismo efecto en tu proyecto solo tenés que agregar dos dependencias:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-boot-starter</artifactId>
  <version>3.0.0</version>
</dependency>
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>3.0.0</version>
</dependency>

Luego en los controllers la annotation @ApiOperation es la que permite agregar una descripción al endpoint

@GetMapping(value="/zonas/{id}")
@ApiOperation("Permite traer la información de una zona, con las personas candidatas y las intenciones de voto incluidas.")
def getZona(@PathVariable Long id) {

que luego tomará Swagger para publicar en la página.

swagger

Testeo de integración

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.

eg-politics-springboot's People

Contributors

fdodino avatar juancete avatar

Watchers

Pablo Tesone avatar Gaston Prieto avatar James Cloos avatar Federico Scarpa avatar Ernesto Bossi avatar  avatar Martín Dias avatar  avatar Leo Gassman avatar Nahuel Palumbo avatar Nico Passerini avatar  avatar Marina avatar Federico Cano avatar Lucas Spigariol avatar  avatar

Forkers

andylarquy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.