--- /dev/null
+/*
+ * Copyright © FYLAB and the Conseil Régional d'Île-de-France, 2009
+ * This file is part of L'Interface Libre et Interactive de l'Enseignement (Lilie).
+ *
+ * Lilie is free software. You can redistribute it and/or modify since
+ * you respect the terms of either (at least one of the both license) :
+ * - under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ * - the CeCILL-C as published by CeCILL-C; either version 1 of the
+ * License, or any later version
+ *
+ * There are special exceptions to the terms and conditions of the
+ * licenses as they are applied to this software. View the full text of
+ * the exception in file LICENSE.txt in the directory of this software
+ * distribution.
+ *
+ * Lilie is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * Licenses for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * and the CeCILL-C along with Lilie. If not, see :
+ * <http://www.gnu.org/licenses/> and
+ * <http://www.cecill.info/licences.fr.html>.
+ */
+
+package org.lilie.services.eliot.scolarite
+
+import org.lilie.services.eliot.scolarite.basculeannee.rapports.ScolariteBasculeAnneeRapportHtmlBuilder
+import org.lilie.services.eliot.scolarite.basculeannee.rapports.ScolariteBasculeAnneeRapport
+import org.lilie.services.eliot.basculeannee.BasculeAnneeInfo
+import org.lilie.services.eliot.temps.DateUtil
+import org.lilie.services.eliot.scolarite.suppressionutilisateurs.SuppressionUtilisateursRapportHtmlBuilder
+import org.lilie.services.eliot.scolarite.suppressionutilisateurs.SuppressionPhysiqueRapport
+
+/**
+ * @author othe
+ */
+class ScolariteRapportHtmlBuilderTests extends GroovyTestCase {
+
+ private static final RESULTATRAPPORTSUPPRESSION="""<html>
+ <head>
+ <link href='URL_CSS' rel='stylesheet' type='text/css' media='screen' />
+ <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
+ </head>
+ <body>
+ <center>
+ <h1>Rapport de la suppression physique des utilisateurs</h1>
+ <p>(suppression du Wed Dec 24 00:00:00 CET 2014 )</p>
+ </center>
+ <br />
+ <div id='Statistiques' class='portal-menu-separator'>
+ <h4>
+ <li>Nombre de personnes supprimées : 3</li>
+ <li>Nombre d'agendas supprimés : 1</li>
+ <li>Nombre d'événements supprimés : 6</li>
+ <li>Nombre de cahiers de textes supprimés : 2</li>
+ <li>Nombre de chapitres supprimés : 8</li>
+ <li>Nombre d'activités supprimées : 1</li>
+ <li>Nombre de dates d'activité supprimées : 0</li>
+ <li>Nombre de ressources supprimées : 9</li>
+ <li>Nombre de dossiers supprimés : 7</li>
+ <li>Nombre de discussions supprimées : 9</li>
+ <li>Nombre de commentaires supprimés : 8</li>
+ <li>Nombre de préférences utilisateurs pour notes supprimées : 2</li>
+ <li>Nombre de préférences utilisateurs pour textes supprimées : 0</li>
+ <li>Nombre de préférences utilisateurs pour les notifications supprimées : 3</li>
+ <li>Nombre de préférences utilisateurs pour agenda supprimées : 4</li>
+ <li>Nombre de relations entre cahier et personnes supprimées : 2</li>
+ <li>Nombre de relations entre activité et personne supprimées : 3</li>
+ <li>Nombre de signatures supprimées : 1</li>
+ <li>Nombre de modèles d'appréciations supprimés : 5</li>
+ <li>Nombre d'autorisations supprimées : 0</li>
+ <li>Nombre de commentaires des fiches élèves supprimées : 4</li>
+ <li>Nombre de droits d'accès aux fonctionnalités des personnes supprimés : 1</li>
+ <li>Nombre de comptes utilisateurs TdBase supprimés : 5</li>
+ <li>Nombre de sujet de TdBase supprimés : 7</li>
+ <li>Nombre de questions de TdBase supprimées : 6</li>
+ </h4>
+ </div>
+ <br />
+ <br />
+ <p>Il reste 5 personnes, dont la désactivation a été faite avant le 31/12/2014 00:00, à supprimer.</p>
+ <br />
+ <br />
+ <p>Fin de la suppression, durée totale : 12.345 sec.</p>
+ </body>
+</html>"""
+
+
+ private static final RESULTATATTENDU = """<html>
+ <head>
+ <link href='http://localhost/css/main.css' rel='stylesheet' type='text/css' media='screen' />
+ <link href='http://localhost/css/rapports.css' rel='stylesheet' type='text/css' media='screen' />
+ <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
+ </head>
+ <body>
+ <center>
+ <h1>Rapport de la bascule d'année de l'application MODULETEST de 2013-2014 vers 2014-2015</h1>
+ <h2>Lancé par AUTORITE le 15/08/2011 à 00:00:00</h2>
+ </center>
+ <br />
+ <br />
+ <br />
+ <table>
+ <caption>Statistiques du traitement effectué</caption>
+ <th>Eléments traités</th>
+ <th>Nombre de traitements</th>
+ <tr>
+ <td>Structures d'enseignement supprimées</td>
+ <td>10</td>
+ </tr>
+ <tr class='warning'>
+ <td>Structures d'enseignement dont la suppression a échoué</td>
+ <td>10</td>
+ </tr>
+ <tr>
+ <td>Fichiers et rapports sts supprimés</td>
+ <td>80</td>
+ </tr>
+ <tr class='warning'>
+ <td>Fichiers et rapports sts dont la suppression a échoué</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>Fichiers des anciennes bascules supprimés</td>
+ <td>3</td>
+ </tr>
+ <tr class='warning'>
+ <td>Fichiers des anciennes bascules dont la suppression a échoué</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>Dossier d'impression de cahier de textes supprimés</td>
+ <td>0</td>
+ </tr>
+ <tr class='warning'>
+ <td>Dossier d'impression de cahier de textes dont la suppression a échoué</td>
+ <td>5</td>
+ </tr>
+ <tr>
+ <td>Fichiers de notanet supprimés</td>
+ <td>9</td>
+ </tr>
+ <tr class='warning'>
+ <td>Fichiers de notanet dont la suppression a échoué</td>
+ <td>10</td>
+ </tr>
+ <tr>
+ <td>Fichiers de postbac supprimés</td>
+ <td>11</td>
+ </tr>
+ <tr class='warning'>
+ <td>Fichiers de postbac dont la suppression a échoué</td>
+ <td>12</td>
+ </tr>
+ </table>
+ <br />
+ <br />
+ <div id='Logs' class='portal-menu-separator' />
+ <br />
+ <p>Fin de bascule d'année, durée totale : 0.015 sec.</p>
+ </body>
+</html>"""
+
+
+ void testRapportBasculeAnnee() {
+
+ ScolariteBasculeAnneeRapport rapport = new ScolariteBasculeAnneeRapport(
+ loginAutorite: 'AUTORITE',
+ operateurIdExterne: '007',
+ anneeBascule: '2000',
+ dateDebut: DateUtil.parse('2011-08-15'),
+ nbStructureSupprimees: 10,
+ nbStructureEchouees: 10,
+ stsNbFichierSupprimes: 80,
+ stsNbFichierEchoues: 2,
+ basculeNbFichierSupprimes: 3,
+ basculeNbFichierEchoues: 9,
+ impressionNbDossierSupprimes: 0,
+ impressionNbDossierEchoues: 5,
+ notanetNbFichierSupprimes: 9,
+ notanetNbFichierEchoues: 10,
+ postbacNbFichierSupprimes: 11,
+ postbacNbFichierEchoues: 12,
+ tempsExecution: 15,
+ basculeAnneeInfo: new BasculeAnneeInfo(
+ '/', 'MODULETEST'
+ )
+ )
+
+ ScolariteBasculeAnneeRapportHtmlBuilder anneeRapportHtmlBuilder = new ScolariteBasculeAnneeRapportHtmlBuilder(
+ rapport: rapport,
+ controlleur: new DummyController()
+ )
+
+ Writer writer = new StringWriter()
+ anneeRapportHtmlBuilder.writeHtml(writer)
+ println writer.toString()
+
+ assertEquals("Le fichier HTML attendu est non conforme", writer.toString(), RESULTATATTENDU)
+
+ }
+
+
+ void testRapportSuppressionUtilisateur() {
+
+ SuppressionPhysiqueRapport rapport = new SuppressionPhysiqueRapport(
+ dateMaximaleDesactivation: DateUtil.parse("2014-12-31"),
+ nb_deleted_acces_fonctionnalite_personne: 1,
+ dateSuppression: DateUtil.parse("2014-12-24"),
+ tempsExecution: 12345,
+ nb_deleted_textes_preferences_ut: 0,
+ nb_deleted_signature: 1,
+ nb_deleted_rel_cahier_acteur: 2,
+ nb_deleted_rel_activite_acteur: 3,
+ nb_deleted_pref_agenda: 4,
+ nb_deleted_modele_appreciation: 5,
+ nb_deleted_evment: 6,
+ nb_deleted_dossier: 7,
+ nb_deleted_commentaire: 8,
+ nb_deleted_discussion: 9,
+ nb_deleted_autorisation: 0,
+ nb_deleted_agenda: 1,
+ nb_deleted_pref_notes: 2,
+ nb_deleted_notif_pref: 3,
+ nb_deleted_fiche_eleve_commentaire: 4,
+ nb_deleted_compte_utilisateur: 5,
+ nb_deleted_question_tdbase: 6,
+ nb_deleted_sujet_tdbase: 7,
+ nb_deleted_chapitre: 8,
+ nb_deleted_ressource: 9,
+ nb_deleted_date_activite: 0,
+ nb_deleted_activite: 1,
+ nb_deleted_cahier_de_textes: 2,
+ nb_deleted_personne: 3,
+ nb_deleted_autorite: 4,
+ nb_personne_to_delete :5
+ )
+
+ SuppressionUtilisateursRapportHtmlBuilder builder = new SuppressionUtilisateursRapportHtmlBuilder(
+ rapport: rapport,
+ urlCss: "URL_CSS" ,
+ dateMaximaleDesactivation: DateUtil.parse("2014-12-31")
+ )
+
+ Writer writer = new StringWriter()
+ builder.writeHtml(writer)
+ println writer.toString()
+
+ assertEquals("Le fichier HTML attendu est non conforme", writer.toString(), RESULTATRAPPORTSUPPRESSION)
+
+ }
+
+}