From 2aa1558a805494a50c8388d8fb3030a6b9ac408f Mon Sep 17 00:00:00 2001 From: Yvan Peter <yvan.peter@univ-lille.fr> Date: Thu, 6 Feb 2020 17:26:46 +0100 Subject: [PATCH] ajout de la ressource et du DTO --- README.md | 58 +++++++++++++++++++ .../iut/pizzaland/dto/IngredientDto.java | 8 +++ .../resources/IngredientResource.java | 32 ++++++++++ .../iut/pizzaland/IngredientResourceTest.java | 5 -- 4 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java create mode 100644 src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java diff --git a/README.md b/README.md index 0bc6e1d..4f546ba 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,19 @@ Nous pouvons tout d'abord réfléchir à l'API REST que nous allons offrir pour | | | | 404 si id est inconnu | |-----------|-------------|-----------------------------------------------|-----------------------------------------------| +Un ingrédient comporte uniquement un identifiant et un nom. Ça +représentation JSON prendra donc la forme suivante : + + { + "id": 1, + "name": "mozzarella" + } + +Lors de la création, l'identifiant n'est pas connu. Aussi on aura une +représentation JSON qui comporte uniquement le nom : + + { "name": "mozzarella" } + ## Mise en œuvre ### Une première implémentation : récupérer les ingrédients existants @@ -102,5 +115,50 @@ d'un premier test. public void testGetEmptyList() { Response response = target("/ingredients").request().get(); + // Vérification de la valeur de retour (200) assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); + + // Vérification de la valeur retournée (liste vide) + List<IngredientDto> ingredients; + ingredients = response.readEntity(new GenericType<List<IngredientDto>>(){}); + + assertEquals(0, ingredients.size()); + } + +A ce stade, vous pouvez lancer un premier test au moyen de la commande +`mvn test`. Évidemment, ce test va échouer. + + $ mvn test + Results : + + Failed tests: testGetEmptyList(fr.ulille.iut.pizzaland.IngredientResourceTest): expected:<200> but was:<404> + + Tests run: 1, Failures: 1, Errors: 0, Skipped: 0 + +Vous pouvez compiler votre code et les tests sans les lancer au moyen +des commandes `mvn compile` et `test-compile`. + +Pour réussir, ce premier test, nous allons mettre en place la +ressource `Ingrédient` dans la classe `IngredientResource` ainsi que +le DTO (Data Transfer Object) qui représentera les données +transportées dans les requêtes et réponses HTTP. + +Une première implémentation de la ressource pourra avoir la forme +suivante : + + @Path("/ingredients") + public class IngredientResource { + + @Context + public UriInfo uriInfo; + + public IngredientResource() { + } + + @GET + public List<IngredientDto> getAll() { + + return new ArrayList<IngredientDto>(); + } +} diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java new file mode 100644 index 0000000..1a9360b --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java @@ -0,0 +1,8 @@ +package fr.ulille.iut.pizzaland.dto; + +public class IngredientDto { + + public IngredientDto() { + + } +} diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java new file mode 100644 index 0000000..bc19082 --- /dev/null +++ b/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java @@ -0,0 +1,32 @@ +package fr.ulille.iut.pizzaland.resources; + +import java.net.URI; +import java.util.List; +import java.util.ArrayList; +import java.util.logging.Logger; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.UriInfo; + +import fr.ulille.iut.pizzaland.dto.IngredientDto; + +@Path("/ingredients") +public class IngredientResource { + private static final Logger LOGGER = Logger.getLogger(IngredientResource.class.getName()); + + @Context + public UriInfo uriInfo; + + public IngredientResource() { + } + + @GET + public List<IngredientDto> getAll() { + LOGGER.info("IngredientResource:getAll"); + + return null; + } +} diff --git a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java index 0f9c55c..87ca6e4 100644 --- a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java +++ b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java @@ -23,11 +23,6 @@ public class IngredientResourceTest extends JerseyTest { @Override protected Application configure() { - enable(TestProperties.LOG_TRAFFIC); - enable(TestProperties.DUMP_ENTITY); - - BDDFactory.setJdbiForTests(); - return new ApiV1(); } -- GitLab