diff --git a/README.md b/README.md index 0bc6e1d1bc7c32ee5e9e4bf2899e22d51e571cc7..4f546ba5b81cfdee21e95c91c7682aa89242e34e 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 0000000000000000000000000000000000000000..1a9360bf01fa2544b241a017cfa0c056dada02e2 --- /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 0000000000000000000000000000000000000000..bc19082daf4dd4cd778b956d9607e2f259a94cd1 --- /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 0f9c55c10ebe77c496f1a8e3a064343aced056a8..87ca6e4cca1b16f0dc3ee1b07a8e54c74d99a977 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(); }