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