Create QUnitSinon authored by Ioan-Marius Bilasco's avatar Ioan-Marius Bilasco
## Préambule
- Documentation disponible [qunit](http://qunitjs.com/), [sinonjs](http://sinonjs.org) et [sinonjs+qunit](http://sinonjs.org/qunit).
- Lancez tous vos tests en chargeant les pages tests individuelles ou les pages tests suites.
- En QUnit on retrouvera des tests cases sous la forme de prototypes '''test'''
- les tests se construisent autour des assertions de type (ok, equal, notEqual...)
- les tests suite sont rendus possibles par qunit-composite.js :
- QUnit.testSuites(["./money_testA.html","./money_testB.html"]);
## Travail à effectuer (1ère séance)
- Les codes relatives à Money src et test_sinon en JS
- [money_js_sinon.zip (src et test_sinon)](http://www.fil.univ-lille1.fr/~bilasco/OTI/money_js_sinon.zip)
- Corrigez les money.js et money_ops.js de telle sorte à ce que tous les tests écrits soit valides
- les tests se trouvent écrits en test_sinon/money_*.js
- l'exécution des tests se réalisent en chargeant les pages test_sinon/money_*.html
- Vous travaillerez sur les fichiers src/index.html, src/calc.js plus tard ...
### Créer des nouveaux méthodes de test
- Etendre le testcase money_test pour couvrir le plus possible les cas de figures possibles (par exemple création de money < 0, currency > 3 caractères, etc..)
- Créer des nouvelles opérations et les testcases correspondants
- par exemple : soustraction (v1 - v2 avec une exception si v1 < v2 ou si pas la même unité monétaire)
- pour créer vos propres exceptions
```
function MonPropreEx(...) {}
function xxx () {
...
throw new MonPropreExc(...);
}
```
- pour indiquer qu'un test doit lever une exception, placer ce code dans la fonction de test
```
assert.throws(function() {var m3=MoneyOps.add(m1,m2)}, DevisesIncompatibleExc, "Devises Incompatibles");
```
### Fabrique
- Créer une Fabrique des Money qui permet de créer un ensemble prédéfini des devises
- Prévoir des exceptions et écrivez des tests pour garantir le bon fonctionnement de la fabrique
## 2eme séance ##
### Tests avec fixtures
- Etudiez le src/index.html et src/calc.js
- En test/calc_test.js vous trouvez des tests qui simulent le remplissage du formulaire permettant de réaliser les calculs
- On y trouve des tests pour vérifier que les calculs se font bien (calc.computeResult)
- On y trouve des tests pour vérifier que le rendu se fait bien (calc.displayResult)
- Exemple de __fixture__
```
var fixture="";
fixture+=("<div id='res'></div>");
fixture+=("<form id='form0'>");
fixture+=("<input type='text' id='v1' name='v1' value='2'/>");
fixture+=("<input type='text' id='c1' name='c1' value='EU'/>");
fixture+=("<input type='text' id='v2' name='v2' value='2'/>");
fixture+=("<input type='text' id='c2' name='c2' value='EU'/>");
fixture+=("<input type='text' id='ops' name='ops' value='ADD'/>");
fixture+=("</form>");
var fixtureNode=document.getElementById("qunit-fixture");
fixtureNode.innerHTML=fixture;
```
- Construisez un test qui vérifie que le message "Devises incompatibles ... " s'affiche, lorsque les devises ne sont pas compatibles.
- Modifiez les fichiers (index.html, calc.js) pour supporter également l'opération de soustraction implémentée précédemment
- Créez également des nouveaux tests (selon le modèle calc_test.js) pour couvrir cette nouvelle opération
- Modifiez le code de la fonction displayResult de telle sorte à ce que le texte soit affiché en rouge si une erreur est apparue dans le processus (devises incompatibles, soustraction impossible, etc.).
- Créez également des nouveaux tests (selon le modèle calc_test.js) pour couvrir cette nouvelle opération
### Assertion des alertes
- Modifiez le code javascript fourni de telle sorte à ce que cela généré une alerte (window.alert) lorsque l'opération n'est pas réalisable
- Ecrivez des tests pour valider que les alertes sont bien déclenchées.
### Renforcer les tests
- Que se passe-t-il lorsque vous demandez d'ajouter des moneys dont soit la valeur, soit la currency ne respectent pas les contraintes imposées ?
- Modifiez le code calc.js pour prendre en compte les éventuelles modifications.
- Ecrivez des tests pour couvrir les nouveaux cas de figure identifiés.
### Tests "croisés" (optionnel)
- Une fois que vous estimez avoir corrigé le code envoyez-le à la personne à votre gauche, en mettant en place un svn/hg/git de commun accord.
- Demandez-lui de tester votre code.
### Rendu
- Déposer sur PROF une archive du travail effectué en fin de journée (fermeture après la séance TPA)
- Un deuxième dépôt sera ouvert jusqu'à la fin des cours
\ No newline at end of file