getName())."\r\n"; } public function onNotSuccessfulTest(Exception $e){ echo 'Line '.$e->getLine().' : '.$e->getMessage()."\r\n"; parent::onNotSuccessfulTest($e); } /** * Test le formulaire de la demande de type qui possède des select filtrés */ public function test_01_DemandeType() { // On se connecte à l'application $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 $this->byLinkText("Paramétrage Dossiers")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le sous-menu $this->byLinkText("Type")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le bouton "Ajouter" $this->byLinkText("Ajouter")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On remplis le champ code $this->byId("code")->value("TEST"); // On remplit le choix libelle $this->byId("libelle")->value("Test ajout de type de demande"); // On selectionne le groupe "Autorisation ADS" $this->select($this->byId("groupe"))->selectOptionByValue("1"); // On vérifie que le filtre s'est appliqué sur le champ // "type de dossier d'autorisation détaillé " $this->assertTrue((bool)preg_match_all("/(PCI)|(PCA)|(PD)|(PA)|(DP)|(CU)|(AZ)/", $this->select($this->byId("dossier_autorisation_type_detaille"))->text(), $matches)); // On selectionne le type détaillé d'autorisation // "AZ (Demande d'autorisation spéciale de travaux dans le périmètre d'une AVAP)" $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue("7"); // On vérifie que le filtre s'est appliqué sur le champ // "type de dossier d'instruction à créer" $this->assertTrue((bool)preg_match_all("/(AZ - Initiale)|(AZ - Transfert)|(AZ - Modificatif)|(AZ - Achèvement et conformité)|(AZ - Ouverture de chantier)/", $this->select($this->byId("dossier_instruction_type"))->text(), $matches)); // On selectionne le type de dossier d'instruction "AZ - Initiale" $this->select($this->byId("dossier_instruction_type"))->selectOptionByValue("31"); // On selectionne le type de l'événement d'instruction à créer $this->select($this->byId("evenement"))->selectOptionByValue("1"); // On selectionne la natude de la demande $this->select($this->byId("demande_nature"))->selectOptionByValue("1"); // On clique sur "Ajouter" $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 le message $this->assertEquals("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->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(); // On clique sur le type de demande crée $this->byLinkText("TEST")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie le champ code $this->assertEquals("TEST", $this->byId("code")->text()); // On vérifie le champ libelle $this->assertEquals("Test ajout de type de demande", $this->byId("libelle")->text()); // On vérifie le champ groupe $this->assertEquals("Autorisation ADS", $this->byId("groupe")->text()); // On vérifie le champ type de dossier d'autorisation détaillé $this->assertEquals("AZ (Demande d'autorisation spéciale de travaux dans le périmètre d'une AVAP)", $this->byId("dossier_autorisation_type_detaille")->text()); // On vérifie le champ type de dossier d'instruction à créer $this->assertEquals("AZ - Initiale", $this->byId("dossier_instruction_type")->text()); // On clique sur le portlet "Modifier" $this->byXPath("//div[@id='portlet-actions']/ul/li/a/span")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie que les champs type de dossier d'autorisation // détaillé et type de dossier d'instruction à créer respectent le filtrage $this->assertTrue((bool)preg_match_all("/(PCI)|(PCA)|(PD)|(PA)|(DP)|(CU)|(AZ)/", $this->select($this->byId("dossier_autorisation_type_detaille"))->text())); $this->assertTrue((bool)preg_match_all("/(AZ - Initiale)|(AZ - Transfert)|(AZ - Modificatif)|(AZ - Achèvement et conformité)|(AZ - Ouverture de chantier)/", $this->select($this->byId("dossier_instruction_type"))->text())); // On modifie le type de dossier d'autorisation détaillé $this->select($this->byId("dossier_autorisation_type_detaille"))->selectOptionByValue("1"); // On vérifie que le filtre s'est appliqué sur le champ // "type de dossier d'instruction à créer" $this->assertTrue((bool)preg_match_all("/(PCI - Initial)|(PCI - Transfert)|(PCI - Modificatif)|(PCI - Achèvement et conformité)|(PCI - Ouverture de chantier)/", $this->select($this->byId("dossier_instruction_type"))->text())); // On modifie le type de dossier d'instruction à créer $this->select($this->byId("dossier_instruction_type"))->selectOptionByValue("1"); // On clique sur modifier $this->byXPath("//input[@value='Modifier']")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie le message $this->assertEquals("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message .text")->text()); // On se déconnecte de l'application $this->logout(); } /** * Test l'existence des champs saisis dans la règle d'une action */ public function test_02_action() { // On se connecte à l'application $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 $this->byLinkText("Paramétrage Dossiers")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le sous-menu $this->byLinkText("Action")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On remplit le champ de recherche simple $this->byCssSelector("input[name='recherche']")->value('acceptation'); // On clique sur le bouton recherche $this->byCssSelector(".ui-button")->click(); // On clique sur le résultat $this->byLinkText("acceptation")->click(); // On clique sur le bouton "Modifier" $this->byId('action-form-action-modifier')->click(); // On change la valeur par "etat + champ_errone" $this->byId('regle_etat')->clear(); $this->byId('regle_etat')->value('etat + champ_errone'); // On valide la modification $this->byCssSelector("input[value='Modifier']")->click(); // On vérifie le message de validation $this->assertRegExp("/^[\s\S]*Le champ champ_errone n'est pas utilisable pour le champ règle etat[\s\S]*$/", $this->byCssSelector("#tabs-1 .message")->text()); // On change la règle état $this->byId('regle_date_dernier_depot')->clear(); $this->byId('regle_date_dernier_depot')->value('NULL'); // On valide la modification $this->byCssSelector("input[value='Modifier']")->click(); // On vérifie le message de validation $this->assertRegExp("/^[\s\S]*Le champ date de dernier dépôt des dossiers ne peut être mis à NULL.[\s\S]*$/", $this->byCssSelector("#tabs-1 .message")->text()); // On change la règle état $this->byId('regle_date_dernier_depot')->clear(); // On change la règle état $this->byId('regle_etat')->clear(); $this->byId('regle_etat')->value('etat'); // On valide la modification $this->byCssSelector("input[value='Modifier']")->click(); // On vérifie le message de validation $this->assertRegExp("/^[\s\S]*Vos modifications ont bien été enregistrées.[\s\S]*$/", $this->byCssSelector("#tabs-1 .message")->text()); // On clique sur le bouton 'Retour' $this->byLinkText("Retour")->click(); // On vérifie les nouvelles données $this->assertEquals("etat", $this->byId("regle_etat")->text()); // On se déconnecte $this->logout(); } /** * Test le paramétrage entre les événements avant AR et les événements AR */ public function test_03_evenement_retour() { // On se connecte à l'application $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 "Paramétrage Dossiers" $this->byLinkText("Paramétrage Dossiers")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le sous-menu "Événement" $this->byLinkText("Événement")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On ajoute un événement "principal" (c-a-d qui n'est pas retour) // On clique sur le bouton ajouter $this->byId("action-tab-evenement-corner-ajouter")->click(); // On remplit les champs $this->byId("libelle")->value("test_princ"); $this->byId("restriction")->value("date_evenement <= archive_date_dernier_depot + 1"); $this->select($this->byId("action"))->selectOptionByLabel("initier un delai"); $this->select($this->byId("delai"))->selectOptionByLabel("5 Mois"); $this->select($this->byId("accord_tacite"))->selectOptionByLabel("Oui"); $this->select($this->byId("delai_notification"))->selectOptionByLabel("1 Mois"); $this->select($this->byId("avis_decision"))->selectOptionByLabel("Non concerné"); // On valide le formulaire $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 le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // On ajoute un événement "suivant tacite" // On clique sur le bouton ajouter $this->byId("action-tab-evenement-corner-ajouter")->click(); // On remplit les champs $this->byId("libelle")->value("test_suivant_tacite"); // On valide le formulaire $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 le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // On ajoute un événement "retour" // On clique sur le bouton ajouter $this->byId("action-tab-evenement-corner-ajouter")->click(); // On remplit les champs $this->byId("libelle")->value("test_retour"); $this->byId("retour")->click(); $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))->clearSelectedOptions();; $this->select($this->byName("etats_depuis_lequel_l_evenement_est_disponible[]"))->selectOptionByLabel("delai de notification envoye"); $this->select($this->byName("dossier_instruction_type[]"))->clearSelectedOptions(); $this->select($this->byName("dossier_instruction_type[]"))->selectOptionByLabel("PCI - P - Initial"); $this->select($this->byId("etat"))->selectOptionByLabel("delai majore"); $this->select($this->byId("evenement_suivant_tacite"))->selectOptionByLabel("test_suivant_tacite"); // On valide le formulaire $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 le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // On recherche l'événement "test_princ" $this->byCssSelector("input[name='recherche']")->value('test_princ'); // On clique sur le bouton recherche $this->byCssSelector(".ui-button")->click(); // On clique sur le résultat $this->byLinkText("test_princ")->click(); // On clique sur le bouton "Modifier" $this->byId('action-form-evenement-modifier')->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On sélectionne l'événement "retour" dans "evenement_retour_ar" $this->select($this->byId("evenement_retour_ar"))->selectOptionByLabel("test_retour"); // On sélectionne l'événement "retour" dans "evenement_retour_signature" $this->select($this->byId("evenement_retour_signature"))->selectOptionByLabel("test_retour"); // On valide le formulaire $this->byXPath("//input[@value='Modifier']")->click(); // On vérifie le message d'erreur $this->assertContains("L'événement \"test_retour\" ne peut pas être utilisé en tant qu'événement d'accusé de réception et événement de retour de signature.", $this->byCssSelector(".message")->text()); // On ne sélectionne aucun "evenement_retour_signature" $this->select($this->byId("evenement_retour_signature"))->selectOptionByValue(""); // On valide le formulaire $this->byXPath("//input[@value='Modifier']")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // 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 recherche l'événement "test_retour" $this->byCssSelector("input[name='recherche']")->clear(); $this->byCssSelector("input[name='recherche']")->value('test_retour'); // On clique sur le bouton recherche $this->byCssSelector(".ui-button")->click(); // On clique sur le résultat $this->byLinkText("test_retour")->click(); // On vérifie que les paramètres ont été copiés $this->assertEquals("date_evenement <= archive_date_dernier_depot + 1", $this->byId("restriction")->text()); $this->assertEquals("5", $this->byId("delai")->text()); $this->assertEquals("Oui", $this->byId("accord_tacite")->text()); $this->assertEquals("1", $this->byId("delai_notification")->text()); $this->assertEquals("Non concerné", $this->byId("avis_decision")->text()); // On clique sur le bouton retour $this->byLinkText("Retour")->click(); // On ajoute un événement "principal" (c-a-d qui n'est pas retour) // On clique sur le bouton ajouter $this->byId("action-tab-evenement-corner-ajouter")->click(); // On remplit le libellé $this->byId("libelle")->value("test_princ_2"); // On sélectionne l'événement "retour" dans "evenement_retour_ar" $this->select($this->byId("evenement_retour_signature"))->selectOptionByLabel("test_retour"); // On valide le formulaire $this->byXPath("//input[@value='Ajouter']")->click(); // On vérifie le message d'erreur $this->assertContains("L'événement \"test_retour\" est déjà utilisé en tant qu'événement d'accusé de réception.", $this->byCssSelector(".message")->text()); // On vérifie dans l'interface workflow // On clique sur le sous-menu "Workflows" $this->byLinkText("Workflows")->click(); // On sélectionne le type de DI $this->select($this->byId("di_type"))->selectOptionByLabel("PCI - P - Initial"); // On vérifie que l'évenement retour apparaît $this->assertContains("TEST_RETOUR [RETOUR]", $this->byId("tabs-1")->text()); // On se déconnecte $this->logout(); } /** * Test la copie d'événement * Cette fonction a besoin de la fonction test_03_evenement_retour * pour fonctionner */ public function test_04_evenement_copie() { // On se connecte à l'application $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 "Paramétrage Dossiers" $this->byLinkText("Paramétrage Dossiers")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le sous-menu "Événement" $this->byLinkText("Événement")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On recherche l'événement "test_princ" $this->byCssSelector("input[name='recherche']")->value('test_princ'); // On clique sur le bouton recherche $this->byCssSelector(".ui-button")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le résultat $this->byLinkText("test_princ")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On ajout un enregistrement à bible pour tester la copie après // On clique sur l'onglet "bible" $this->byId("bible")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le bouton ajouter $this->byId("action-soustab-bible-corner-ajouter")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On remplis les champs obligatoire $this->byId("contenu")->value("test bible assoc evenement"); $this->byXPath('//*[@name="libelle"]')->value("test bible assoc evenement"); $this->select($this->byId("om_collectivite"))->selectOptionByLabel("agglo"); // On clique sur le bouton "Ajouter" $this->byXPath("//input[@value='Ajouter']")->click();sleep(1); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // On clique sur l'onglet "Événement" $this->byId("main")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On récupère l'identifiant de l'événement $evenement = $this->byId('evenement')->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(); // On clique sur l'action "copier" $this->byId('action-tab-evenement-left-copier-'.$evenement)->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On sélectionne seulement l'objet associé "bible" $this->byId("bible")->click(); // On clique sur le bouton "Copier" $this->byId('button-Copier')->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On vérifie le message de validation $this->assertContains("La copie de l'enregistrement événement avec l'identifiant ".$evenement." s'est effectuée avec succès", $this->byCssSelector(".message")->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(); // On vérifie que le champ de recherche n'est pas vide $this->assertTrue($this->byCssSelector("input[name='recherche']")->attribute('value') != ""); } /** * Test l'ajout, la modification et la suppression d'un contrainte */ public function test_06_contrainte() { // On se connecte à l'application $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 "Paramétrage Dossiers" $this->byLinkText("Paramétrage Dossiers")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le sous-menu "Événement" $this->byLinkText("Contrainte")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On ajoute une contrainte $this->byId("action-tab-contrainte-corner-ajouter")->click(); // On remplis les champs $this->byId("libelle")->value("Une contrainte manuelle"); $this->byId("groupe")->value("Zone du PLU"); $this->byId("sousgroupe")->value("protection"); $this->byId("texte")->value("Texte de la contrainte à complété."); $this->select($this->byId("om_collectivite"))->selectOptionByLabel("agglo"); // On valide le formulaire $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 le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // On vérifie que la contrainte existe $this->assertContains("Une contrainte manuelle", $this->byCssSelector(".tab-tab")->text()); // On clique sur la contrainte créée $this->byLinkText("Une contrainte manuelle")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On clique sur le bouton "Modifier" $this->byId("action-form-contrainte-modifier")->click(); // On vérifie qu'il n'y a pas d'erreur sur l'élément affiché $this->verifyNoErrors(); // On modifie le texte $this->byId("texte")->clear(); $this->byId("texte")->value("Texte de la contrainte à complété depuis un dossier."); // On valide le formulaire $this->byXPath("//input[@value='Modifier']")->click(); // On vérifie le message de validation $this->assertContains("Vos modifications ont bien été enregistrées.", $this->byCssSelector(".message")->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(); // On vérifie le texte de la contrainte $this->assertContains("Texte de la contrainte à complété depuis un dossier.", $this->byId("texte")->text()); // On clique sur le bouton supprimer $this->byId("action-form-contrainte-supprimer")->click(); // 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[@value='Supprimer']")->click(); // On vérifie le message de validation $this->assertContains("La suppression a été correctement effectuée.", $this->byCssSelector(".message")->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(); // On se déconnecte $this->logout(); } } ?>