"suivi", "mdp" => "suivi" ), array( "login" => "adminfonct", "mdp" => "adminfonct" ), ); /** * Fonction lancée en debut de chaque test */ public function setUp() { parent::setUp(); echo ' = '.get_class().'.'.str_replace('test_', '', $this->getName())."\r\n"; } public function onNotSuccessfulTest(Exception $e){ echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n"; parent::onNotSuccessfulTest($e); } // Fonction public public function test_01_ouverture_menu() { // Récupération des utilisateurs $utilisateurs = $this->listUtlisateurs; // Pour chaque utilisateur on lance le test foreach ($utilisateurs as $utilisateur) { // $this->ouvertureMenu($utilisateur); } // On vérifie la déconnexion $this->verifyDeconnect(); } public function test_02_mise_a_jour_des_dates_simple_par_la_cellule_suivi() { // On se connecte en tant que "admin" $this->login("admin", "admin"); // On clique sur le menu Instruction $this->byLinkText("Instruction")->click(); // On clique sur le menu Recherche $this->byLinkText("Recherche")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le dossier PC 013055 12 00002P $this->byLinkText("PC 013055 12 00002P0")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // liste des instructions $this->byId("instruction")->click(); // On clique sur le + pour ajouter une instruction $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click(); // On choisit un signataire Albert Dupont $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1"); // On choisi l'événement "adjoint [majoration]" $this->select($this->byId("evenement"))->selectOptionByValue("81"); // On clique sur le bouton ajouter $this->byXPath("//input[@value='Ajouter']")->click(); // On vérifie que l'instruction s'est bien ajouté $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text()); // On clique sur le bouton retour $this->byCssSelector("#sousform-instruction form a.retour")->click(); // On clique sur l'instruction nouvellement créée $this->byLinkText("accepter un dossier sans réserve")->click(); $idInstr = $this->byCssSelector("div.form-content > #instruction")->text(); // On finalise le document $this->byCssSelector("#sousform-instruction .portlet-list li:nth-child(4) a")->click(); // On vérifie le message de validation $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text()); sleep(1); //On clique sur le bouton retour $this->byLinkText("Retour")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le + pour ajouter une instruction $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click(); // On choisit un signataire Albert Dupont $this->select($this->byId("signataire_arrete"))->selectOptionByValue("1"); // On choisi l'événement "adjoint [majoration]" $this->select($this->byId("evenement"))->selectOptionByValue("29"); // On clique sur le bouton ajouter $this->byXPath("//input[@value='Ajouter']")->click(); // On vérifie que l'instruction s'est bien ajouté $this->assertRegExp('/.*Vos modifications ont bien été enregistrées.*/', $this->byCssSelector("#sousform-instruction .message .text")->text()); // On clique sur le bouton retour $this->byCssSelector("#sousform-instruction form a.retour")->click(); // On clique sur l'instruction nouvellement créée $this->byLinkText("retrait apres decision")->click(); $idInstr2 = $this->byCssSelector("div.form-content > #instruction")->text(); // On finalise le document $this->byCssSelector("#sousform-instruction .portlet-list li:nth-child(4) a")->click(); // On vérifie le message de validation $this->assertEquals('La finalisation du document s\'est effectuée avec succès.', $this->byCssSelector("#sousform-instruction .message .text")->text()); //On se déconnecte de l'application $this->deconnect(); // On se connecte en tant qu'admin $this->login("admin", "admin"); // On clique sur le menu Instruction $this->byLinkText("Instruction")->click(); // On clique sur le menu Recherche $this->byLinkText("Recherche")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le dossier PC 013055 12 00002P $this->byLinkText("PC 013055 12 00002P0")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // liste des instructions $this->byId("instruction")->click(); // On clique sur l'instruction nouvellement créée $this->byLinkText("accepter un dossier sans réserve")->click(); $idInstr = $this->byCssSelector("div.form-content > #instruction")->text(); //On clique sur le bouton retour $this->byLinkText("Retour")->click(); sleep(1); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'instruction nouvellement créée $this->byLinkText("retrait apres decision")->click(); $idInstr2 = $this->byCssSelector("div.form-content > #instruction")->text(); $this->deconnect(); // On se connecte en tant que "suivi" $this->login("suivi", "suivi"); // On clique sur le lien "Mise à jour des dates" dans le menu $this->byLinkText("Mise À Jour Des Dates")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // $dates = array( 0 => array( "id" => "date_envoi_signature", "label" => "date d'envoi pour signature Mairie/Préfet", "date" => date("d/m/Y", strtotime("- 6 day")), ), 1 => array( "id" => "date_retour_signature", "label" => "date de retour de signature Mairie/Préfet", "date" => date("d/m/Y", strtotime("- 4 day")), ), 2 => array( "id" => "date_envoi_controle_legalite", "label" => "date d'envoi au contrôle de légalite", "date" => date("d/m/Y", strtotime("- 4 day")), ), 3 => array( "id" => "date_retour_controle_legalite", "label" => "date de retour de controle de légalite", "date" => date("d/m/Y"), ), ); foreach($dates as $date) { // On vérifie que le titre de la page est correct $this->assertContains("Suivi > Suivi Des Pièces > Mise À Jour Des Dates", $this->byCssSelector("#content")->text()); // On saisi les informations de mise à jour de la date $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue( $date["id"]); $this->byId("date")->clear(); $this->byId("date")->value($date["date"]); $this->byId("code_barres")->value("1100000000".$idInstr); // On clique sur le bouton "Valider" $this->byName("validation")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le les informations du dossier sont bien présentes $this->assertEquals("PC 013055 12 00002P0", $this->byId("dossier_libelle")->text()); $this->assertEquals($date["date"], $this->byCssSelector("#".$date["id"])->text()); // On clique sur le bouton "Valider" $this->byName("validation")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le message de validation est présent $this->assertEquals("Saisie enregistrée", $this->byCssSelector("span.text")->text()); } foreach($dates as $date) { // On vérifie que le titre de la page est correct $this->assertContains("Suivi > Suivi Des Pièces > Mise À Jour Des Dates", $this->byCssSelector("#content")->text()); // On saisi les informations de mise à jour de la date $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue( $date["id"]); $this->byId("date")->clear(); $this->byId("date")->value($date["date"]); $this->byId("code_barres")->value("1100000000".$idInstr2); // On clique sur le bouton "Valider" $this->byName("validation")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le les informations du dossier sont bien présentes $this->assertEquals("PC 013055 12 00002P0", $this->byId("dossier_libelle")->text()); $this->assertEquals($date["date"], $this->byCssSelector("#".$date["id"])->text()); // On clique sur le bouton "Valider" $this->byName("validation")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le message de validation est présent $this->assertEquals("Saisie enregistrée", $this->byCssSelector("span.text")->text()); } // On se déconnecte $this->deconnect(); // On se connecte en tant que "instr" $this->login("instr", "instr"); // On saisit le numéro de dossier "PC0130551200002P0" dans le champ de // recherche du widget "accès direct" du tableau de bord qui possède le focus $this->byId("dossier")->value("PC0130551200002P0"); // On clique sur le bouton "Rechercher" du widget "accès direct" du // tableau de bord $this->byName("validation")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le titre de la page est correct // (que nous sommes sur le bon dossier) $this->assertContains("Instruction > Dossiers D'instruction > PC 013055 12 00002P0", $this->byCssSelector("#content")->text()); // On clique sur l'onglet "Instruction" $this->byId("instruction")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le lien de l'événement d'instruction n°11 $this->byLinkText("arrete")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le sous-titre est correct (que nous sommes sur le bon // événement d'instruction) $this->assertEquals($idInstr, $this->byCssSelector("div.form-content > #instruction")->text()); // On boucle sur chaque date pour vérifier que ces dernières sont bien // présentes sur l'écran de visualisation de l'événement d'instruction foreach($dates as $date) { // $this->assertEquals($date["date"], $this->byId($date["id"])->text()); } // On clique sur le bouton retour $this->byCssSelector("#sformulaire a.retour")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le lien de l'événement d'instruction n°11 $this->byLinkText("retrait apres decision")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le sous-titre est correct (que nous sommes sur le bon // événement d'instruction) $this->assertEquals($idInstr2, $this->byCssSelector("div.form-content > #instruction")->text()); // On boucle sur chaque date pour vérifier que ces dernières sont bien // présentes sur l'écran de visualisation de l'événement d'instruction foreach($dates as $date) { // $this->assertEquals($date["date"], $this->byId($date["id"])->text()); } //On clique sur le bouton retour $this->byLinkText("Retour")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); } /** * Ce test vise uniquement à vérifier que les écrans correspondant à chaque * entrée de menu ne génère pas une erreur de base de données */ // Fonction privé private function ouvertureMenu($utilisateur) { // On se connecte $this->login($utilisateur["login"], $utilisateur["mdp"]); // Ouvre le menu $this->openMenu("Suivi", $utilisateur); // On vérifie le menu "Retours De Consultation" $this->byLinkText("Retours De Consultation")->click(); $this->assertContains("Suivi > Demandes D'avis > Retours De Consultation", $this->byId("title")->text()); $this->verifyNoErrors(); // On vérifie le menu "Mise À Jour Des Dates" $this->byLinkText("Mise À Jour Des Dates")->click(); $this->assertContains("Suivi > Suivi Des Pièces > Mise À Jour Des Dates", $this->byId("title")->text()); $this->verifyNoErrors(); // On vérifie le menu "Envoi Lettre RAR" $this->byLinkText("Envoi Lettre RAR")->click(); $this->assertContains("Suivi > Suivi Des Pièces > Envoi Lettre RAR", $this->byId("title")->text()); $this->verifyNoErrors(); // On vérifie le menu "Bordereaux" $this->byLinkText("Bordereaux")->click(); $this->assertContains("Suivi > Suivi Des Pièces > Bordereaux", $this->byId("title")->text()); $this->verifyNoErrors(); // On vérifie le menu "Mise À Jour Des Dates" de la catégorie // "Demandes D'avis" $this->byClassName("demandes_avis_mise_a_jour_des_dates-16")->click(); $this->assertContains("Suivi > Demandes D'avis > Mise À Jour Des Dates", $this->byId("title")->text()); $this->verifyNoErrors(); // On vérifie le menu "Gestion" $this->byLinkText("Gestion")->click(); $this->assertContains("Suivi > Commissions > Gestion", $this->byId("title")->text()); $this->verifyNoErrors(); // On vérifie le menu "Demandes" $this->byLinkText("Demandes")->click(); $this->assertContains("Suivi > Commissions > Demandes", $this->byId("title")->text()); $this->verifyNoErrors(); // On se déconnecte $this->deconnect(); } } ?>