Skip to content
Snippets Groups Projects
Commit 2aa1558a authored by Yvan Peter's avatar Yvan Peter
Browse files

ajout de la ressource et du DTO

parent be8fb1da
No related branches found
No related tags found
No related merge requests found
......@@ -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>();
}
}
package fr.ulille.iut.pizzaland.dto;
public class IngredientDto {
public IngredientDto() {
}
}
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;
}
}
......@@ -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();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment