getName())."\r\n"; } public function onNotSuccessfulTest(Exception $e){ echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n"; parent::onNotSuccessfulTest($e); } /** * Test l'incomplétude sur un dossier d'instruction */ public function test_01_Incompletude() { /** * Création d'un dossier d'instruction */ // On se connecte à l'application $this->login("guichet", "guichet"); // On clique sur le menu "Nouveau Dossier" $this->byLinkText("Nouveau Dossier")->click(); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie le nom de l'onglet $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text()); // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes" $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes"); // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes" $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial"); sleep(1); // On clique pour ajouter un pétitionnaire principale $this->byId("add_petitionnaire_principal")->click(); // On remplit le champ $this->byId("particulier_nom")->value("DURAND"); // On remplit le champ $this->byId("particulier_prenom")->value("MICKAEL"); // On remplit le champ $this->byId("particulier_date_naissance")->value("03/01/1956"); // On remplit le champ $this->byId("particulier_commune_naissance")->value("LILLE"); // On remplit le champ $this->byId("particulier_departement_naissance")->value("NORD"); // On remplit le champ $this->byId("numero")->value("12"); // On remplit le champ $this->byId("voie")->value("RUE DE LA LOI"); // On remplit le champ $this->byId("complement")->value("APPT 12"); // On remplit le champ $this->byId("localite")->value("MARSEILLE"); // On remplit le champ $this->byId("code_postal")->value("13012"); // On remplit le champ $this->byId("telephone_fixe")->value("0404040404"); // On clique sur ajouter $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie le message $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text()); // On clique sur le bouton retour $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1); // On vérifie que le text est présent $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text()); // On clique sur ajouter $this->byXPath("//input[@value='Ajouter']")->click(); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie le message $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text()); // Récupération du numéro de dossier preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $matches); $dossier_libelle = $matches[0]; $dossier = str_replace(' ', '', $dossier_libelle); // On clique $this->byCssSelector("a#link_demande_recepisse")->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->assertRegExp("/^[\s\S]*RECEPISSE DE DEPOT[\s\S]*$/",$this->source()); // On ferme la fenêtre $this->closeWindow(); // On change le focus de la fenêtre $this->window($windows[0]); // On clique sur le bouton retour $this->byLinkText("Retour")->click(); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On se déconnecte $this->deconnect(); /** * Envoi d’un courrier de majoration de délai pour consultation ABF */ // on se connecte à l'application $this->login("instr", "instr"); // On clique sur le menu $this->byLinkText("Recherche")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On recherche le dossier crée $this->byId("dossier")->value($dossier); // On clique sur le bouton recherche $this->byId("adv-search-submit")->click(); // On clique sur le résultat $this->byLinkText($dossier_libelle)->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'onglet instruction $this->byId("instruction")->click(); // On clique sur le + pour ajouter une instruction $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click(); // On choisi l'événement ABF recours contre avis [majoration] $this->select($this->byId("evenement"))->selectOptionByValue("21"); // 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 récupère le numéro de l'instruction créée $this->byLinkText("ABF recours contre avis")->click(); $idInstrAbf = $this->byCssSelector(".form-content #instruction")->text(); // Finalisation du document $this->byCssSelector("#action-sousform-instruction-finaliser")->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 clique sur l'onglet DI $this->byId("main")->click(); // on rafraichis la page $this->refresh(); // On vérifie le délai du dossier $this->assertEquals("5", $this->byId('delai')->text()); /** * Envoi notification de pièces manquantes */ // On clique sur l'onglet instruction $this->byId("instruction")->click(); // On clique sur le + pour ajouter une instruction $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click(); // On choisi l'événement "Notification de pieces manquante [rejet]" $this->select($this->byId("evenement"))->selectOptionByValue("2"); // 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 récupère le numéro de l'instruction créée $this->byLinkText("Notification de pieces manquante")->click(); $idInstrIncompletude = $this->byCssSelector(".form-content #instruction")->text(); // Finalisation du document $this->byCssSelector("#action-sousform-instruction-finaliser")->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 clique sur l'onglet DI $this->byId("main")->click(); // on rafraichis la page $this->refresh(); // On vérifie que l'état du dossier $this->assertEquals("dossier incomplet", $this->byId('etat')->text()); // On se deconnecte $this->deconnect(); /** * Retour de l’AR incomplétude */ // on se connecte en tant que suivi $this->login("suivi", "suivi"); // On clique sur 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(); // on choisit le type de mise à jour $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue("date_retour_rar"); // on choisit la date $this->byId("date")->value(date("d/m/Y")); // on rentre le code barre $this->byId("code_barres")->value("1100000000".$idInstrIncompletude); // on clique sur le bouton valider $this->byName("validation")->click(); // on vérifie que la mise à jour est pour le bon évenement $this->assertEquals("Notification de pieces manquante", $this->byId('evenement')->text()); // on clique encore sur le bouton valider $this->byName("validation")->click(); // on vérifie que la mise à jour est faite $this->assertRegExp('/.*Saisie enregistrée.*/', $this->byCssSelector("#formulaire .message .text")->text()); /** * Retour de l’AR de majoration de délai consultation ABF */ // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // on choisit le type de mise à jour $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue("date_retour_rar"); // on choisit la date $this->byId("date")->value(date("d/m/Y")); // on rentre le code barre $this->byId("code_barres")->value("1100000000".$idInstrAbf); // on clique sur le bouton valider $this->byName("validation")->click(); // on vérifie que la mise à jour est pour le bon évenement $this->assertEquals("ABF recours contre avis", $this->byId('evenement')->text()); // on clique encore sur le bouton valider $this->byName("validation")->click(); // on vérifie que la mise à jour est faite $this->assertRegExp('/.*Saisie enregistrée.*/', $this->byCssSelector("#formulaire .message .text")->text()); // On se deconnecte $this->deconnect(); /** * Dépôt de pièces complémentaires */ // on se connecte à l'application $this->login("instr", "instr"); // On clique sur le menu $this->byLinkText("Recherche")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On recherche le dossier crée $this->byId("dossier")->value($dossier); // On clique sur le bouton recherche $this->byId("adv-search-submit")->click(); // On clique sur le résultat $this->byLinkText($dossier_libelle)->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur l'onglet instruction $this->byId("instruction")->click(); // on vérifie que les instruction après AR se sont ajouté $this->assertRegExp("/^[\s\S]*incomplétude après accusé de réception[\s\S]*$/", $this->byCssSelector("#sousform-instruction .tab-tab")->text()); $this->assertRegExp("/^[\s\S]*majoration délai abf[\s\S]*$/", $this->byCssSelector("#sousform-instruction .tab-tab")->text()); // On clique sur le + pour ajouter une instruction $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click(); // On choisi l'événement "dépôt de pièces complémentaires [retour]" $this->select($this->byId("evenement"))->selectOptionByValue("91"); // 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'onglet DI $this->byId("main")->click(); // on rafraichis la page $this->refresh(); // on vérifie que l'état ne soit plus à incomplet $this->assertTrue($this->byId('etat')->text() != "dossier incomplet"); // on vérifie que le délai est à 8 $this->assertEquals("8", $this->byId('delai')->text()); // on vérifie la date de complétude $this->assertEquals(date("d/m/Y"), $this->byId('date_complet')->text()); // on vérifie la date de limite de l'instruction $date_limite = $this->mois_date(date("Y-m-d"), 8, "+"); $date_limite = date("d/m/Y", strtotime($date_limite)); $this->assertEquals($date_limite, $this->byId('date_limite')->text()); // On se deconnecte $this->logout(); } /** * Test l'incomplétude sur un dossier d'instruction en ajoutant une date de * retour AR dépassée */ public function test_02_IncompletudeDelaiDepasse() { /** * Création d'un dossier d'instruction */ // On se connecte à l'application $this->login("guichet", "guichet"); // On clique sur le menu "Nouveau Dossier" $this->byLinkText("Nouveau Dossier")->click(); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie le nom de l'onglet $this->assertEquals("Demande", $this->byCssSelector("ul.ui-tabs-nav li.ui-state-default a")->text()); // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes" $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByLabel("Permis de construire pour une maison individuelle et / ou ses annexes"); // On selectionne le label "Permis de construire pour une maison individuelle et / ou ses annexes" $this->select($this->byId("demande_type"))->selectOptionByLabel("Dépôt Initial"); sleep(1); // On clique pour ajouter un pétitionnaire principale $this->byId("add_petitionnaire_principal")->click(); // On remplit le champ $this->byId("particulier_nom")->value("DURAND"); // On remplit le champ $this->byId("particulier_prenom")->value("MICKAEL"); // On remplit le champ $this->byId("particulier_date_naissance")->value("03/01/1956"); // On remplit le champ $this->byId("particulier_commune_naissance")->value("LILLE"); // On remplit le champ $this->byId("particulier_departement_naissance")->value("NORD"); // On remplit le champ $this->byId("numero")->value("12"); // On remplit le champ $this->byId("voie")->value("RUE DE LA LOI"); // On remplit le champ $this->byId("complement")->value("APPT 12"); // On remplit le champ $this->byId("localite")->value("MARSEILLE"); // On remplit le champ $this->byId("code_postal")->value("13012"); // On remplit le champ $this->byId("telephone_fixe")->value("0404040404"); // On clique sur ajouter $this->byCssSelector("div#sformulaire form div.formControls input.om-button")->click();sleep(1); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie le message $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/",$this->byCssSelector("#sousform-petitionnaire .message")->text()); // On clique sur le bouton retour $this->byCssSelector("form[name=\"f2\"] > div.formControls > a.retour")->click();sleep(1); // On vérifie que le text est présent $this->assertRegExp("/^[\s\S]*DURAND MICKAEL[\s\S]*$/",$this->byCssSelector("#petitionnaire_principal_delegataire .synthese_demandeur")->text()); // On clique sur ajouter $this->byXPath("//input[@value='Ajouter']")->click(); // On vérifie qu'il n'y ait pas d'erreur $this->verifynoerrors(); // On vérifie le message $this->assertRegExp("/^[\s\S]*Création du dossier d'autorisation n°[\s\S]*$/",$this->byCssSelector(".message")->text()); // Récupération du numéro de dossier preg_match('/(PC)[0-9 ]*(P0)/', $this->byCssSelector(".message .text")->text(), $matches); $dossier_libelle = $matches[0]; $dossier = str_replace(' ', '', $dossier_libelle); // On se déconnecte $this->deconnect(); /** * Envoi d’un courrier de majoration de délai pour consultation ABF */ // on se connecte à l'application $this->login("instr", "instr"); // On clique sur le menu $this->byLinkText("Recherche")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On recherche le dossier crée $this->byId("dossier")->value($dossier); // On clique sur le bouton recherche $this->byId("adv-search-submit")->click(); // On clique sur le résultat $this->byLinkText($dossier_libelle)->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); /** * Envoi notification de pièces manquantes */ // On clique sur l'onglet instruction $this->byId("instruction")->click(); // On clique sur le + pour ajouter une instruction $this->byCssSelector("#sousform-instruction .actions-max-1 a")->click(); // On choisi l'événement "Notification de pieces manquante [rejet]" $this->select($this->byId("evenement"))->selectOptionByValue("2"); // 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 récupère le numéro de l'instruction créée $this->byLinkText("Notification de pieces manquante")->click(); $idInstrIncompletude = $this->byCssSelector(".form-content #instruction")->text(); // Finalisation du document $this->byCssSelector("#action-sousform-instruction-finaliser")->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 clique sur l'onglet DI $this->byId("main")->click(); // on rafraichis la page $this->refresh(); // On vérifie que l'état du dossier $this->assertEquals("dossier incomplet", $this->byId('etat')->text()); // On se deconnecte $this->deconnect(); /** * Retour de l’AR incomplétude */ // on se connecte en tant que suivi $this->login("suivi", "suivi"); // On clique sur 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(); // on choisit le type de mise à jour $this->select($this->byId("type_mise_a_jour"))->selectOptionByValue("date_retour_rar"); // on choisit la date $this->byId("date")->value(date("d/m/Y", strtotime('+1 month 2 days'))); // on rentre le code barre $this->byId("code_barres")->value("1100000000".$idInstrIncompletude); // on clique sur le bouton valider $this->byName("validation")->click(); // on vérifie que la mise à jour est pour le bon évenement $this->assertEquals("Notification de pieces manquante", $this->byId('evenement')->text()); // on clique encore sur le bouton valider $this->byName("validation")->click(); // on vérifie que le retour d'incomplétude est en erreur $this->assertRegExp( '/.*Problème de dates : contactez l\'instructeur du dossier*/', $this->byCssSelector("#formulaire .message .text")->text() ); $this->assertRegExp( '/.*(date d\'événement <= date limite de notification au pétitionnaire)*/', $this->byCssSelector("#formulaire .message .text")->text() ); // On se deconnecte $this->deconnect(); /** * Dépôt de pièces complémentaires */ // on se connecte à l'application $this->login("instr", "instr"); // On clique sur le menu $this->byLinkText("Recherche")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On recherche le dossier crée $this->byId("dossier")->value($dossier); // On clique sur le bouton recherche $this->byId("adv-search-submit")->click(); // On clique sur le résultat $this->byLinkText($dossier_libelle)->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); //On vérifie que le dossier n'est pas dans un état incomplet notifié $this->assertFalse($this->byId('date_limite_incompletude')->displayed()); $this->assertFalse($this->byId('delai_incompletude')->displayed()); $this->assertEquals("dossier incomplet", $this->byId('etat')->text()); // On se deconnecte $this->logout(); } } ?>