getName())."\r\n"; } public function onNotSuccessfulTest(Exception $e){ echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n"; parent::onNotSuccessfulTest($e); } /* * Ajout d'un type de commission par l'administrateur fonctionnel * */ public function test_01_ajout_type_commission_administrateur_fonctionnel() { // On se connecte en tant que "admin" $this->login("admin", "admin"); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le menu de paramétrage $this->byLinkText("Paramétrage")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le menu du type des commissions $this->byLinkText("Type De Commission")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le bouton d'ajout de type de commission $this->byClassName("add-16")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On ajoute les informations du type de commission $this->byId("code")->value("TTDC"); $this->byId("libelle")->value("Test type de commission"); $this->byId("lieu_salle")->value("2a"); $this->byId("listes_de_diffusion")->value("support@atreal.fr"); $this->byId("participants")->value("Atreal"); $this->byId("corps_du_courriel")->value("Test du type de commission"); // On ajoute le type de commission $this->byXpath("//input[@value='Ajouter']")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On retourne sur le tableau listant les types de commission $this->byCssSelector("a.retour")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le type de commission nouvellement créé avec les informations // ci-dessus existe bien $this->assertEquals($this->byCssSelector(".even td:nth-child(2)")->text(), "2"); $this->assertEquals($this->byCssSelector(".even td:nth-child(3)")->text(), "TTDC"); $this->assertEquals($this->byCssSelector(".even td:nth-child(4)")->text(), "Test type de commission"); $this->assertEquals($this->byCssSelector(".even td:nth-child(7)")->text(), "2a"); //On se déconnecte de l'application $this->logout(); } /* * Ajout d'une demande de passage en commission dans le contexte d'un dossier * d'instruction par l'instructeur * */ public function test_02_ajout_demande_de_passage_instructeur() { // On se connecte en tant que "instr" $this->login("instr", "instr"); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le lien "Mes encours" dans le menu $this->byLinkText("Mes Encours")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le lien "AZ0130551200001P0" dans le tableau $this->byLinkText("AZ 013055 12 00001P0")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'onglet "Commission(s)" $this->byId("dossier_commission")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le lien "Ajouter" dans le tableau $this->byClassName("add-16")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que la date du jour est pré-remplie dans le champs "date souhaitée" try { $this->assertEquals(date("d/m/Y"), $this->byId("date_souhaitee")->attribute('value')); } catch (PHPUnit_Framework_AssertionFailedError $e) { array_push($this->verificationErrors, $e->toString()); } // On clique sur le bouton "Ajouter" du formulaire sans sélectionner de type de commission $this->byXpath("//input[@value='Ajouter']")->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 d'erreur est présent $this->assertContains("SAISIE NON ENREGISTRÉE", $this->byCssSelector("#sousform-dossier_commission .message .text")->text()); // On sélectionne le type de commission "Commission Technique d'Urbanisme" $this->select($this->byId("commission_type"))->selectOptionByLabel("Test type de commission"); // $this->byId("motivation")->value("blablablabla"); // On clique sur le bouton "Ajouter" du formulaire avec toutes les informations saisies $this->byXpath("//input[@value='Ajouter']")->click(); sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // O vérifie que le message de validation est présent $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector("#sousform-dossier_commission .message .text")->text()); // On clique sur le bouton retour $this->byCssSelector("#sousform-dossier_commission a.retour")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que nous avons bien 1 consultation affichée $this->assertContains("1 - 2 enregistrement(s) sur 2", $this->byCssSelector("#sousform-dossier_commission .pagination-text")->text()); // On se déconnecte $this->logout(); } /* * Création d'une nouvelle commission par la cellule suivi * */ public function test_03_creation_commission_cellule_suivi() { // On se connecte en tant que "suivi" $this->login("suivi", "suivi"); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'entrée de menu "Commissions -> Gestion" $this->byLinkText("Gestion")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le bouton d'ajout de commission $this->byClassName("add-16")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On saisie une nouvelle commission // On vérifie que la date du jour est pré-remplie dans le champs "date souhaitée" try { $this->assertEquals(date("d/m/Y"), $this->byId("date_commission")->attribute('value')); } catch (PHPUnit_Framework_AssertionFailedError $e) { array_push($this->verificationErrors, $e->toString()); } // On clique sur le bouton "Ajouter" du formulaire sans sélectionner de type de commission $this->byXpath("//input[@value='Ajouter']")->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 d'erreur est présent $this->assertContains("SAISIE NON ENREGISTRÉE", $this->byCssSelector(".message .text")->text()); //On choisit un type de commission $this->select($this->byId("commission_type"))->selectOptionByLabel("Test type de commission"); /// On vérifie que les informations du type de commision sélectionnées sont bien // dans les champs $this->assertEquals($this->byId("libelle")->attribute('value'), "Test type de commission"); $this->assertEquals($this->byId("lieu_salle")->attribute('value'), "2a"); // Aucune adresse n'avait été saisie dans le champ concernant l'adresse $this->assertEquals($this->byId("lieu_adresse_ligne1")->attribute('value'), ""); // Saisie d'une adresse $this->byId("lieu_adresse_ligne1")->value("1 boulevard de la république"); $this->byId("heure_commission")->value("15:00"); $this->assertEquals($this->byId("listes_de_diffusion")->attribute('value'), "support@atreal.fr"); $this->assertEquals($this->byId("participants")->attribute('value'), "Atreal"); // On ajoute la commission $this->byXpath("//input[@value='Ajouter']")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On retourne sur le tableau listant les commissions $this->byCssSelector("a.retour")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que la commission nouvellement avec les informations ci-dessus // existe bien $this->assertEquals($this->byCssSelector(".odd td:nth-child(2)")->text(), "2"); // Champ calculé $this->assertEquals($this->byCssSelector(".odd td:nth-child(3)")->text(), "TTDC".date("Ymd")); $this->assertEquals($this->byCssSelector(".odd td:nth-child(4)")->text(), "Test type de commission"); $this->assertEquals($this->byCssSelector(".odd td:nth-child(5)")->text(), "Test type de commission"); $this->assertEquals($this->byCssSelector(".odd td:nth-child(6)")->text(), date("d/m/Y")); $this->assertEquals($this->byCssSelector(".odd td:nth-child(7)")->text(), "15:00"); $this->assertEquals($this->byCssSelector(".odd td:nth-child(8)")->text(), "1 boulevard de la république"); $this->assertEquals($this->byCssSelector(".odd td:nth-child(9)")->text(), ""); $this->assertEquals($this->byCssSelector(".odd td:nth-child(10)")->text(), "2a"); // On se déconnecte de l'application $this->logout(); } /* * Plannification des dossiers et impression de l'ordre du jour par la cellule suivi * * */ public function test_04_preparation_commission_cellule_suivi(){ // On se connecte en tant que "suivi" $this->login("suivi", "suivi"); // On clique sur le menu de paramétrage du type des commissions $this->byLinkText("Gestion")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // Clique sur la commission $this->byLinkText("TTDC".date("Ymd"))->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'onglet "Plannifier/retirer des dossiers" $this->byId("commission_dossiers_plannifier_retirer")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On supprime un dossier par l'onglet planifier/retirer $this->byCssSelector("#tabs-2 .odd td input[type='checkbox']")->click(); //On teste que le checkbox est selectionné $this->assertTrue($this->byCssSelector("#tabs-2 .odd td input[type='checkbox']")->selected()); // On valide le formulaire $this->byXpath("//input[@name='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 formulaire s'est bien validé $this->assertContains("Mise à jour réalisée avec succès pour le(s) dossier(s) : AZ 013055 12 00001P0.", $this->byCssSelector("#tabs-2 .message .text")->text()); // On clique sur l'onglet "Plannifier/retirer des dossiers" $this->byId("dossier_planifie")->click();sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); //On verifie que le dossier a bien été supprimé $this->assertContains("1 - 1 enregistrement(s) sur 1", $this->byCssSelector("#sousform-dossier_commission .pagination-text")->text()); // On clique sur l'onglet "Plannifier un dossier spécifique" $this->byId("commission_dossiers_plannifier_numero")->click(); sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On saisie le numéro du dossier d'instruction $this->byId("dossier")->value("CU0130551200001P0"); // On clique sur le bouton "Valider" du formulaire $this->byXpath("//input[@value='Valider']")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que le formulaire s'est bien validé $this->assertContains("Dossier ajouté avec succès.", $this->byCssSelector("#tabs-3 .message .text")->text()); // On clique sur l'onglet "Les dossiers planifiés" $this->byId("dossier_planifie")->click(); sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); //On verifie que le dossier a bien été ajouté $this->assertContains("1 - 2 enregistrement(s) sur 2", $this->byCssSelector("#sousform-dossier_commission .pagination-text")->text()); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'onglet "Plannifier un dossier spécifique" $this->byId("commission_dossiers_plannifier_numero")->click();sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On saisie le même numéro du dossier d'instruction $this->byId("dossier")->value("CU0130551200001P0"); // On clique sur le bouton "Valider" du formulaire $this->byXpath("//input[@value='Valider']")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie qu'il y a un message d'erreur $this->assertContains("Ce dossier est déjà à l'ordre du jour.", $this->byCssSelector("#tabs-3 .message .text")->text()); // On ajoute uniquement le dossier AZ0130551200001P0 à la commission $this->byId("commission_dossiers_plannifier_retirer")->click(); sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On valide le formulaire $this->byXpath("//input[@name='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 formulaire s'est bien validé $this->assertContains("Mise à jour réalisée avec succès pour le(s) dossier(s) :", $this->byCssSelector("#tabs-2 .message .text")->text()); $this->assertContains("CU 013055 12 00001P0", $this->byCssSelector("#tabs-2 .message .text")->text()); $this->assertContains("AZ 013055 12 00001P0", $this->byCssSelector("#tabs-2 .message .text")->text()); // On affiche l'ordre du jour $this->byId("action-form-commission-commission_compte_rendu")->click(); sleep(5); // Liste les fenêtres $windows = $this->windowHandles(); // Change la fenêtre $this->window($windows[1]); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie que le text est présent $this->assertContains("COMPTE RENDU", $this->source()); $this->closeWindow(); // On change le focus de la fenêtre $this->window($windows[0]); // On se déconnecte de l'application $this->logout(); } /* * Rédaction des retours de commission suite au passage en commission * */ public function test_05_saisie_des_avis_par_la_cellule_suivi() { // On se connecte en tant que "suivi" $this->login("suivi", "suivi"); // On clique sur le menu de paramétrage du type des commissions $this->byLinkText("Gestion")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // Clique sur la commission $this->byLinkText("TTDC".date("Ymd"))->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // Affichage en visualisation du dossier qui est passé en commission $this->byLinkText("AZ 013055 12 00001P0")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On saisie le retour $this->byId("avis")->value("Favorable"); // Validation du formulaire $this->byXpath("//input[@value='Modifier']")->click(); // La modification a bien été prise en compte $this->assertContains("Vos modifications ont bien été enregistrées", $this->byCssSelector("#sousform-dossier_commission .message .text")->text()); // On affiche le compte-rendu $this->byId("action-form-commission-commission_compte_rendu")->click(); sleep(5); // Liste les fenêtres $windows = $this->windowHandles(); // Change la fenêtre $this->window($windows[1]); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie que le text est présent $this->assertContains("COMPTE RENDU", $this->source()); $this->closeWindow(); // On change le focus de la fenêtre $this->window($windows[0]); // On se déconnecte de l'application $this->logout(); } /** * Test le retour de commission par l'instructeur */ public function test_06_gestion_du_retour_de_commission_par_l_instructeur() { // On se connecte en tant que "instr" $this->login("instr", "instr"); //On verifie le message du widget $this->assertContains("Vous avez 1 demande de passage en commission pour laquelle un avis a été rendu.", $this->byId("dashboard")->text()); // On clique sur le lien du widget $this->byLinkText("Voir mes retours de commission")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On se rend sur la demande de passage en visualisaion $this->assertContains($this->byCssSelector(".odd td:nth-child(7)")->text(),"Favorable"); //On clique sur le retour du dossier "AZ0130551200001P0" $this->byLinkText("AZ 013055 12 00001P0")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On temporise pour laisser un peu de temps à l'onglet de se charger // (accès direct) sleep(2); //On marque comme lu $this->byId("action-sousform-dossier_commission-lu")->click(); sleep(2); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que la demande de passage est bien passée à lu $this->assertEquals($this->byId("lu")->text(),"Oui"); //Retour sur le tableau de bord $this->byLinkText("Tableau de bord")->click(); //On vérifie le tableau de bord $this->assertContains("Vous n'avez aucune demande de passage en commission pour laquelle un avis a été rendu.", $this->byId("dashboard")->text()); // On se déconnecte de l'application $this->logout(); } } ?>