Skip to content
Snippets Groups Projects
Commit 9e68076f authored by deksor's avatar deksor
Browse files

Tuto terminé et Pizza en cours d'ajout

parent b3f5ebe9
No related branches found
No related tags found
No related merge requests found
package fr.ulille.iut.pizzaland; package fr.ulille.iut.pizzaland;
import fr.ulille.iut.pizzaland.ApiV1; import fr.ulille.iut.pizzaland.ApiV1;
import fr.ulille.iut.pizzaland.beans.Ingredient;
import fr.ulille.iut.pizzaland.dao.IngredientDao;
import fr.ulille.iut.pizzaland.dto.IngredientDto; import fr.ulille.iut.pizzaland.dto.IngredientDto;
import fr.ulille.iut.pizzaland.dto.IngredientCreateDto;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.test.JerseyTest; import org.glassfish.jersey.test.JerseyTest;
import org.glassfish.jersey.test.TestProperties;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import javax.ws.rs.client.Entity; import javax.ws.rs.client.Entity;
import javax.ws.rs.core.GenericType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Application; import javax.ws.rs.core.Form;
import javax.ws.rs.core.Response;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import java.util.List;
import java.util.logging.Logger;
/* /*
* JerseyTest facilite l'écriture des tests en donnant accès aux * JerseyTest facilite l'écriture des tests en donnant accès aux
* méthodes de l'interface javax.ws.rs.client.Client. * méthodes de l'interface javax.ws.rs.client.Client.
* la méthode configure() permet de démarrer la ressource à tester * la méthode configure() permet de démarrer la ressource à tester
*/ */
public class IngredientResourceTest extends JerseyTest { public class IngredientResourceTest extends JerseyTest {
private static final Logger LOGGER = Logger.getLogger(IngredientResourceTest.class.getName()); private IngredientDao dao;
@Override @Override
protected Application configure() { protected Application configure() {
return new ApiV1(); BDDFactory.setJdbiForTests();
return new ApiV1();
} }
// Les méthodes setEnvUp() et tearEnvDown() serviront à terme à initialiser la base de données
// et les DAO
// https://stackoverflow.com/questions/25906976/jerseytest-and-junit-throws-nullpointerexception
@Before @Before
public void setEnvUp() { public void setEnvUp() {
dao = BDDFactory.buildDao(IngredientDao.class);
dao.createTable();
} }
@After @After
public void tearEnvDown() throws Exception { public void tearEnvDown() throws Exception {
dao.dropTable();
}
@Test
public void testGetExistingIngredient() {
Ingredient ingredient = new Ingredient();
ingredient.setName("ehfehehehehfheehehfheh");
long id = dao.insert(ingredient.getName());
ingredient.setId(id);
Response response = target("/ingredients/" + id).request().get();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
Ingredient result = Ingredient.fromDto(response.readEntity(IngredientDto.class));
assertEquals(ingredient, result);
} }
@Test @Test
public void testGetEmptyList() { public void testGetNotExistingIngredient() {
// La méthode target() permet de préparer une requête sur une URI. Response response = target("/ingredients/125").request().get();
// La classe Response permet de traiter la réponse HTTP reçue. assertEquals(Response.Status.NOT_FOUND.getStatusCode(),response.getStatus());
Response response = target("/ingredients").request().get(); }
// On vérifie le code de la réponse (200 = OK) @Test
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus()); public void testCreateIngredient() {
IngredientCreateDto ingredientCreateDto = new IngredientCreateDto();
ingredientCreateDto.setName("ehfehehehehfheehehfheh");
Response response = target("/ingredients")
// On vérifie la valeur retournée (liste vide) .request()
// L'entité (readEntity() correspond au corps de la réponse HTTP. .post(Entity.json(ingredientCreateDto));
// La classe javax.ws.rs.core.GenericType<T> permet de définir le type
// de la réponse lue quand on a un type complexe (typiquement une liste). // On vérifie le code de status à 201
List<IngredientDto> ingredients; assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
ingredients = response.readEntity(new GenericType<List<IngredientDto>>(){});
IngredientDto returnedEntity = response.readEntity(IngredientDto.class);
// On vérifie que le champ d'entête Location correspond à
// l'URI de la nouvelle entité
assertEquals(target("/ingredients/" +
returnedEntity.getId()).getUri(), response.getLocation());
// On vérifie que le nom correspond
assertEquals(returnedEntity.getName(), ingredientCreateDto.getName());
}
@Test
public void testCreateSameIngredient() {
IngredientCreateDto ingredientCreateDto = new IngredientCreateDto();
ingredientCreateDto.setName("ehfehehehehfheehehfheh");
dao.insert(ingredientCreateDto.getName());
Response response = target("/ingredients")
.request()
.post(Entity.json(ingredientCreateDto));
assertEquals(Response.Status.CONFLICT.getStatusCode(), response.getStatus());
}
@Test
public void testCreateIngredientWithoutName() {
IngredientCreateDto ingredientCreateDto = new IngredientCreateDto();
Response response = target("/ingredients")
.request()
.post(Entity.json(ingredientCreateDto));
assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatus());
}
@Test
public void testDeleteExistingIngredient() {
Ingredient ingredient = new Ingredient();
ingredient.setName("ehfehehehehfheehehfheh");
long id = dao.insert(ingredient.getName());
ingredient.setId(id);
Response response = target("/ingredients/" + id).request().delete();
assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatus());
Ingredient result = dao.findById(id);
assertEquals(result, null);
}
@Test
public void testDeleteNotExistingIngredient() {
Response response = target("/ingredients/125").request().delete();
assertEquals(Response.Status.NOT_FOUND.getStatusCode(),
response.getStatus());
}
@Test
public void testGetIngredientName() {
Ingredient ingredient = new Ingredient();
ingredient.setName("ehfehehehehfheehehfheh");
long id = dao.insert(ingredient.getName());
Response response = target("ingredients/" + id + "/name").request().get();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
assertEquals("ehfehehehehfheehehfheh", response.readEntity(String.class));
}
@Test
public void testGetNotExistingIngredientName() {
Response response = target("ingredients/125/name").request().get();
assertEquals(Response.Status.NOT_FOUND.getStatusCode(), response.getStatus());
}
@Test
public void testCreateWithForm() {
Form form = new Form();
form.param("name", "chorizo");
Entity<Form> formEntity = Entity.entity(form, MediaType.APPLICATION_FORM_URLENCODED_TYPE);
Response response = target("ingredients").request().post(formEntity);
assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
String location = response.getHeaderString("Location");
long id = Integer.parseInt(location.substring(location.lastIndexOf('/') + 1));
Ingredient result = dao.findById(id);
assertNotNull(result);
}
assertEquals(0, ingredients.size());
}
} }
package fr.ulille.iut.pizzaland;
import fr.ulille.iut.pizzaland.ApiV1;
import fr.ulille.iut.pizzaland.beans.Ingredient;
import fr.ulille.iut.pizzaland.beans.Pizza;
import fr.ulille.iut.pizzaland.dao.PizzaDao;
import fr.ulille.iut.pizzaland.dao.IngredientDao;
import fr.ulille.iut.pizzaland.dto.PizzaDto;
import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Form;
import static org.junit.Assert.assertNotNull;
import java.util.ArrayList;
import java.util.List;
import static org.junit.Assert.assertEquals;
/*
* JerseyTest facilite l'écriture des tests en donnant accès aux
* méthodes de l'interface javax.ws.rs.client.Client.
* la méthode configure() permet de démarrer la ressource à tester
*/
public class PizzaResourceTest extends JerseyTest {
private PizzaDao dao;
private IngredientDao daoIngredient;
@Override
protected Application configure() {
BDDFactory.setJdbiForTests();
return new ApiV1();
}
@Before
public void setEnvUp() {
daoIngredient = BDDFactory.buildDao(IngredientDao.class);
daoIngredient.createTable();
dao = BDDFactory.buildDao(PizzaDao.class);
dao.createTableAndIngredientAssociation();
}
@After
public void tearEnvDown() throws Exception {
dao.dropTableAndIngredientAssociation();
daoIngredient.dropTable();
}
@Test
public void testGetExistingPizza() {
Pizza pizza = new Pizza();
pizza.setName("Pizza ehfehhehfheehehfheh");
long id = dao.insert(pizza.getName());
pizza.setId(id);
Response response = target("/pizzas/" + id).request().get();
assertEquals(Response.Status.OK.getStatusCode(), response.getStatus());
Pizza result = Pizza.fromDto(response.readEntity(PizzaDto.class));
System.out.println(result.getName());
assertEquals(pizza, result);
}
@Test
public void testGetNotExistingPizza() {
Response response = target("/pizzas/125").request().get();
assertEquals(Response.Status.NOT_FOUND.getStatusCode(),response.getStatus());
}
public void testCreatePizza() {
PizzaCreateDto pizzaCreateDto = new PizzaCreateDto();
pizzaCreateDto.setName("ehfehehehehfheehehfheh");
Response response = target("/pizzas")
.request()
.post(Entity.json(pizzaCreateDto));
// On vérifie le code de status à 201
assertEquals(Response.Status.CREATED.getStatusCode(), response.getStatus());
PizzaDto returnedEntity = response.readEntity(PizzaDto.class);
// On vérifie que le champ d'entête Location correspond à
// l'URI de la nouvelle entité
assertEquals(target("/pizzas/" +
returnedEntity.getId()).getUri(), response.getLocation());
// On vérifie que le nom correspond
assertEquals(returnedEntity.getName(), pizzaCreateDto.getName());
}
@Test
public void testCreateSamePizza() {
PizzaCreateDto pizzaCreateDto = new PizzaCreateDto();
pizzaCreateDto.setName("ehfehehehehfheehehfheh");
dao.insert(pizzaCreateDto.getName());
Response response = target("/pizzas")
.request()
.post(Entity.json(pizzaCreateDto));
assertEquals(Response.Status.CONFLICT.getStatusCode(), response.getStatus());
}
@Test
public void testCreatePizzaWithoutName() {
PizzaCreateDto pizzaCreateDto = new PizzaCreateDto();
Response response = target("/pizzas")
.request()
.post(Entity.json(pizzaCreateDto));
assertEquals(Response.Status.NOT_ACCEPTABLE.getStatusCode(), response.getStatus());
}
}
\ No newline at end of file
File mode changed from 100644 to 100755
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment