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

Ajout API + tests

parent 2b99bea1
No related branches found
No related tags found
No related merge requests found
...@@ -108,4 +108,52 @@ public interface TacheDAO { ...@@ -108,4 +108,52 @@ public interface TacheDAO {
Ce DAO est utilisé dans la classe `Tache` qui représente une tâche particulière. Les tâches sont manipulées via la classe `TodoService`. Ce DAO est utilisé dans la classe `Tache` qui représente une tâche particulière. Les tâches sont manipulées via la classe `TodoService`.
Si vous regardez le code de la classe `Tache`, vous constaterez que nous avons choisi d'identifier les tâches au moyen un identifiant unique ([UUID](https://fr.wikipedia.org/wiki/Universally_unique_identifier)). Comme ce type n'est pas géré nativement par JDBI, nous avons dû utiliser un [mécanisme d'extension](https://jdbi.org/#_custom_arguments) permettant la conversion entre le type `java.util.UUID` et `String` (classes `UUIDArgument` et `UUIDArgumentFactory`). Si vous regardez le code de la classe `Tache`, vous constaterez que nous avons choisi d'identifier les tâches au moyen d'un identifiant unique ([UUID](https://fr.wikipedia.org/wiki/Universally_unique_identifier)). Comme ce type n'est pas géré nativement par JDBI, nous avons dû utiliser un [mécanisme d'extension](https://jdbi.org/#_custom_arguments) permettant la conversion entre le type `java.util.UUID` et `String` (classes `UUIDArgument` et `UUIDArgumentFactory`).
# Développement de la ressource
Dans la mesure où nous allons maintenant avoir des tests, ce développement se fera en TDD.
## Définition de l'API pour notre gestion des tâches
| URI | Méthode | MIME | Réponse |
---
| /taches | GET | application/json | liste des tâches |
| | | application/xml | |
---
| /taches | POST | application/json | |
| | | application/x-www-form-urlencoded | la tâche crée |
---
| /taches/{id} | GET | application/json | la tâche |
| /taches/{id} | PUT | application/json | la nouvelle tâche |
| | | | |
## Récupérer une tâche
Nous pouvons déjà lancer les tests pour voir ce qu'il se passe : `mvn test`.
~~~
Results :
Tests in error:
get_with_id_should_return_task(fr.ulille.iut.todo.ressource.TodoRessourceTest): HTTP 404 Not Found
Tests run: 9, Failures: 0, Errors: 1, Skipped: 0
~~~
Le test en erreur correspond à la fonctionnalité à développer :
~~~java
@Test
public void get_with_id_should_return_task() {
Tache tache = new Tache();
tache.setNom("test");
tache.setDescription("description");
dao.insert(tache);
Tache returned = target("taches").path(tache.getId().toString()).request().get(Tache.class);
assertEquals(tache, returned);
}
~~~
Pour ce test, nous créons un objet `Tache` qui est ensuite directement inséré dans la base grâce au DAO. Nous utilisons ensuite l'API [Client](https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest3x/client.html) pour faire notre requête `GET`. Pour simplifier le développement des tests, nous utilisons les [classes de test de Jersey](https://eclipse-ee4j.github.io/jersey.github.io/documentation/latest3x/test-framework.html).
Vous pouvez maintenant développer la méthode correspondante dans la classe `TodoRessource`.
...@@ -94,6 +94,10 @@ public class TodoRessourceTest extends JerseyTest { ...@@ -94,6 +94,10 @@ public class TodoRessourceTest extends JerseyTest {
assertEquals(tache, returned); assertEquals(tache, returned);
} }
@Test
public void get_with_wrong_id_should_return_404() {
}
@Test @Test
public void get_for_description_should_work() { public void get_for_description_should_work() {
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment