*** Settings *** Documentation Test les dépôts de demandes # On inclut les mots-clefs Resource resources/resources.robot # On ouvre/ferme le navigateur au début/à la fin du Test Suite. Suite Setup For Suite Setup Suite Teardown For Suite Teardown # On inclut la librairie calendar de python Library calendar *** Keywords *** Vérifier l'intégration de l'ajout d'une nouvelle demande / nouveau dossier avec l'utilisateur [Documentation] 'Guichet Unique > Nouvelle Demande > Nouveau Dossier' ... - Vérification des éléments d'intégration ... - Saisie de la demande et du pétitionnaire principal ... - Vérification du messgae de validation : ... * info sur le DA, ... * info sur le DI, ... * lien vers le récepissé ... - Ouverture du récepissé ... - Retour vers le tableau de bord [Arguments] ${user} ${password} # On se connecte à l'application Depuis la page d'accueil ${user} ${password} # On clique sur l'entrée de menu dédiée et on vérifie l'intégration # - ouverture du menu # - titre de la page # - titre de l'onglet Go To Submenu In Menu guichet_unique nouveau-dossier Page Title Should Be Guichet Unique > Nouvelle Demande > Nouveau Dossier First Tab Title Should Be Demande # Informations à saisir &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial &{args_petitionnaire} = Create Dictionary ... particulier_civilite=Monsieur ... particulier_nom=DURAND ... particulier_prenom=MICKAEL ... particulier_date_naissance=03/01/1956 ... particulier_commune_naissance=LILLE ... particulier_departement_naissance=NORD ... numero=12 ... voie=RUE DE LA LOI ... complement=APPT 12 ... localite=MARSEILLE ... code_postal=13012 ... telephone_fixe=0404040404 ... fax=0405040404 # On remplit les champs de la demande Saisir la demande ${args_demande} # On ajoute le pétitionnaire Ajouter le demandeur petitionnaire_principal ${args_petitionnaire} # On vérifie que le nom du pétitionnaire saisi est bien affiché dans le # formulaire de la demande Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#petitionnaire_principal_delegataire .synthese_demandeur DURAND MICKAEL # On valide Click On Submit Button # Vérification du message de validation Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain Vos modifications ont bien été enregistrées. # On vérifie l'intégration # - ouverture du menu # - titre de la page # - titre de l'onglet Submenu In Menu Should Be Selected guichet_unique nouveau-dossier Page Title Should Contain Guichet Unique > Nouvelle Demande > Nouveau Dossier First Tab Title Should Be Demande # Vérification qu'il n'y a aucune erreur La page ne doit pas contenir d'erreur # On vérifie le message Valid Message Should Contain Création du dossier d'autorisation n° Valid Message Should Contain Création du dossier d'instruction n° # On télécharge le récépissé de la demande Click On Link link_demande_recepisse # On vérifie le contenu du PDF Open PDF ${OM_PDF_TITLE} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain RECEPISSE DE DEPOT Page Should Contain DURAND MICKAEL Close PDF # On clique sur le bouton retour Click On Back Button Page Title Should Be Tableau De Bord Vérifier l'intégration de la rubrique 'Guichet Unique' avec l'utilisateur [Documentation] Ce test vise uniquement à vérifier que les écrans ... correspondant à chaque entrée de menu de la rubrique 'Guichet Unique' ... ne génère pas une erreur de base de données [Arguments] ${user} ${password} # On se connecte à l'application Depuis la page d'accueil ${user} ${password} # On vérifie le menu "Nouveau Dossier" Go To Submenu In Menu guichet_unique nouveau-dossier Page Title Should Be Guichet Unique > Nouvelle Demande > Nouveau Dossier First Tab Title Should Be Demande La page ne doit pas contenir d'erreur # On vérifie le menu "Dossier En Cours" Go To Submenu In Menu guichet_unique dossier-existant Page Title Should Be Guichet Unique > Nouvelle Demande > Dossier En Cours First Tab Title Should Be Demande La page ne doit pas contenir d'erreur # On vérifie le menu "Autre Dossier" Go To Submenu In Menu guichet_unique autre-dossier Page Title Should Be Guichet Unique > Nouvelle Demande > Autre Dossier First Tab Title Should Be Demande La page ne doit pas contenir d'erreur # On vérifie le menu "Récépissé" Go To Submenu In Menu guichet_unique pdf Page Title Should Be Guichet Unique > Nouvelle Demande > Récépissé First Tab Title Should Be Demande La page ne doit pas contenir d'erreur # On vérifie le menu "Pétitionnaire Fréquent" Go to Submenu In Menu guichet_unique petitionnaire_frequent Page Title Should Be Guichet Unique > Nouvelle Demande > Pétitionnaire Fréquent First Tab Title Should Be Pétitionnaire Fréquent La page ne doit pas contenir d'erreur # On vérifie le menu "Registre" Go To Submenu In Menu guichet_unique affichage_reglementaire_registre Page Title Should Be Guichet Unique > Affichage Réglementaire > Registre First Tab Title Should Be Traitement Du Registre D'affichage Réglementaire La page ne doit pas contenir d'erreur # On vérifie le menu "Attestation" Go To Submenu In Menu guichet_unique affichage_reglementaire_attestation Page Title Should Be Guichet Unique > Affichage Réglementaire > Attestation First Tab Title Should Be Imprimer L'attestation D'affichage Réglementaire La page ne doit pas contenir d'erreur Activer la saisie du numéro de dossier [Documentation] Permet d'activer la saisie du numéro de dossier sur le formulaire ... d'ajout d'une nouvelle demande Click Element Until New Element css=#num_doss_manuel css=div.bloc_num_manu Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible css=#num_doss_sequence Désactiver la saisie du numéro de dossier [Documentation] Permet de désactiver la saisie du numéro de dossier sur le formulaire ... d'ajout d'une nouvelle demande Click Element Until New Element css=#num_doss_manuel css=#num_doss_manuel[value=""] Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Not Be Visible css=#num_doss_type_da[readonly="readonly"] *** Test Cases *** Création du jeu de données [Documentation] L'objet de ce 'Test Case' est de constituer le jeu de données Depuis la page d'accueil admin admin @{etats_autorises} = Create List ... delai majore ... delai de notification envoye ... dossier sans notification de delai &{args_demande_type} = Create Dictionary ... code=TESTDOC ... libelle=TESTDOC ... groupe=Autorisation ADS ... dossier_autorisation_type_detaille=PCA (Permis de construire comprenant ou non des démolitions) ... demande_nature=Nouveau dossier ... etats_autorises=@{etats_autorises} ... dossier_instruction_type=PCA - Initial ... evenement=Notification de delai ... document_obligatoire=Doc1 Ajouter un nouveau type de demande depuis le menu ${args_demande_type} &{args_petitionnaire} = Create Dictionary ... particulier_nom=Guérette ... particulier_prenom=Hedvige ... om_collectivite=MARSEILLE @{ref_cad} = Create List 789 AB 0023 &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_references_cadastrales=${ref_cad} ... om_collectivite=MARSEILLE ${libelle_di_cadastre} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} Ajouter une instruction au DI et la finaliser ${libelle_di_cadastre} accepter un dossier sans réserve Set Suite Variable ${libelle_di_cadastre} Intégration 'Guichet Unique' [Documentation] Intégration 'Guichet Unique'. # Profil GUICHET UNIQUE (mono) Vérifier l'intégration de la rubrique 'Guichet Unique' avec l'utilisateur guichet guichet # Profil ADMINISTRATEUR FONCTIONNEL (mono) Vérifier l'intégration de la rubrique 'Guichet Unique' avec l'utilisateur adminfonct adminfonct Intégration 'Guichet Unique > Nouvelle Demande > Nouveau Dossier' [Documentation] Intégration 'Guichet Unique > Nouvelle Demande > Nouveau Dossier'. # Profil GUICHET UNIQUE (mono) Vérifier l'intégration de l'ajout d'une nouvelle demande / nouveau dossier avec l'utilisateur guichet guichet # Profil ADMINISTRATEUR FONCTIONNEL (mono) Vérifier l'intégration de l'ajout d'une nouvelle demande / nouveau dossier avec l'utilisateur adminfonct adminfonct Intégration 'Guichet Unique > Nouvelle Demande > Autre Dossier' [Documentation] Intégration 'Guichet Unique > Nouvelle Demande > Autre Dossier'. ... - Dépôt d'un modificatif (M01) sur un dossier initial accepté (P0) # # Constitution du jeu de données spécifique à ce TestCase # &{args_petitionnaire} = Create Dictionary ... particulier_nom=Beauchamps ... particulier_prenom=Jeanette ... om_collectivite=MARSEILLE @{ref_cad} = Create List 806 AB 0025 A 0030 &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_references_cadastrales=${ref_cad} ... om_collectivite=MARSEILLE ${libelle_di} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} ${libelle_di_sans_espace} = Sans espace ${libelle_di} Depuis la page d'accueil instr instr Ajouter une instruction au DI et la finaliser ${libelle_di} accepter un dossier sans réserve # # Ajout de la nouvelle demande # # On se connecte en tant que guichet unique Depuis la page d'accueil guichet guichet # On clique sur l'entrée de menu dédiée et on vérifie l'intégration # - ouverture du menu # - titre de la page # - titre de l'onglet Go To Submenu In Menu guichet_unique autre-dossier Page Title Should Be Guichet Unique > Nouvelle Demande > Autre Dossier First Tab Title Should Be Demande # On fait une recherche sur le libellé du DI Input Text recherche ${libelle_di_sans_espace} # On valide Click On Search Button # On clique sur le bouton ajouter du dossier correspondant Click Element css=#action-tab-demande_autre_dossier-left-consulter-${libelle_di_sans_espace} # Intégration Page Title Should Be Guichet Unique > Nouvelle Demande > Autre Dossier > ${libelle_di} Submenu In Menu Should Be Selected guichet_unique autre-dossier # Saisie des informations de la demande &{args_demande} = Create Dictionary ... demande_type=Demande de modification # On remplit le formulaire Saisir la demande ${args_demande} # On valide Click On Submit Button # Vérification du message de validation Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain Création du dossier d'instruction n° # Vérification qu'il n'y a aucune erreur La page ne doit pas contenir d'erreur # On télécharge le récépissé de la demande Click On Link link_demande_recepisse # On vérifie le contenu du PDF Open PDF ${OM_PDF_TITLE} # On vérifie le contenu Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain RECEPISSE DE DEPOT Page Should Contain Beauchamps Jeanette Close PDF # On clique sur le bouton retour Click On Back Button Page Title Should Be Tableau De Bord Intégration 'Guichet Unique > Nouvelle Demande > Récépissé' [Documentation] Intégration 'Guichet Unique > Nouvelle Demande > Récépissé'. ... Vérification des éléments de l'interface et de l'enchainement des écrans ... liés à l'entrée de menu en question permettant de rechercher parmi les ... demandes existantes pour pouvoir éditer de nouveau le récépissé lié. # # Constitution du jeu de données spécifique à ce TestCase # &{args_petitionnaire} = Create Dictionary ... particulier_nom=MARTINEZ ... particulier_prenom=Jacques ... om_collectivite=MARSEILLE @{ref_cad} = Create List 810 A 0020 A 0025 &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_references_cadastrales=${ref_cad} ... om_collectivite=MARSEILLE ${libelle_di} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} ${libelle_di_sans_espace} = Sans espace ${libelle_di} Depuis la page d'accueil guichet guichet # On clique sur l'entrée de menu dédiée et on vérifie l'intégration # - ouverture du menu # - titre de la page # - titre de l'onglet Go To Submenu In Menu guichet_unique pdf Page Title Should Be Guichet Unique > Nouvelle Demande > Récépissé First Tab Title Should Be Demande # On fait une recherche sur le libellé du DI Input Text recherche ${libelle_di_sans_espace} Click On Search Button # On clique sur le libellé du dossier Click Link ${libelle_di} # On vérifie l'intégration # - ouverture du menu # - titre de la page # - titre de l'onglet Submenu In Menu Should Be Selected guichet_unique pdf Page Title Should Be Guichet Unique > Nouvelle Demande > Récépissé > ${libelle_di} First Tab Title Should Be Demande # Les informations sur la demande doivent être correcetes Element Text Should Be css=#dossier_autorisation_type_detaille ${args_demande.dossier_autorisation_type_detaille} Element Text Should Be css=#demande_type ${args_demande.demande_type} Element Should Contain css=#petitionnaire_principal_delegataire .synthese_demandeur ${args_petitionnaire.particulier_nom} ${args_petitionnaire.particulier_prenom} # On clique sur l'action dédiée 'Éditer le récepissé PDF' Click On Form Portlet Action demande pdfetat new_window # On vérifie le contenu du PDF Open PDF ${OM_PDF_TITLE} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain RECEPISSE DE DEPOT Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain ${libelle_di} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain ${args_petitionnaire.particulier_nom} ${args_petitionnaire.particulier_prenom} Close PDF # On clique sur "Retour" Click On Back Button # On vérifie l'intégration # - ouverture du menu # - titre de la page # - titre de l'onglet Submenu In Menu Should Be Selected guichet_unique pdf Page Title Should Be Guichet Unique > Nouvelle Demande > Récépissé First Tab Title Should Be Demande Affichage de la date de dépôt par defaut [Documentation] Permet de vérifier le bon fonctionnement de l'affichage de ... la date de dépôt ou non Depuis la page d'accueil admin admin # On ouvre le menu nouveau dossier Depuis le contexte de nouvelle demande via le menu # On sélectionne le type de dossier d'autorisation détaillé Select From List By Label dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions Wait Until Element Is Visible css=select#demande_type Select From List By Label demande_type Dépôt Initial Wait Until Element Is Visible css=input#date_demande Textfield Should Contain date_demande ${date_ddmmyyyy} &{param_values} = Create Dictionary ... libelle=option_date_depot_demande_defaut ... valeur=false ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} # On ouvre le menu nouveau dossier Depuis le contexte de nouvelle demande via le menu # On sélectionne le type de dossier d'autorisation détaillé Select From List By Label dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions Select From List By Label demande_type Dépôt Initial Textfield Should Contain date_demande ${EMPTY} &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_date_depot_demande_defaut ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} Ajout demande avec documents obligatoires [Documentation] L'objet de ce 'Test Case' est de vérifier l'ajout d'une demande ... avec des documents obligatoire # En tant que guichetier Depuis la page d'accueil guichet guichet # On ouvre le menu nouveau dossier Depuis le contexte de nouvelle demande via le tableau de bord # On sélectionne le type de dossier d'autorisation détaillé Select From List By Label dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions # On sélectionne le type de demande Wait Until Element Is Visible css=select#demande_type Select From List By Label demande_type TESTDOC # Vérification du chargement du dialog Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#ui-dialog-title-liste_doc Liste des documents obligatoires # Validation du dialog Click Button Valider # Vérification de l'erreur ${alert} = Handle Alert Should Be Equal As Strings ${alert} Tous les documents doivent être présents. Dans le cas contraire, rejeter la demande. # Fermeture du dialog Click Element css=.ui-dialog-titlebar-close # Vérification de l'erreur ${alert} = Handle Alert Should Be Equal As Strings ${alert} Tous les documents doivent être présents. Dans le cas contraire, rejeter la demande. # Rejet de la demande avec annulation Click Button Rejeter la demande ${message}= Handle Alert LEAVE Handle Alert DISMISS Should Be Equal As Strings ${message} Êtes vous sur de vouloir rejeter la demande ? # Rejet de la demande Click Button Rejeter la demande ${message}= Handle Alert Should Be Equal As Strings ${message} Êtes vous sur de vouloir rejeter la demande ? # Vérification du rechargement de la page Wait Until Page Contains Element css=#dossier_autorisation_type_detaille Element Should Not Be Visible css=#demande_type # On sélectionne le type de dossier d'autorisation détaillé Select From List By Label dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions # On sélectionne le type de demande Wait Until Element Is Visible css=select#demande_type Select From List By Label demande_type TESTDOC # Vérification du chargement du dialog Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#ui-dialog-title-liste_doc Liste des documents obligatoires # check Doc 1 Select Checkbox 0 # Validation du dialog Click Button Valider # vérification de la fermeture du dialog Element Should Not Be Visible css=#ui-dialog-title-liste_doc # Ajout d'un pétitionnaire &{args_petitionnaire} = Create Dictionary ... particulier_nom=Cole ... particulier_prenom=Sarah ... frequent=true Ajouter le demandeur petitionnaire_principal ${args_petitionnaire} # On valide Click On Submit Button # Vérification qu'il n'y a aucune erreur La page ne doit pas contenir d'erreur TNR Récupération de l'édition et logo [Documentation] L'objet de ce 'Test Case' est de vérifier que la bonne édition ... et le bon logo sont récupérés dans le récépissé de la demande # En tant qu'admin Depuis la page d'accueil admingen admingen # On crée une nouvelle demande via le tableau de bord &{args_petitionnaire} = Create Dictionary ... particulier_nom=Fistaul ... particulier_prenom=Sarah ... om_collectivite=ALLAUCH &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... om_collectivite=ALLAUCH # On crée une nouvelle demande via le tableau de bord ${di_libelle} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} # On ouvre le récépissé de la demande Click Element css=#link_demande_recepisse # On ouvre le PDF Open PDF ${OM_PDF_TITLE} # On vérifie la localisation du terrain Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Commune : Allauch # On ferme le PDF Close PDF TNR Récupération des paramètres de collectivité dans le récépissé de dépôt [Documentation] L'objet de ce 'Test Case' est de vérifier que les paramètres ... de la collectivité sont bien fusionné avec le récépissé de dépôt # En tant que guichet Depuis la page d'accueil guichetsuivi guichetsuivi # On crée une nouvelle demande via le tableau de bord &{args_petitionnaire} = Create Dictionary ... particulier_nom=Crosh ... particulier_prenom=Sarah &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial # On crée une nouvelle demande via le tableau de bord ${di_libelle} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} # On ouvre le récépissé de la demande Click Element css=#link_demande_recepisse # On ouvre le PDF Open PDF ${OM_PDF_TITLE} # On va sur la seconde page Next Page PDF # On vérifie la localisation du terrain Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Marseille , le${SPACE}${SPACE}${date_ddmmyyyy} # On ferme le PDF Close PDF Activation de l'option de numérisation [Documentation] Activation de l'option de numérisation dans un test case ... spécifique pour stabiliser le test suivant. Activer l'option de numérisation Ajout d'une demande avec création de répertoire de numérisation [Documentation] Permet de vérifier la création du répertoire de numérisation du ... dossier d'instruction, ainsi que sa date de modification avant et après qu'une ... demande sur existant soit ajoutée au dossier. Depuis la page d'accueil instrpoly instrpoly # On crée une nouvelle demande via le tableau de bord &{args_petitionnaire} = Create Dictionary ... particulier_nom=Fongemie ... particulier_prenom=Christiane ... om_collectivite=MARSEILLE &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Demande d'autorisation de construire, d'aménager ou de modifier un ERP ... demande_type=Dépôt Initial ... om_collectivite=MARSEILLE ${di_libelle} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} # Vérification de la création du dossier et récupération du nom du répertoire contenant les pièces du dossier ${repertoire_numerisation_dossier} = Vérifier création répertoire du dossier ${di_libelle} # On récupère la date de dernière modification du répertoire ${create_time} = Get Modified Time ${EXECDIR}${/}..${/}var${/}digitalization${/}Todo${/}${repertoire_numerisation_dossier} # Ajout du sleep si non ca va trop vite et c'est la même heure entre create et modify Sleep 1 &{args_demande} = Create Dictionary ... demande_type=Dépôt de pièces complémentaire ... om_collectivite=MARSEILLE ... dossier_instruction=${di_libelle} Ajouter la demande par WS ${args_demande} # On vérifie la présence du lien Depuis le contexte du dossier d'instruction ${di_libelle} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Text Should Be dossier_libelle ${di_libelle} # Les dates de création et de modification du répertoire ne doivent pas être égales ${modify_time} = Get Modified Time ${EXECDIR}${/}..${/}var${/}digitalization${/}Todo${/}${repertoire_numerisation_dossier} Should Not Be Equal ${create_time} ${modify_time} Désactivation de l'option de numérisation [Documentation] Désactivation de l'option de numérisation dans un test case ... spécifique pour stabiliser le test précédent. Désactiver l'option de numérisation Affichage réglementaire [Documentation] Test de la fonctionnalité 'Affichage réglementaire' # On se connecte à l'application Depuis la page d'accueil guichet guichet # On clique sur le menu "Attestation" Go To Submenu In Menu guichet_unique affichage_reglementaire_attestation # On vérifie le nom de l'onglet First Tab Title Should Be Imprimer L'attestation D'affichage Réglementaire # On écrit "PC0130551200002P0" dans le champ dossier Input Text css=#dossier PC0130551200002P0 # On clique sur "Valider" Click On Submit Button Until Message Ce dossier n'a jamais été affiché # On vérifie que le texte est présent Error Message Should Contain Ce dossier n'a jamais été affiché # # On clique sur le menu "Registre" Go To Submenu In Menu guichet_unique affichage_reglementaire_registre # On vérifie le nom de l'onglet First Tab Title Should Be Traitement Du Registre D'affichage Réglementaire # On clique sur "Déclencher le traitement" Click Element id=registre-form-submit # On vérifie que le traitement ne se déclenche pas Cliquer sur le bouton de la fenêtre modale Annuler Page Should Not Contain Element css=div#form-message div#message # On clique sur "Déclencher le traitement" Click Element id=registre-form-submit # On valide le traitement Cliquer sur le bouton de la fenêtre modale Confirmer # On ouvre le PDF Wait Until Keyword Succeeds 1 min 0.1 sec Valid Message Should Contain Traitement terminé. Le registre a été généré. Click Element id=registre-form-download Open PDF ${OM_PDF_TITLE} # On vérifie le titre du PDF Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Registre des dossiers en cours # On ferme le PDF Close PDF # On vérifie que le texte est présent Valid Message Should Contain Traitement terminé. Le registre a été généré. # On clique sur le menu "Attestation" Go To Submenu In Menu guichet_unique affichage_reglementaire_attestation # On vérifie le nom de l'onglet First Tab Title Should Be Imprimer L'attestation D'affichage Réglementaire # On clique sur "Valider" Click On Submit Button Until Message Veuiller saisir un N° de dossier. # On vérifie que le texte est présent Error Message Should Contain Veuiller saisir un N° de dossier. # On écrit "123" dans le champ dossier Input Text css=#dossier 123 # On clique sur "Valider" Click On Submit Button Until Message Ce dossier n'existe pas. # On vérifie que le texte est présent Error Message Should Contain Ce dossier n'existe pas. # On écrit "PC0130551200002P0" dans le champ dossier Input Text css=#dossier PC0130551200002P0 # On clique sur "Valider" Click On Submit Button Until Message Cliquez sur le lien ci-dessous pour télécharger votre attestation d'affichage # On vérifie que le texte est présent Valid Message Should Contain Cliquez sur le lien ci-dessous pour télécharger votre attestation d'affichage # On clique sur "Attestation d'affichage" Click Link Attestation d'affichage # On ouvre le PDF Open PDF ${OM_PDF_TITLE} # On vérifie le titre du PDF Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain ATTESTATION D'AFFICHAGE REGLEMENTAIRE Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain PC 013055 12 00002P0 # On ferme le PDF Close PDF # Supprime le dernier message de succès en retournant dans la page de saisie du numéro de dossier Go To Submenu In Menu guichet_unique affichage_reglementaire_attestation # On écrit "PC 013055 12 00002P0" dans le champ dossier avec des espaces Input Text css=#dossier PC 013055 12 00002P0 # On clique sur "Valider" Click On Submit Button Until Message Cliquez sur le lien ci-dessous pour télécharger votre attestation d'affichage # On vérifie que le texte est présent Valid Message Should Contain Cliquez sur le lien ci-dessous pour télécharger votre attestation d'affichage # On clique sur "Attestation d'affichage" Click Link Attestation d'affichage # On ouvre le PDF Open PDF ${OM_PDF_TITLE} # On vérifie le titre du PDF Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain ATTESTATION D'AFFICHAGE REGLEMENTAIRE Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain PC 013055 12 00002P0 # On ferme le PDF Close PDF # On se connecte en tant qu'instructeur pour définaliser l'instruction # et vérifier le bon message lorsque le guichet tente de sortir l'attestation PDF Depuis la page d'accueil instr instr Depuis l'onglet instruction du dossier d'instruction PC 013055 12 00002P0 Click Link affichage_obligatoire Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Portlet Action Should Be In SubForm instruction definaliser Click On SubForm Portlet Action instruction definaliser Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Be In Subform La définalisation du document s'est effectuée avec succès. Depuis la page d'accueil guichet guichet Go To Submenu In Menu guichet_unique affichage_reglementaire_attestation Input Text css=#dossier PC 013055 12 00002P0 Click On Submit Button Until Message L'attestation de ce dossier existe mais n'est pas finalisée. Error Message Should Contain L'attestation de ce dossier existe mais n'est pas finalisée. Ajout d'une demande sans récépissé de dépôt [Documentation] Au dépôt d'une demande, un lien permettant de télécharger ... le récépissé est affiché dans le message de validation même si ... l'instruction initiale n'a pas de lettre type (pas de récépissé). ... L'action permettant de régénérer ce même document ne doit pas être ... disponible. # On supprime la lettre type de l'événement de dépôt des PCI mais avant on # récupère la valeur de ce champ pour le repositionner à la fin de ce test Depuis la page d'accueil admin admin # On récupère la valeur de la lettre type depuis le formulaire de # modification Depuis le contexte de l'événement Notification du delai legal maison individuelle Click On Form Portlet Action evenement modifier ${label_lettretype} = Get Text css=.form-content select#lettretype option:checked # On modifie la valeur de la lettre type depuis le même formulaire de # modification pour ne pas perdre de temps &{args_evenement} = Create Dictionary ... libelle=Notification du delai legal maison individuelle ... lettretype=choisir Lettre type Saisir l'événement ${args_evenement} Click On Submit Button La page ne doit pas contenir d'erreur Valid Message Should Contain Vos modifications ont bien été enregistrées. # On ajoute une nouvelle demande Depuis la page d'accueil guichetsuivi guichetsuivi &{args_petitionnaire} = Create Dictionary ... particulier_nom=Bonenfant ... particulier_prenom=Germain &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ${di_libelle} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} # On vérifie que dans le message de validation il n'est pas possible de # télécharger le récépissé (qui n'existe pas) Element Should Not Contain css=div.message.ui-state-valid p span.text Télécharger le récépissé de la demande # On clique sur le lien du message de validation pour accéder au DI Click Link css=#link_demande_dossier_instruction # On vérifie que l'action de régénérer le récépissé n'est pas disponible Element Should Not Contain css=#portlet-actions Télécharger le récépissé de la demande # On repositionne la lettre type de l'événement de dépôt des PCI Depuis la page d'accueil admin admin # &{args_evenement} = Create Dictionary ... libelle=Notification du delai legal maison individuelle ... lettretype=${label_lettretype} Modifier l'événement ${args_evenement} Affectation automatique [Documentation] Ce test case a pour but de vérifier le fonctionnement de ... l'affectation automatique des dossiers en fonction de leur type de dossier ... d'autorisation détaillé et en fonction du code quartier des références ... cadastrales. ## Cas d'utilisation n°1 : dossier affecté à l'instructeur agglo car aucun instructeur # mono ne correspond au type de dossier d'autorisation détaillé Depuis la page d'accueil guichet guichet &{args_petitionnaire} = Create Dictionary ... particulier_nom=Morneau ... particulier_prenom=Gérard &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire comprenant ou non des démolitions ... demande_type=Dépôt Initial ${di_libelle} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} Click Element css=a#link_demande_recepisse Open PDF ${OM_PDF_TITLE} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Dossier suivi par Page Should Contain Poly Com Marseille Close PDF Click Element link_demande_dossier_instruction Wait Until Element Is Visible instructeur Element Text Should Be instructeur Poly Com Marseille (J) ## Cas d'utilisation n°2 : dossier PCI avec code quartier 806 -> affectation à Louis Laurent &{args_petitionnaire} = Create Dictionary ... particulier_nom=Morneau ... particulier_prenom=Gérard @{ref_cad} = Create List 806 AB 0025 A 0030 &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_references_cadastrales=${ref_cad} ${di_libelle} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} Click Element css=a#link_demande_recepisse Open PDF ${OM_PDF_TITLE} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Dossier suivi par Page Should Contain Louis Laurent Close PDF Click Element link_demande_dossier_instruction Wait Until Element Is Visible instructeur Element Text Should Be instructeur Louis Laurent (H) ## Cas d'utilisation n°3 : dossier PCI avec code quartier 806 -> affectation à Pierre Martin &{args_petitionnaire} = Create Dictionary ... particulier_nom=Morneau ... particulier_prenom=Gérard @{ref_cad} = Create List 801 AB 0025 A 0030 &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_references_cadastrales=${ref_cad} ${di_libelle2} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} Click Element css=a#link_demande_recepisse Open PDF ${OM_PDF_TITLE} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Dossier suivi par Page Should Contain Pierre Martin Close PDF Click Element link_demande_dossier_instruction Wait Until Element Is Visible instructeur Element Text Should Be instructeur Pierre Martin (H) Affectation automatique améliorée [Documentation] Ce test case a pour but de vérifier le fonctionnement de ... l'affectation automatique des dossiers en fonction de l'affectation ... manuellement sélectionnée. # Sans affectation manuelle définie le champs d'affectation automatique n'est pas montré # dans la nouvelle demande Depuis la page d'accueil guichet guichet Depuis le contexte de nouvelle demande via l'URL Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Not Be Visible css=select#affectation_automatique # Ajout du paramétrage d'affectation automatiques avec affectation manuelle Depuis la page d'accueil admin admin &{aff_auto_marseille_1} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... instructeur=Instr. Service Marseille (H) ... affectation_manuelle=MARS - Instr. Service Marseille Ajouter l'affectation depuis le menu ${aff_auto_marseille_1} &{aff_auto_marseille_2} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... instructeur=Pierre Martin (H) ... affectation_manuelle=MARS - P. Martin Ajouter l'affectation depuis le menu ${aff_auto_marseille_2} &{aff_auto_marseille_3} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire comprenant ou non des démolitions ... instructeur=Roland Richard (J) ... affectation_manuelle=MARS - R. Richard Ajouter l'affectation depuis le menu ${aff_auto_marseille_3} &{aff_auto_allauch} = Create Dictionary ... om_collectivite=ALLAUCH ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... instructeur=Martine Nadeau (H) ... affectation_manuelle=ALLAUCH - M. Nadeau Ajouter l'affectation depuis le menu ${aff_auto_allauch} # Avec une affectation manuelle définie, le champs d'affectation automatique est présent # dans la nouvelle demande Depuis la page d'accueil guichet guichet Depuis le contexte de nouvelle demande via l'URL Select From List By Label css=select#dossier_autorisation_type_detaille Permis de construire pour une maison individuelle et / ou ses annexes Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible css=select#affectation_automatique ${aff_auto_mars_pcmi_list} = Create List choisir affectation automatique MARS - Instr. Service Marseille MARS - P. Martin ${aff_auto_list} = Get List Items css=select#affectation_automatique Lists Should Be Equal ${aff_auto_list} ${aff_auto_mars_pcmi_list} # Lorsqu'il y a plusieurs affectations automatiques, les affectations automatiques sont mises à jour # en fonction de la sélection du DAdt sélectionné Select From List By Label css=select#dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions Wait Until Element Is Visible css=select#demande_type Select From List By Label css=select#demande_type Dépôt Initial Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible css=select#affectation_automatique ${aff_auto_mars_pc_list} = Create List choisir affectation automatique MARS - R. Richard ${aff_auto_list} = Get List Items css=select#affectation_automatique Lists Should Be Equal ${aff_auto_list} ${aff_auto_mars_pc_list} # Lorsqu'il y a plusieurs affectations automatiques, les affectations automatiques sont mises à jour # en fonction de la sélection de la collectivité sélectionnée Depuis la page d'accueil instrpolycomm3 instrpolycomm3 Depuis le contexte de nouvelle demande via l'URL Select From List By Label css=select#dossier_autorisation_type_detaille Permis de construire pour une maison individuelle et / ou ses annexes Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible css=select#affectation_automatique ${aff_auto_allauch_pcmi_list} = Create List choisir affectation automatique ALLAUCH - M. Nadeau ${aff_auto_list} = Get List Items css=select#affectation_automatique Lists Should Be Equal ${aff_auto_list} ${aff_auto_allauch_pcmi_list} # Si aucune affectation manuelle n'est défini, l'affectation # du dossier doit être celle par défaut (tenant compte des autres affectation automatiques # non-manuelles) &{args_petitionnaire_1} = Create Dictionary ... qualite=particulier ... particulier_nom=DEMANDEAFFAUTO1 ... particulier_prenom=TEST &{args_autres_demand_1} = Create Dictionary ... contrevenant_principal=${args_petitionnaire_1} &{args_demande_1} = Create Dictionary ... dossier_autorisation_type_detaille=Infraction ... demande_type=Dépôt Initial Depuis la page d'accueil juriste juriste ${num_di_1} = Ajouter la nouvelle demande ${args_demande_1} ${EMPTY} ${args_autres_demand_1} menu=contentieux ${instr_1} = Obtenir l'instructeur du dossier d'instruction ${num_di_1} menu=infraction Should Be True "${instr_1}" == "Juriste (H)" ${instr_sec_1} = Obtenir l'instructeur secondaire du dossier d'instruction ${num_di_1} menu=infraction Should Be True "${instr_sec_1}" == "Technicien (H)" # Si aucune valeur n'est sélectionnée pour l'affectation automatique, l'affectation # du dossier doit être celle par défaut (tenant compte des autres affectation automatiques # non-manuelles) &{args_petitionnaire_2} = Create Dictionary ... qualite=particulier ... particulier_nom=DEMANDEAFFAUTO2 ... particulier_prenom=TEST &{args_demande_2} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial Depuis la page d'accueil guichet guichet ${num_di_2} = Ajouter la nouvelle demande ${args_demande_2} ${args_petitionnaire_2} ${instr_2} = Obtenir l'instructeur du dossier d'instruction ${num_di_2} Should Be True "${instr_2}" == "Louis Laurent (H)" # Si l'affectation automatique est sélectionnée manuellement, le dossier doit être affecté à # l'instructeur spécifié dans l'affectation automatique &{args_petitionnaire_3} = Create Dictionary ... qualite=particulier ... particulier_nom=DEMANDEAFFAUTO3 ... particulier_prenom=TEST &{args_demande_3} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... affectation_automatique=MARS - Instr. Service Marseille ${num_di_3} = Ajouter la nouvelle demande ${args_demande_3} ${args_petitionnaire_3} ${instr_3} = Obtenir l'instructeur du dossier d'instruction ${num_di_3} Should Be True "${instr_3}" == "Instr. Service Marseille (H)" # Suppression des affectations automatiques Depuis la page d'accueil admin admin Supprimer l'affectation manuelle depuis le menu MARS - Instr. Service Marseille Supprimer l'affectation manuelle depuis le menu MARS - P. Martin Supprimer l'affectation manuelle depuis le menu MARS - R. Richard Supprimer l'affectation manuelle depuis le menu ALLAUCH - M. Nadeau TNR Test des codes insee des communes contenant des lettres pour l'affectation automatique [Documentation] Ce test case a pour but de vérifier que les codes insee ... contenant des lettres ne sont pas rejeté lors de la vérification Depuis la page d'accueil admin admin # Activation du paramètre permettant d'accéder au champ commune &{param_division} = Create Dictionary ... libelle=option_dossier_commune ... valeur=true ... om_collectivite=agglo Ajouter ou modifier le paramètre depuis le menu ${param_division} # L'affectation doit fonctionner &{aff_auto_agglo_1} = Create Dictionary ... om_collectivite=agglo ... communes=13014,2A004,74000 ... affectation_manuelle=agglo - test code insee 1 Ajouter l'affectation depuis le menu ${aff_auto_agglo_1} # Les codes insee non valide doivent être rejeté &{aff_auto_agglo_2} = Create Dictionary ... om_collectivite=agglo ... communes=13#04 &{aff_auto_agglo_3} = Create Dictionary ... om_collectivite=agglo ... communes=13045, : FOR ${index} IN RANGE 2 3 \ Depuis le tableau des affectations \ Click On Add Button \ Saisir l'affectation ${aff_auto_agglo_${index}} \ Click On Submit Button \ Error Message Should Contain Valeur de communes invalide (autorisés: chiffres et virgules, 1er et dernier caractères différent d'une virgule). # Réinitialisation des paramètres Supprimer l'affectation manuelle depuis le menu agglo - test code insee 1 &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_commune ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} Vérification des références cadastrales [Documentation] Teste les messages d'erreur lors de la saisie des références ... cadastrales dans le contexte d'une nouvelle demande et la présence ... de ce champ pour une demande sur existant. &{args_petitionnaire} = Create Dictionary ... qualite=particulier ... particulier_nom=DURAND ... particulier_prenom=MICKAEL &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial @{ref_cad} = Create List 806 DC '' Depuis la page d'accueil guichet guichet Depuis le contexte de nouvelle demande via l'URL Saisir la demande ${args_demande} Ajouter le demandeur petitionnaire_principal ${args_petitionnaire} Saisir les références cadastrales ${ref_cad} ${css_path_ref_cad_fields} = Set Variable .reference_cadastrale_custom_fields .reference_cadastrale_custom_field:nth-child # Pour les refcad 806 DC '' # Appel au trigger JS qui contrôle la valeur du champ de refcad Execute JavaScript window.jQuery("${css_path_ref_cad_fields}(3)").trigger("change"); ${alert} = Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Handle Alert Should Contain ${alert} Vous ne devez saisir que des nombres entiers # Pour les refcad 806 1 22 # Lorsqu'on a un seul chiffre on rempli automatiquement de 0 à gauche Input Text css=${css_path_ref_cad_fields}(3) 22 Input Text css=${css_path_ref_cad_fields}(2) 1 Execute JavaScript window.jQuery("${css_path_ref_cad_fields}(2)").trigger("change"); # Pour les refcad 806 ; 22 Input Text css=${css_path_ref_cad_fields}(3) 22 Input Text css=${css_path_ref_cad_fields}(2) ; Execute JavaScript window.jQuery("${css_path_ref_cad_fields}(2)").trigger("change"); ${alert} = Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Handle Alert Should Be Equal As Strings ${alert} Il ne s'agit pas d'une chaîne alphanumérique. # Pour les refcad 806 01 22 A on doit avoir un message # d'erreur précisant que la réf est incorrecte Input Text css=${css_path_ref_cad_fields}(2) 1 Input Text css=${css_path_ref_cad_fields}(3) 22 Click Element css=#moreFieldReferenceCadastrale0 Input Text css=${css_path_ref_cad_fields}(4) A # Validation de création de la demande Click Element css=#formulaire div.formControls input[type="submit"] ${alert} = Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Handle Alert Should Be Equal As Strings ${alert} Les références cadastrales saisies sont incorrectes. Veuillez les corriger. # Vérification de la présence de references cadastrales sur un dossier existant Depuis le contexte de demande sur existant via l'URL ${libelle_di_cadastre} Select From List By Label demande_type Demande de modification Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible css=.reference_cadastrale_custom_fields TNR Fonctionnement des champs custom de références cadastrale en cas de réaffichage [Documentation] En cas d'erreur (e.g. oublie de pétitionnaire) ou de type ... de demande. Les champs de refcad sont réaffichés et à cause d'un bug, ... les valeurs étaient corrompues et certains boutons « ajouter d'autres ... champs » étaient cassés. ... Il s'agit donc de tester tout les endroits où il y a ces champs. ... 1 Nouvelle demande, changement du type, check bouton. ... 2 Suite ↑, saisie ref, erreur, check refcad et bouton. ... 3 Suite ↑, changement du type, check refcad et bouton. ... 4 Ajout d'une demande sur dossier existant. Il y a une vue des refcad. ... 5 Nouvelle demande, recours contentieux. Il y a un champ refcad. ... Test après changement du type aussi. ... 6 Modif DI, ajout refs, erreur, check refcad et bouton # ## 1 ## Depuis la page d'accueil admin admin Depuis le contexte de nouvelle demande via l'URL Select From List By Label dossier_autorisation_type_detaille Permis de démolir Select From List By Label dossier_autorisation_type_detaille Infraction Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Element Is Visible css=#moreFieldReferenceCadastrale0 Click Element Until New Element css=#moreFieldReferenceCadastrale0 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(5) # Deux nouvaux champs devraient avoir été ajoutés Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=5 # changement de type pour reset le nombre de champs Select From List By Label dossier_autorisation_type_detaille Permis de démolir Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde ## 2 ## Wait Until Element Is Visible css=.reference_cadastrale_custom_fields # Saisie de 812BC8834A8856 878DE8898 @{ref_cad} = Create List 812 BC 8834 A 8856 Saisir les références cadastrales ${ref_cad} # 1re ligne Click Element Until New Element css=#morelineReferenceCadastrale css=.reference_cadastrale_custom_fields > br:nth-child(7) # 1er champ, 2e ligne (dans le groupe de champs, parmis les noeuds suivants # frères du br, celui avec le placeholder "Quart.") Input Text css=.reference_cadastrale_custom_fields br ~ input[placeholder="Quart."] ... 878 # 2e champ, 2e ligne Input Text css=.reference_cadastrale_custom_fields br ~ input[placeholder="Sect."] ... DE # 3e champ, 2e ligne Input Text css=.reference_cadastrale_custom_fields br ~ input[placeholder="Parc."] ... 8898 # On s'assure que les assertions sur les champs marchent quand l'état est # propre. Avant de commencer à maltraiter le formulaire. # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 Execute Javascript getDataFieldReferenceCadastrale(); Textarea Value Should Be css=#terrain_references_cadastrales ... 812BC8834A8856;878DE8898; # Déclenchement erreur (pas de collectivité ni pétionnaire) Click On Submit Button Until Message SAISIE NON ENREGISTRÉE # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 # Check fonctionnement des boutons Click Element Until New Element css=#moreFieldReferenceCadastrale0 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(7) Click Element Until New Element css=#moreFieldReferenceCadastrale1 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(14) Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=12 Execute Javascript getDataFieldReferenceCadastrale(); Textarea Value Should Be css=#terrain_references_cadastrales ... 812BC8834A8856;878DE8898; ## 3 ## Select From List By Label dossier_autorisation_type_detaille Infraction Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Element Is Visible css=.reference_cadastrale_custom_fields # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 # Check fonctionnement des boutons Click Element Until New Element css=#moreFieldReferenceCadastrale0 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(7) Click Element Until New Element css=#moreFieldReferenceCadastrale1 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(14) Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=12 # Check valeur après nombre champs pour être sûr que l'ancienne valeur n'est plus là. # Car le nombre de champs change entre la partie d'avant et celle-ci donc # pas de risque que l'assert passe si ça va trop vite. Alors que la valeur ne # change pas donc ça pourrait faire un faux négatif. Execute Javascript getDataFieldReferenceCadastrale(); Textarea Value Should Be css=#terrain_references_cadastrales ... 812BC8834A8856;878DE8898; ## 4 ## &{args_petitionnaire} = Create Dictionary ... particulier_nom=Pavlovic ... particulier_prenom=Patrik ... om_collectivite=MARSEILLE &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de démolir ... demande_type=Dépôt Initial ... om_collectivite=MARSEILLE ${di_libelle} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} Depuis le contexte du dossier d'instruction ${di_libelle} Click On Form Portlet Action dossier_instruction modifier Open Fieldset dossier_instruction localisation # Saisie de 812BC8834A8856 878DE8898 @{ref_cad} = Create List 812 BC 8834 A 8856 Saisir les références cadastrales ${ref_cad} # 1re ligne Click Element css=#morelineReferenceCadastrale # 1er champ, 2e ligne (dans le groupe de champs, parmis les noeuds suivants # frères du br, celui avec le placeholder "Quart.") Input Text css=.reference_cadastrale_custom_fields br ~ input[placeholder="Quart."] ... 878 # 2e champ, 2e ligne Input Text css=.reference_cadastrale_custom_fields br ~ input[placeholder="Sect."] ... DE # 3e champ, 2e ligne Input Text css=.reference_cadastrale_custom_fields br ~ input[placeholder="Parc."] ... 8898 Click On Submit Button Valid Message Should Be Vos modifications ont bien été enregistrées. Ajouter une instruction au DI et la finaliser ${di_libelle} ... accepter un dossier sans réserve Depuis le contexte de demande sur existant via l'URL ${di_libelle} Select From List By Label demande_type Demande de modification Wait Until Element Is Visible css=.reference_cadastrale_custom_fields # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 Execute Javascript getDataFieldReferenceCadastrale(); ${refad_from_fields} = Get Value terrain_references_cadastrales Should Be Equal 812BC8834A8856;878DE8898; ${refad_from_fields} # Changement de type pour réafficher les champs Select From List By Label demande_type Demande d'ouverture de chantier Wait Until Element Is Visible css=.reference_cadastrale_custom_fields Wait Until All JavaScript Finished # Si tout se passe trop vite, il y aura encore l'ancienne valeur # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 Execute Javascript getDataFieldReferenceCadastrale(); ${refad_from_fields} = Get Value terrain_references_cadastrales Should Be Equal 812BC8834A8856;878DE8898; ${refad_from_fields} # Rechangement de type car les champs peuvent se casser de plus en plus avec # les réaffichages. Select From List By Label demande_type Demande de modification Wait Until Element Is Visible css=.reference_cadastrale_custom_fields Wait Until All JavaScript Finished # Si tout se passe trop vite, il y aura encore l'ancienne valeur # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 Execute Javascript getDataFieldReferenceCadastrale(); ${refad_from_fields} = Get Value terrain_references_cadastrales Should Be Equal 812BC8834A8856;878DE8898; ${refad_from_fields} ## 5 ## Depuis le contexte de nouvelle demande via l'URL &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Recours contentieux ... autorisation_contestee=${di_libelle} Saisir la demande ${args_demande} # Check nombre et contenu des champs. Et que le JS peut bien les lire. Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 # Check fonctionnement des boutons Click Element Until New Element css=#moreFieldReferenceCadastrale0 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(7) Click Element Until New Element css=#moreFieldReferenceCadastrale1 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(14) Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=12 Execute Javascript getDataFieldReferenceCadastrale(); Textarea Value Should Be css=#terrain_references_cadastrales ... 812BC8834A8856;878DE8898; # Changement de type pour réafficher les champs Select From List By Label dossier_autorisation_type_detaille Recours gracieux Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Element Is Visible css=.reference_cadastrale_custom_fields Wait Until All JavaScript Finished # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 # Check fonctionnement des boutons Click Element Until New Element css=#moreFieldReferenceCadastrale0 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(7) Click Element Until New Element css=#moreFieldReferenceCadastrale1 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(14) Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=12 Execute Javascript getDataFieldReferenceCadastrale(); Textarea Value Should Be css=#terrain_references_cadastrales ... 812BC8834A8856;878DE8898; ## 6 ## Depuis le contexte du dossier d'instruction ${di_libelle} Click On Form Portlet Action dossier_instruction modifier Open Fieldset dossier_instruction localisation Open Fieldset dossier_instruction demandeur # Suppression pétitionnnaire pour faire échouer la modification Click Element css=[id^=petitionnaire_principal] .demandeur_del # Déclenchement erreur (plus de pétionnaire) Click On Submit Button Until Message SAISIE NON ENREGISTRÉE Open Fieldset dossier_instruction demandeur Open Fieldset dossier_instruction localisation # Check nombre et contenu des champs. Et que le JS peut bien les lire. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=8 # Check fonctionnement des boutons Click Element Until New Element css=#moreFieldReferenceCadastrale0 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(7) Click Element Until New Element css=#moreFieldReferenceCadastrale1 css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field:nth-child(14) Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Contain Element ... css=.reference_cadastrale_custom_fields > .reference_cadastrale_custom_field limit=12 Execute Javascript getDataFieldReferenceCadastrale(); Textarea Value Should Be css=#terrain_references_cadastrales ... 812BC8834A8856;878DE8898; Vérification de la modification de la date de dossier [Documentation] Il s'agit de tester le changement de date d'un dossier ... il faut d'abord tester les erreur possible: le changemet d'année ou ... le changement de date aprés l'ajout d'une instruction ${odl_date} = Set Variable 25/12/1994 ${new_date} = Set Variable 27/11/2013 ${newer_date} = Set Variable 25/12/2013 &{args_petitionnaire} = Create Dictionary ... qualite=particulier ... particulier_nom=VEILLEUX ... particulier_prenom=MARCELLE &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... date_demande=${new_date} Depuis la page d'accueil guichet guichet ${di} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} Depuis la page d'accueil instr instr Depuis le contexte du dossier d'instruction ${di} Click On Form Portlet Action dossier_instruction modifier Input Text date_depot ${odl_date} Click On Submit Button Until Message L'année de la date de dépôt n'est pas modifiable Error Message Should Contain L'année de la date de dépôt n'est pas modifiable Depuis le contexte du dossier d'instruction ${di} Click On Form Portlet Action dossier_instruction modifier Input Text date_depot ${newer_date} Click On Submit Button Valid Message Should Be Vos modifications ont bien été enregistrées. Depuis le contexte du dossier d'instruction ${di} Element Should Contain date_depot ${newer_date} Depuis l'onglet instruction du dossier d'instruction ${di} Element Should Contain css=tbody .col-2 ${newer_date} Ajouter une instruction au DI et la finaliser ${di} Sursis a statuer Depuis le contexte du dossier d'instruction ${di} Click On Form Portlet Action dossier_instruction modifier ${input_text} = Get Text date_depot Should Be Equal ${EMPTY} ${input_text} Ajout d'une nouvelle demande utilisant le type de formulaire 'DPC' [Documentation] Vérifie que l'ajout d'une nouvelle demande d'un type de ... dossier utilisant l'affichage 'DPC' est correcte. Le dossier doit être ... identique à un 'ADS' excepté pour les demandeurs qui sont le ... pétitionnaire principales, les pétitionnaires secondaires, le ... mandataire, le bailleur principale et les bailleurs secondaires. Depuis la page d'accueil guichet guichet &{args_petitionnaire} = Create Dictionary ... qualite=particulier ... particulier_nom=CinqMars ... particulier_prenom=Manon ${bailleur_nom} = Set Variable Clavette ${bailleur_prenom} = Set Variable Roland &{args_bailleur} = Create Dictionary ... qualite=particulier ... particulier_nom=${bailleur_nom} ... particulier_prenom=${bailleur_prenom} &{args_autres_demandeurs} = Create Dictionary ... bailleur_principal=${args_bailleur} &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Fonds de commerce ${di_fc} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} ${args_autres_demandeurs} # On vérifie que sur le formulaire du dossier, les demandeurs soient # correctement affichés Depuis la page d'accueil instr instr # Utilisation du keyword utilisant la recherche pour vérifier la présence # du dossier d'instruction dans le listing Depuis le contexte du dossier d'instruction par recherche ${di_fc} Open Fieldset dossier_instruction demandeur Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=div#liste_demandeur Bailleur principal Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=div#liste_demandeur ${bailleur_nom} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=div#liste_demandeur ${bailleur_prenom} Saisie du numéro de dossier sur le formulaire d'ajout d'une nouvelle demande [Documentation] Vérifie le bon fonctionnement de la saisie manuelle ... du numéro de dossier et de division, lors d'une nouvelle demande. # Isolation du contexte pour vérifier le fonctionnement de la numérotation # manuelle Depuis la page d'accueil admin admin &{isolation_values} = Create Dictionary ... om_collectivite_libelle=FREECITY030SMND ... departement=013 ... commune=077 ... insee=13077 ... direction_code=Z ... direction_libelle=Direction de FREECITY030SMND ... direction_chef=Chef ... division_code=Z ... division_libelle=Division Z ... division_chef=Chef ... guichet_om_utilisateur_nom=Alice Langlais ... guichet_om_utilisateur_email=alicelanglais@openads-test.fr ... guichet_om_utilisateur_login=alanglais ... guichet_om_utilisateur_pwd=alanglais ... instr_om_utilisateur_nom=Eliot Levasseur ... instr_om_utilisateur_email=eliotlevasseur@openads-test.fr ... instr_om_utilisateur_login=elevasseur ... instr_om_utilisateur_pwd=elevasseur Isolation d'un contexte ${isolation_values} # Ajout des affectations automatiques en plus Ajouter la division depuis le menu R Division R null ${isolation_values.division_chef} null null ${isolation_values.direction_libelle} Ajouter l'utilisateur depuis le menu Étienne Gamelin etiennegamelin@openads-test.fr egamelin egamelin INSTRUCTEUR POLYVALENT COMMUNE ${isolation_values.om_collectivite_libelle} Ajouter l'instructeur depuis le menu Étienne Gamelin Division R instructeur ${isolation_values.instr_om_utilisateur_nom} Ajouter la division depuis le menu W Division W null ${isolation_values.division_chef} null null ${isolation_values.direction_libelle} Ajouter l'utilisateur depuis le menu Renée Pinette renéepinette@openads-test.fr rpinette rpinette INSTRUCTEUR POLYVALENT COMMUNE ${isolation_values.om_collectivite_libelle} Ajouter l'instructeur depuis le menu Renée Pinette Division W instructeur ${isolation_values.instr_om_utilisateur_nom} &{arrondissement_values} = Create Dictionary ... libelle=77 ... code_postal=13077 ... code_impots=277 Ajouter l'arrondissement ${arrondissement_values} &{quartier_values} = Create Dictionary ... arrondissement=77 ... code_impots=977 ... libelle=Quartier de ${isolation_values.om_collectivite_libelle} Ajouter le quartier ${quartier_values} &{args_affectation} = Create Dictionary ... instructeur=Étienne Gamelin (R) ... om_collectivite=${isolation_values.om_collectivite_libelle} ... dossier_autorisation_type_detaille=Déclaration préalable Ajouter l'affectation depuis le menu ${args_affectation} &{args_affectation} = Create Dictionary ... instructeur=Renée Pinette (W) ... om_collectivite=${isolation_values.om_collectivite_libelle} ... dossier_autorisation_type_detaille=Déclaration préalable ... arrondissement=${arrondissement_values.libelle} ... quartier=${quartier_values.libelle} Ajouter l'affectation depuis le menu ${args_affectation} # Ajout d'un dossier pour vérifier la séquence de la numérotation forcée # plus loin dans le test &{args_demande_auto} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... om_collectivite=${isolation_values.om_collectivite_libelle} &{args_petitionnaire_auto} = Create Dictionary ... particulier_nom=Garnier ... particulier_prenom=Arlette ... om_collectivite=${isolation_values.om_collectivite_libelle} ${di_auto} = Ajouter la demande par WS ${args_demande_auto} ${args_petitionnaire_auto} # date du jour ${date_jour} = Date du jour au format dd/mm/yyyy ${date_annee_yyyy} = Get Time year ${date_annee_yy} = Get Substring ${date_annee_yyyy} -2 # Active l'option de numérotation forcée &{param_values} = Create Dictionary ... libelle=option_dossier_saisie_numero ... valeur=true ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} # Désactive l'option de saisie de la date de demande à la date courante # Permet de vérifier le contenu du champ de l'année composant la # numérotation du dossier &{param_values} = Create Dictionary ... libelle=option_date_depot_demande_defaut ... valeur=false ... om_collectivite=${isolation_values.om_collectivite_libelle} Ajouter le paramètre depuis le menu (surcharge) ${param_values} # On crée une nouvelle demande avec le profil de guichet unique Depuis la page d'accueil alanglais alanglais # Informations à saisir &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial &{args_petitionnaire} = Create Dictionary ... particulier_nom=TOLIN ... particulier_prenom=PATRICK Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} # On vérifie que le nom du pétitionnaire saisi est bien affiché dans le # formulaire de la demande Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur TOLIN PATRICK # Présence du bloc "Numéro dossier" après celui de "Date de la demande", et des différents # éléments: type DA, code DEP, code COM, année, division, dossier, checkbox # Par défaut la checkbox est décochée et tous les champs sont cachés Element Should Be Visible css=#formulaire div#form-content div.bloc_numero_dossier Element Should Be Visible css=#num_doss_manuel Element Should Not Be Visible css=#num_doss_type_da[readonly="readonly"] Element Should Not Be Visible css=#num_doss_code_depcom[readonly="readonly"] Element Should Not Be Visible css=#num_doss_annee[readonly="readonly"] Element Should Not Be Visible css=#num_doss_division Element Should Not Be Visible css=#num_doss_sequence Element Should Not Be Visible css=#num_doss_manuel[value="Oui"] # Activation de la numérotation forcée et vérification des valeurs par # defaut Activer la saisie du numéro de dossier Element Should Be Visible css=#num_doss_type_da[readonly="readonly"] Element Should Be Visible css=#num_doss_code_depcom[readonly="readonly"] Element Should Be Visible css=#num_doss_annee[readonly="readonly"] Element Should Be Visible css=#num_doss_division Element Should Be Visible css=#num_doss_sequence Element Should Be Visible css=#num_doss_manuel[value="Oui"] Wait Until Form Value Should Be css=#num_doss_type_da PC Wait Until Form Value Should Be css=#num_doss_code_depcom ${isolation_values.departement}${isolation_values.commune} # L'année ne peut pas être récupérée tant que la date de la demande n'est # pas saisie Wait Until Form Value Should Be css=#num_doss_annee ${EMPTY} # La division est récupéré directement de l'instructeur affecté # automatiquement si l'option option_instructeur_division_numero_dossier est # activée Wait Until Form Value Should Be css=#num_doss_division 0 # Le numéro de dossier proposé est la valeur suivante de la séquence # qui ne peut pas être récupérée sans la date Wait Until Form Value Should Be css=#num_doss_sequence ${EMPTY} # Réactivation de l'option de la date de demande par défaut à la date # courante # Activation de l'option de récupération de la division dans la numérotation # Vérification du comportement de chaque champs à la modification des champs # du formulaire de demande Depuis la page d'accueil admin admin &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_date_depot_demande_defaut ... click_value=${isolation_values.om_collectivite_libelle} Supprimer le paramètre (surcharge) ${param_args} &{param_values} = Create Dictionary ... libelle=option_instructeur_division_numero_dossier ... valeur=true ... om_collectivite=${isolation_values.om_collectivite_libelle} Ajouter le paramètre depuis le menu (surcharge) ${param_values} &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial ... om_collectivite=${isolation_values.om_collectivite_libelle} &{args_petitionnaire} = Create Dictionary ... particulier_nom=TOLIN ... particulier_prenom=PATRICK ... om_collectivite=${isolation_values.om_collectivite_libelle} Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur TOLIN PATRICK Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_annee ${date_annee_yy} Wait Until Form Value Should Be css=#num_doss_type_da DP Wait Until Form Value Should Be css=#num_doss_code_depcom ${isolation_values.departement}${isolation_values.commune} Wait Until Form Value Should Be css=#num_doss_division R Wait Until Form Value Should Be css=#num_doss_sequence 1 Désactiver la saisie du numéro de dossier # Saisie de la référence cadastrales pour modifier la division Input text css=div.reference_cadastrale_custom_fields input.champFormulaire:nth-child(1) 977 Input text css=div.reference_cadastrale_custom_fields input.champFormulaire:nth-child(2) A Input text css=div.reference_cadastrale_custom_fields input.champFormulaire:nth-child(3) 0001 Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_division W Wait Until Form Value Should Be css=#num_doss_sequence 1 # Vérification des événements JS (la division et la séquence ne doivent pas # être recalculées) # au changement du type détaillé de DA : type DA Select From List By Label css=#dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Element Is Visible css=#demande_type Select From List By Label css=#demande_type Dépôt Initial Wait Until Form Value Should Be css=#num_doss_type_da PC Select From List By Label css=#dossier_autorisation_type_detaille Permis de démolir Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Form Value Should Be css=#num_doss_type_da PD # au changement de la date de demande : année Wait Until Element Is Visible css=input#date_demande Input text css=#date_demande 01/01/2018 Simulate Event css=#date_demande change Wait Until Form Value Should Be css=#num_doss_annee 18 Input text css=#date_demande ${EMPTY} Simulate Event css=#date_demande change Wait Until Form Value Should Be css=#num_doss_annee ${EMPTY} # au changement de la collectivité : code depcom Select From List By Label css=#om_collectivite choisir Collectivité Wait Until Form Value Should Be css=#num_doss_code_depcom ${EMPTY} # Vide les valeurs pour vérifier les messages d'erreur Input text css=#num_doss_sequence ${EMPTY} Input text css=#num_doss_division 0 Click On Submit Button Until Message Numéro de dossier : le numéro est obligatoire. Wait Until Form Value Should Be css=#num_doss_sequence ${EMPTY} Input text css=#num_doss_sequence 99 Input text css=#num_doss_division ${EMPTY} Click On Submit Button Until Message Numéro de dossier : le caractère réservé au service instructeur (division) est obligatoire. # Vérifie que les valeurs postées ne sont pas recalculées au chargement de # la page Wait Until Form Value Should Be css=#num_doss_division ${EMPTY} Wait Until Form Value Should Be css=#num_doss_sequence 99 # Vérification des événements JS (avec activation/désactivation de la # numérotation forcée) # au changement du type détaillé de DA : type DA, division, séquence Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur TOLIN PATRICK Select From List By Label css=#dossier_autorisation_type_detaille Permis de construire comprenant ou non des démolitions Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Element Is Visible css=#demande_type Select From List By Label css=#demande_type Dépôt Initial Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_type_da PC # Même numérotation mais pas même division car l'affectation auto ne concerne # que les PCI et non les PCA Wait Until Form Value Should Be css=#num_doss_division 0 Wait Until Form Value Should Be css=#num_doss_sequence 2 Désactiver la saisie du numéro de dossier Select From List By Label css=#dossier_autorisation_type_detaille Permis de construire pour une maison individuelle et / ou ses annexes Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Wait Until Element Is Visible css=input#date_demande Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_type_da PC Wait Until Form Value Should Be css=#num_doss_division ${isolation_values.division_code} Wait Until Form Value Should Be css=#num_doss_sequence 2 # au changement de la date de demande : année, séquence (ne change pas la # valeur s'il manque des données pour la calculer) Input text css=#date_demande 01/01/2018 Simulate Event css=#date_demande change Wait Until Form Value Should Be css=#num_doss_annee 18 Désactiver la saisie du numéro de dossier Sleep 1 Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_sequence 1 Input text css=#date_demande ${EMPTY} Simulate Event css=#date_demande change Wait Until Form Value Should Be css=#num_doss_annee ${EMPTY} Désactiver la saisie du numéro de dossier Sleep 1 Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_annee ${EMPTY} # au changement de la collectivité : code depcom (ne # change pas la valeur s'il manque des données pour la calculer) Désactiver la saisie du numéro de dossier Select From List By Label css=#om_collectivite choisir Collectivité Wait Until Element Is Visible css=input#date_demande Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_code_depcom ${EMPTY} Wait Until Form Value Should Be css=#num_doss_division ${EMPTY} Wait Until Form Value Should Be css=#num_doss_sequence ${EMPTY} # On saisi des valeurs valides pour ajouter le dossier Input text css=#date_demande ${date_jour} Select From List By Label css=#dossier_autorisation_type_detaille Permis de construire pour une maison individuelle et / ou ses annexes Sleep 2 # obligation d'attendre car lors d'un changement de type de dossier il y a une temporisation JS d'une seconde Select From List By Label css=#om_collectivite ${isolation_values.om_collectivite_libelle} Wait Until Element Is Visible css=input#date_demande Input text css=#num_doss_division ${isolation_values.division_code} Input text css=#num_doss_sequence 9999 Click On Submit Button Until Message Création du dossier d'instruction n La page ne doit pas contenir d'erreur Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain ... Vos modifications ont bien été enregistrées. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain ... Attention vous avez atteint le dernier numéro de dossier possible pour ce type de dossier d'autorisation de cette collectivité pour l'année sélectionnée. # Vérifie le numero de dossier de la demande Element Should Contain css=#new_da PC ${isolation_values.departement}${isolation_values.commune} ${date_annee_yy} ${isolation_values.division_code}9999 # Ajoute une demande automatique et vérifire le message d'erreur car la # numérotation maximale est dépassée Depuis la page d'accueil alanglais alanglais &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial &{args_petitionnaire} = Create Dictionary ... particulier_nom=Aupry ... particulier_prenom=Clothilde Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Aupry Clothilde # La séquence de la numérotation forcée ne doit pas être renseigné Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_sequence ${EMPTY} Désactiver la saisie du numéro de dossier Click On Submit Button Until Message Vous ne pouvez pas saisir un dossier dont la numérotation dépasse 9999. # Vérification du changement de la séquence après un ajout d'un dossier par # numérotation forcée &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial &{args_demande_auto} = Create Dictionary ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial ... om_collectivite=${isolation_values.om_collectivite_libelle} &{args_petitionnaire} = Create Dictionary ... particulier_nom=Bonneville ... particulier_prenom=Zacharie Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Bonneville Zacharie Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_division R Wait Until Form Value Should Be css=#num_doss_sequence 1 Input text css=#num_doss_division S Input text css=#num_doss_sequence 777 Click On Submit Button Until Message Création du dossier d'instruction n La page ne doit pas contenir d'erreur Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain ... Vos modifications ont bien été enregistrées. Element Should Contain css=#new_da DP ${isolation_values.departement}${isolation_values.commune} ${date_annee_yy} S0777 # Ajout du dossier avec numérotation auto &{args_petitionnaire} = Create Dictionary ... particulier_nom=Vaillancour ... particulier_prenom=Yves ... om_collectivite=${isolation_values.om_collectivite_libelle} ${di_auto} = Ajouter la demande par WS ${args_demande_auto} ${args_petitionnaire} Should Be Equal ${di_auto} DP ${isolation_values.departement}${isolation_values.commune} ${date_annee_yy} R0778P0 # Vérification que l'ajout auto reste à la valeur la plus haute de la # séquence &{args_petitionnaire} = Create Dictionary ... particulier_nom=Bonneville ... particulier_prenom=Zacharie Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Bonneville Zacharie Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_division R Wait Until Form Value Should Be css=#num_doss_sequence 779 Input text css=#num_doss_division S Input text css=#num_doss_sequence 555 Click On Submit Button Until Message Création du dossier d'instruction n La page ne doit pas contenir d'erreur Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain ... Vos modifications ont bien été enregistrées. Element Should Contain css=#new_da DP ${isolation_values.departement}${isolation_values.commune} ${date_annee_yy} S0555 # Ajout du dossier avec numérotation auto &{args_petitionnaire} = Create Dictionary ... particulier_nom=Vaillancour ... particulier_prenom=Yves ... om_collectivite=${isolation_values.om_collectivite_libelle} ${di_auto} = Ajouter la demande par WS ${args_demande_auto} ${args_petitionnaire} Should Be Equal ${di_auto} DP ${isolation_values.departement}${isolation_values.commune} ${date_annee_yy} R0779P0 # Active l'option de suppression des dossiers dont le comportement de la # fonctionnalité est modifié par la saisie de la numérotation. # Il n'y a plus la condition sur le dernier numéro de dossier d'autorisation # Ajout de deux DI, un ayant le numéro 888 et l'autre ayant le numéro 999, # les deux non instruits. # La suppression est possible sur les deux dossiers, en cas de suppression # du 999 alors le prohcian numéro automatique est le 889 (888+1). # Ajout d'un nouveau DI 7777 et suppression du 888, le prochain automatique # devrait rester le 7778. Depuis la page d'accueil admin admin &{param_values} = Create Dictionary ... libelle=option_suppression_dossier_instruction ... valeur=true ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} Depuis la page d'accueil alanglais alanglais &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial &{args_petitionnaire} = Create Dictionary ... particulier_nom=Lacharité ... particulier_prenom=Juliette Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Lacharité Juliette Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_annee ${date_annee_yy} Input text css=#num_doss_sequence 888 Input text css=#num_doss_division Z Click On Submit Button Until Message Création du dossier d'instruction n &{args_petitionnaire} = Create Dictionary ... particulier_nom=Pomeroy ... particulier_prenom=Mathieu Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Pomeroy Mathieu Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_annee ${date_annee_yy} Input text css=#num_doss_sequence 999 Input text css=#num_doss_division Z Click On Submit Button Until Message Création du dossier d'instruction n ${current_year} = Get Current Date result_format=%y Depuis la page d'accueil egamelin egamelin Depuis le contexte du dossier d'instruction DP 013077 ${current_year} Z0888P0 Portlet Action Should Be In Form dossier_instruction supprimer Depuis le contexte du dossier d'instruction DP 013077 ${current_year} Z0999P0 Portlet Action Should Be In Form dossier_instruction supprimer Supprimer le dossier d'instruction DP 013077 ${current_year} Z0999P0 Depuis la page d'accueil alanglais alanglais &{args_petitionnaire} = Create Dictionary ... particulier_nom=Chrétien ... particulier_prenom=Arnaud Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Chrétien Arnaud Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_annee ${date_annee_yy} Wait Until Form Value Should Be css=#num_doss_sequence 889 Input text css=#num_doss_sequence 7777 Input text css=#num_doss_division Z Click On Submit Button Until Message Création du dossier d'instruction n Depuis la page d'accueil egamelin egamelin Supprimer le dossier d'instruction DP 013077 ${current_year} Z0888P0 Depuis la page d'accueil alanglais alanglais Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=#petitionnaire_principal_delegataire .synthese_demandeur Chrétien Arnaud Activer la saisie du numéro de dossier Wait Until Form Value Should Be css=#num_doss_annee ${date_annee_yy} Wait Until Form Value Should Be css=#num_doss_sequence 7778 Depuis la page d'accueil admin admin &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_suppression_dossier_instruction ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} # Désactivation de l'option de numérotation forcée et de la récupération de # la division dans la numérotation du dossier &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_saisie_numero ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_instructeur_division_numero_dossier ... click_value=${isolation_values.om_collectivite_libelle} Supprimer le paramètre (surcharge) ${param_args} Gestion de la commune associée au dossier [Documentation] Vérifie le bon fonctionnement de la gestion du ... champ 'commune' associé au dossier. # En tant qu'admin Depuis la page d'accueil admin admin # Permet le même comportement du test qu'il soit exécuté en runone ou runall &{param_values} = Create Dictionary ... libelle=option_afficher_division ... valeur=true ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} # isole le contexte du test (création d'une collectivité) &{isolation_values} = Create Dictionary ... om_collectivite_libelle=LIBRECOM ... departement=013 ... commune=095 ... insee=13095 ... direction_code=X ... direction_libelle=Direction de LIBRECOM ... direction_chef=Chef ... division_code=X ... division_libelle=Division X ... division_chef=Chef ... guichet_om_utilisateur_nom=Alain Posteur ... guichet_om_utilisateur_email=aposteur@openads-test.fr ... guichet_om_utilisateur_login=aposteur ... guichet_om_utilisateur_pwd=aposteur ... instr_om_utilisateur_nom=Abdel Ledba ... instr_om_utilisateur_email=aledba@openads-test.fr ... instr_om_utilisateur_login=aledba ... instr_om_utilisateur_pwd=aledba Isolation d'un contexte ${isolation_values} &{isolation_values} = Create Dictionary ... om_collectivite_libelle=LOINCOM ... departement=796 ... commune=095 ... insee=79695 ... direction_code=Y ... direction_libelle=Direction de LOINCOM ... direction_chef=Chef ... division_code=Y ... division_libelle=Division Y ... division_chef=Chef ... guichet_om_utilisateur_nom=Olice Ecilo ... guichet_om_utilisateur_email=olicelecilo@openads-test.fr ... guichet_om_utilisateur_login=oecilo ... guichet_om_utilisateur_pwd=oecilo ... instr_om_utilisateur_nom=Oliot Toilo ... instr_om_utilisateur_email=oliottoilo@openads-test.fr ... instr_om_utilisateur_login=otoilo ... instr_om_utilisateur_pwd=otoilo Isolation d'un contexte ${isolation_values} #-- importer des communes via l'import spécifique Depuis l'import spécifique commune ${import_communes_file} = Set Variable import_specific_communes_libre.csv Add File fic1 ${import_communes_file} Click On Submit Button In Import CSV Résultat de l'import doit contenir 41 ligne(s) dans le fichier dont : Résultat de l'import doit contenir - 1 ligne(s) d'entête Résultat de l'import doit contenir - 39 ligne(s) insérée(s) Résultat de l'import doit contenir - 0 ligne(s) rejetée(s) Résultat de l'import doit contenir - 1 ligne(s) vide(s) # TODO tester les points suivants : # - une commune importée qui existe déjà avec les mêmes paramètres et qui est toujours valide # ne doit pas être ajoutée # - une commune importée qui existe déjà avec les mêmes paramètres mais plus valide doit # être ajoutée et l'existante archivée # - import des régions # - import des départements #-- ajouter manuellement une commune en saisissant une date de validité dans le passé &{expiredcom_values} = Create Dictionary ... typecom=COM ... com=45645 ... reg=45 ... dep=45 ... arr=645 ... tncc=0 ... ncc=EXPIREDCOM ... nccenr=Expiredcom ... libelle=Expiredcom ... can=45 ... comparent= ... om_validite_debut=01/01/2020 ... om_validite_fin=01/02/2020 Ajouter commune avec dates validité ${expiredcom_values} # ajouter manuellement une commune en saisissant une date de validité dans le futur ${yyyy} = Get Time year ${mm} = Get Time month ${dd} = Get Time day ${date_courante} = Catenate SEPARATOR=/ ${dd} ${mm} ${yyyy} ${yyyy_futur} = Evaluate ${yyyy}+1 ${yyyy_past} = Evaluate ${yyyy}-1 &{futurcom_values} = Create Dictionary ... typecom=COM ... com=46646 ... reg=46 ... dep=46 ... arr=646 ... tncc=0 ... ncc=FUTURCOM ... nccenr=Futurcom ... libelle=Futurcom ... can=46 ... comparent= ... om_validite_debut=01/01/${yyyy_futur} Ajouter commune avec dates validité ${futurcom_values} # En tant que guichet unique de LIBRECOM Depuis la page d'accueil aposteur aposteur # à l'ajout d'un dossier # vérifier que le le champ 'commune' n'apparait pas (option désactivée) Depuis le contexte de nouvelle demande via l'URL Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Not Contain css=#commune Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} ... Page Should Not Contain css=#autocomplete-commune-id # TODO vérifier que le champ 'commune' n'apparait pas dans les nouvelles demandes de contentieux # activer l'option dossier_commune Depuis la page d'accueil admin admin # pour l'utilisateur admin Ajouter le paramètre depuis le menu option_dossier_commune true agglo # pour les autres utilisateurs Ajouter le paramètre depuis le menu option_dossier_commune true LIBRECOM Ajouter le paramètre depuis le menu option_dossier_commune true LOINCOM # limiter les communes associables à LIBRECOM Ajouter le paramètre depuis le menu param_communes 13095,45645,13909,13904,13901 LIBRECOM # En tant que guichet unique de LIBRECOM Depuis la page d'accueil aposteur aposteur # à l'ajout d'un dossier # vérifier que les communes non valides ne soient pas sélectionnables Depuis le contexte de nouvelle demande via l'URL Wait Until Element Is Visible css=#autocomplete-commune-search Input Text css=#autocomplete-commune-search Expiredcom Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=ul.ui-autocomplete li.ui-menu-item a Aucun résultat Input Text css=#autocomplete-commune-search Futurcom Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=ul.ui-autocomplete li.ui-menu-item a Aucun résultat Input Text css=#autocomplete-commune-search LibreCom 5e Arrondissement Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=ul.ui-autocomplete li.ui-menu-item a Aucun résultat Input Text css=#autocomplete-commune-search ${EMPTY} # vérifier que les communes valides (à la date courante) le sont Input Text css=#autocomplete-commune-search 13904 Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=ul.ui-autocomplete li.ui-menu-item a 13904 - LibreCom 4e Arrondissement # mais que les communes anciennes soient sélectionnables si la date de demande correspond Select From List By Label dossier_autorisation_type_detaille Déclaration préalable Wait Until Element Is Visible css=input#date_demande Input Text css=input#date_demande 01/01/${yyyy_past} Simulate Event css=input#date_demande change Input Text css=#autocomplete-commune-search Expiredcom Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain ... css=ul.ui-autocomplete li.ui-menu-item a 45645 - Expiredcom # Vérification de la remise à zéro du champ 'commune' # Dans le cas où le changement de 'date demande' n'affecte pas la présence de la commune # sélectionnée dans la liste des communes disponibles, le champ 'commune' n'est pas # remis à zéro Depuis le contexte de nouvelle demande via l'URL Wait Until Element Is Visible css=#autocomplete-commune-search Input Text css=#autocomplete-commune-search 13904 - LibreCom 4e Arrondissement Wait Until Element Is Visible css=ul.ui-autocomplete Click Element Until No More Element css=ul.ui-autocomplete li.ui-menu-item a Wait Until Form Value Should Be css=#autocomplete-commune-search 13904 - LibreCom 4e Arrondissement Select From List By Label dossier_autorisation_type_detaille Déclaration préalable Wait Until Element Is Visible css=input#date_demande Input Text css=input#date_demande 01/01/${yyyy_futur} Simulate Event css=input#date_demande change Wait Until Form Value Should Be css=#autocomplete-commune-search 13904 - LibreCom 4e Arrondissement # Dans le cas où le changement de 'date demande' affecte la présence de la commune # sélectionnée dans la liste des communes disponibles, le champ 'commune' est # remis à zéro et un message est affiché à l'utilisateur Input Text css=input#date_demande 01/01/${yyyy_past} Simulate Event css=input#date_demande change ${alert} = Handle Alert Should Be Equal As Strings ${alert} Les données saisies ne permettent pas de rattacher la demande à la commune sélectionnée. Wait Until Form Value Should Be css=#autocomplete-commune-search ${EMPTY} # ajouter un dossier sans saisir de commune # vérifier l'échec &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial &{args_petitionnaire} = Create Dictionary ... particulier_nom=Lacharité ... particulier_prenom=Juliette Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Click On Submit Button Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=div.ui-state-error p span.text La commune doit être définie. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=div.ui-state-error p span.text SAISIE NON ENREGISTRÉE La page ne doit pas contenir d'erreur # TODO ajouter un dossier avec une commune invalide et vérifier le message d'erreur # ajouter un premier dossier en saisissant une commune # vérifier le succès et l'association de la commune avec le DI et le DA Depuis la page d'accueil aposteur aposteur &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial ... commune=Librecom ${demande2_di} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} Depuis le contexte du dossier d'instruction ${demande2_di} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#commune LibreCom Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#dossier_libelle 013095 ${demande2_da} = Get Substring ${demande2_di} 0 -2 Depuis le contexte du dossier d'autorisation ${demande2_da} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#commune LibreCom # activer la numérotation manuelle des dossiers (pour l'admin/agglo) Depuis la page d'accueil admin admin Ajouter le paramètre depuis le menu option_dossier_saisie_numero true agglo # à l'ajout d'un dossier Depuis le contexte de nouvelle demande via l'URL # après avoir sélectionné la collectivité, le DAtd, et activer la saisie manuelle du numéro &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Certificat d'urbanisme ... demande_type=Dépôt Initial ... om_collectivite=LOINCOM &{args_petitionnaire} = Create Dictionary ... particulier_nom=Lacharité ... particulier_prenom=Juliette ... om_collectivite=LOINCOM Ajouter la nouvelle demande depuis le menu sans validation du formulaire ${args_demande} ${args_petitionnaire} Activer la saisie du numéro de dossier # vérifier que par défaut le code depcom est vide Wait Until Form Value Should Be css=#num_doss_code_depcom ${EMPTY} # vérifier que le changement de commune se répercute sur le numéro de dossier (code depcom) Wait Until Element Is Visible css=#autocomplete-commune-search Input Text css=#autocomplete-commune-search LibreCom Wait Until Element Is Visible css=ul.ui-autocomplete Click Element Until No More Element css=ul.ui-autocomplete li.ui-menu-item a Wait Until Form Value Should Be css=#num_doss_code_depcom 013095 Input Text css=#autocomplete-commune-search LoinCom Wait Until Element Is Visible css=ul.ui-autocomplete Click Element Until No More Element css=ul.ui-autocomplete li.ui-menu-item a Wait Until Form Value Should Be css=#num_doss_code_depcom 976095 # ajouter le dossier avec les éléments par défaut (hormis division et séquence, à saisir) # vérifier le succès et le numéro de dossier obtenu (devant correspondre) Input text css=#num_doss_division Y Input text css=#num_doss_sequence 1 Click On Submit Button Until Message Création du dossier d'instruction n ${demande3_di} = Get Text new_di # dans le listing des DI, faire une recherche sur le champ commune avec les deux codes communes # vérifier la présence des 2 dossiers dans les résultats Depuis le listing dossier_instruction Input Text commune 976,LibreCom Click On Search Button Element Should Be Visible xpath=//div[@id = "tab-dossier_instruction"]/descendant::a[normalize-space(text()) = "${demande2_di}"]/ancestor::tr/td/a[normalize-space(text()) = "LibreCom"] Element Should Be Visible xpath=//div[@id = "tab-dossier_instruction"]/descendant::a[normalize-space(text()) = "${demande3_di}"]/ancestor::tr/td/a[normalize-space(text()) = "LoinCom"] # TODO : vérifier les mêmes élements dans le listing des DA # ajouter les instructeurs pour pouvoir faire des affectations automatiques Ajouter la division depuis le menu X1 Division X1 null Chef null null Direction de LIBRECOM Ajouter l'utilisateur depuis le menu Atienne Gamelin atiennegamelin@openads-test.fr agamelin agamelin INSTRUCTEUR POLYVALENT COMMUNE LIBRECOM Ajouter l'instructeur depuis le menu Atienne Gamelin Division X1 instructeur Abdel Ledba Ajouter la division depuis le menu Y1 Division Y1 null Chef null null Direction de LOINCOM Ajouter l'utilisateur depuis le menu Nenée Pinette nenéepinette@openads-test.fr npinette npinette INSTRUCTEUR POLYVALENT COMMUNE LOINCOM Ajouter l'instructeur depuis le menu Nenée Pinette Division Y1 instructeur Oliot Toilo # ajouter une affectation automatique contenant le code INSEE d'une commune et un instructeur # qui n'est pas celui par défaut pour le type de DI/DA sélectionné Depuis la page d'accueil admin admin &{args_affectation} = Create Dictionary ... instructeur=Atienne Gamelin (X1) ... om_collectivite=LIBRECOM ... dossier_autorisation_type_detaille=Certificat d'urbanisme ... communes=13095 ... affectation_manuelle=Atienne Gamelin (X1) pour LibreCom Ajouter l'affectation depuis le menu ${args_affectation} # ajouter un dossier correspondant au code commune et au type de DI/DA spécifiés précédemment # vérifier le succès et que c'est bien l'instructeur défini dans l'affectation automatique qui # est associé au dossier Depuis la page d'accueil aposteur aposteur &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Certificat d'urbanisme ... demande_type=Dépôt Initial ... commune=LibreCom ... affectation_automatique=Atienne Gamelin (X1) pour LibreCom &{args_petitionnaire} = Create Dictionary ... particulier_nom=Lacharité ... particulier_prenom=Juliette ${demande4_di} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} ${demande4_instr} = Obtenir l'instructeur du dossier d'instruction ${demande4_di} Should Be True "${demande4_instr}" == "Atienne Gamelin (X1)" # ajouter une affectation automatique contenant le code département d'une commune et un instructeur # qui n'est pas celui par défaut pour le type de DI/DA sélectionné Depuis la page d'accueil admin admin &{args_affectation} = Create Dictionary ... instructeur=Nenée Pinette (Y1) ... om_collectivite=LOINCOM ... dossier_autorisation_type_detaille=Certificat d'urbanisme ... communes=976 Ajouter l'affectation depuis le menu ${args_affectation} Depuis la page d'accueil oecilo oecilo &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Certificat d'urbanisme ... demande_type=Dépôt Initial ... commune=LoinCom &{args_petitionnaire} = Create Dictionary ... particulier_nom=Lacharité ... particulier_prenom=Juliette ${demande5_di} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} ${demande5_instr} = Obtenir l'instructeur du dossier d'instruction ${demande5_di} Should Be True "${demande5_instr}" == "Nenée Pinette (Y1)" # TODO : vérifier qu'avec une date demande dans le passé et une commune plus valide au jour # courant, mais valide à la date de la demande, l'affectation automatique lié à cette # commune apparait bien, et que l'ajout du dossier avec tous ces paramètres se passe bien # TODO : vérifier que lorsque l'option dossier_commune est désactivée le champ 'commune' # n'apparait ni dans les dossiers, ni dans les recherches # désactiver l'option dossier_commune Depuis la page d'accueil admin admin # pour l'utilisateur admin &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_commune ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} # pour les autres utilisateurs &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_commune ... click_value=LIBRECOM Supprimer le paramètre (surcharge) ${param_args} &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_commune ... click_value=LOINCOM Supprimer le paramètre (surcharge) ${param_args} # désactiver la numérotation manuelle des dossiers (pour l'admin/agglo) &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_saisie_numero ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} Vérification du bon fonctionnement de la date de dépôt en mairie Depuis la page d'accueil admin admin # On active l'option option_date_depot_mairie &{param_values} = Create Dictionary ... libelle=option_date_depot_mairie ... valeur=true ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} # Ajout d'un dossier avec la date de dépôt en mairie à la date du jour &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... om_collectivite=MARSEILLE ... date_depot_mairie=${date_ddmmyyyy} &{args_petitionnaire} = Create Dictionary ... particulier_nom=TEST030NOM ... particulier_prenom=TEST030PRENOM ... om_collectivite=MARSEILLE ${di_date_depot_mairie} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} # On vérifie que la date de dépot en mairie est modifiable à la main dans le dossier d'instruction Depuis le contexte du dossier d'instruction ${di_date_depot_mairie} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#date_depot_mairie ${date_ddmmyyyy} # On vérifie que l'année ne peut pas être modifiée Click On Form Portlet Action dossier_instruction modifier Input Datepicker date_depot_mairie 16/02/2015 Click On Submit Button Error Message Should Contain L'année de la date de dépôt en mairie n'est pas modifiable. Error Message Should Contain SAISIE NON ENREGISTRÉE Click On Back Button ${date_annee_yyyy} = Get Time year ${date_depot_mairie} = Create Dictionary ... date_depot_mairie=16/02/${date_annee_yyyy} Modifier le dossier d'instruction ${di_date_depot_mairie} ${date_depot_mairie} Depuis le contexte du dossier d'instruction ${di_date_depot_mairie} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#date_depot_mairie ${date_depot_mairie.date_depot_mairie} ${date_depot_mairie} = Create Dictionary ... date_depot_mairie=${date_ddmmyyyy} Modifier le dossier d'instruction ${di_date_depot_mairie} ${date_depot_mairie} ${date_depot_mairie_for_calc} = Get Text date_depot_mairie # On ajoute une instruction qui majore le délai d'instruction &{args_action} = Create Dictionary ... action=majore_delai_instruction ... libelle=Majorer le délai d'instruction ... regle_delai=archive_delai+delai ... regle_accord_tacite=accord_tacite ... regle_date_limite=date_depot_mairie+delai+archive_delai Ajouter l'action depuis le menu ${args_action} @{etat_source} = Create List delai de notification envoye @{type_di} = Create List PCI - P - Initial &{args_evenement} = Create Dictionary ... libelle=Majorer le délai d'instruction ... etats_depuis_lequel_l_evenement_est_disponible=${etat_source} ... dossier_instruction_type=${type_di} ... delai=3 Mois ... action=Majorer le délai d'instruction Ajouter l'événement depuis le menu ${args_evenement} Ajouter une instruction au DI ${di_date_depot_mairie} Majorer le délai d'instruction # La date limite doit être à 5 mois de plus de celle calculé par défaut # calcul du jour identique 5 mois après (+5 mois) # On utilise la librairie python calendar afin de vérifier si l'année courante est bissextile # La fonction permettant de savoir si l'année est bissextile attends une valeur de type 'number' ${year_in_number} = Convert To Number ${date_annee_yyyy} ${next_year_in_number} = Evaluate ${year_in_number}+1 ${is_leap} = calendar.isleap ${year_in_number} ${is_next_year_leap} = calendar.isleap ${next_year_in_number} ${date_depot_mairie_for_calc_dmy} = Convert Date ${date_depot_mairie_for_calc} datetime date_format=%d/%m/%Y ${day_date_depot_mairie_for_calc} = Set Variable ${date_depot_mairie_for_calc_dmy.day} ${month_date_depot_mairie_for_calc} = Set Variable ${date_depot_mairie_for_calc_dmy.month} ${month_date_depot_mairie_for_calc} = Convert To Integer ${month_date_depot_mairie_for_calc} ${year_date_depot_mairie_for_calc} = Set Variable ${date_depot_mairie_for_calc_dmy.year} ${next_month} = Run Keyword If ${month_date_depot_mairie_for_calc} < 8 Evaluate ${month_date_depot_mairie_for_calc} + 5 ... ELSE IF ${month_date_depot_mairie_for_calc} == 12 Set Variable 5 ... ELSE IF ${month_date_depot_mairie_for_calc} == 11 Set Variable 4 ... ELSE IF ${month_date_depot_mairie_for_calc} == 10 Set Variable 3 ... ELSE IF ${month_date_depot_mairie_for_calc} == 9 Set Variable 2 ... ELSE IF ${month_date_depot_mairie_for_calc} == 8 Set Variable 1 ${next_month_year} = Run Keyword If ${month_date_depot_mairie_for_calc} < 8 Set Variable ${year_date_depot_mairie_for_calc} ... ELSE Evaluate ${year_date_depot_mairie_for_calc} + 1 # Si on tombe sur le mois de février ${day_date_depot_mairie_for_calc} = Run Keyword If (${day_date_depot_mairie_for_calc} == 31 or ${day_date_depot_mairie_for_calc} == 30 or ${day_date_depot_mairie_for_calc} == 29) and ${next_month} == 02 and ${is_next_year_leap} == False Set Variable 28 ... ELSE IF (${day_date_depot_mairie_for_calc} == 31 or ${day_date_depot_mairie_for_calc} == 30) and ${next_month} == 02 and ${is_next_year_leap} == True Set Variable 29 ... ELSE Set Variable ${day_date_depot_mairie_for_calc} ${next_month} = Set Variable If ${next_month} < 10 0${next_month} ${next_month} ${day_date_depot_mairie_for_calc} = Set Variable If ${day_date_depot_mairie_for_calc} < 10 0${day_date_depot_mairie_for_calc} ${day_date_depot_mairie_for_calc} ${next_month_date} = Set Variable ${next_month_year}-${next_month}-${day_date_depot_mairie_for_calc} ${date_depot_mairie_for_calc_calculated} = Convert Date ${next_month_date} result_format=%d/%m/%Y Depuis le contexte du dossier d'instruction ${di_date_depot_mairie} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain date_limite ${date_depot_mairie_for_calc_calculated} # On ajoute une instruction qui modifie le délai d'instruction &{args_action} = Create Dictionary ... action=modif_delai_instruction ... libelle=Modifier le délai d'instruction ... regle_delai=delai ... regle_accord_tacite=accord_tacite ... regle_date_limite=date_depot_mairie+delai Ajouter l'action depuis le menu ${args_action} @{etat_source} = Create List delai de notification envoye @{type_di} = Create List PCI - P - Initial &{args_evenement} = Create Dictionary ... libelle=Modifier le délai d'instruction ... etats_depuis_lequel_l_evenement_est_disponible=${etat_source} ... dossier_instruction_type=${type_di} ... delai=1 Mois ... action=Modifier le délai d'instruction Ajouter l'événement depuis le menu ${args_evenement} Ajouter une instruction au DI ${di_date_depot_mairie} Modifier le délai d'instruction # La date limite doit être à 1 mois de moins de celle calculé par défaut # On utilise la date de dépôt en mairie afin de calculer la nouvelle date limite d'instruction ${date_depot_mairie_for_calc_dmy} = Convert Date ${date_depot_mairie_for_calc} datetime date_format=%d/%m/%Y ${day_date_depot_mairie_for_calc} = Set Variable ${date_depot_mairie_for_calc_dmy.day} ${month_date_depot_mairie_for_calc} = Set Variable ${date_depot_mairie_for_calc_dmy.month} ${month_date_depot_mairie_for_calc} = Convert To Integer ${month_date_depot_mairie_for_calc} ${year_date_depot_mairie_for_calc} = Set Variable ${date_depot_mairie_for_calc_dmy.year} ${next_month} = Run Keyword If ${month_date_depot_mairie_for_calc} < 12 Evaluate ${month_date_depot_mairie_for_calc} + 1 ... ELSE IF ${month_date_depot_mairie_for_calc} == 12 Set Variable 1 # Si on tombe sur le mois de février ${day_date_depot_mairie_for_calc} = Run Keyword If (${day_date_depot_mairie_for_calc} == 31 or ${day_date_depot_mairie_for_calc} == 30 or ${day_date_depot_mairie_for_calc} == 29) and ${next_month} == 02 and ${is_leap} == False Set Variable 28 ... ELSE IF (${day_date_depot_mairie_for_calc} == 31 or ${day_date_depot_mairie_for_calc} == 30) and ${next_month} == 02 and ${is_leap} == True Set Variable 29 ... ELSE Set Variable ${day_date_depot_mairie_for_calc} ${next_month_year} = Run Keyword If ${month_date_depot_mairie_for_calc} < 12 Set Variable ${year_date_depot_mairie_for_calc} ... ELSE Evaluate ${year_date_depot_mairie_for_calc} + 1 ${next_month} = Set Variable If ${next_month} < 10 0${next_month} ${next_month} ${day_date_depot_mairie_for_calc} = Set Variable If ${day_date_depot_mairie_for_calc} < 10 0${day_date_depot_mairie_for_calc} ${day_date_depot_mairie_for_calc} ${next_month_date} = Set Variable ${next_month_year}-${next_month}-${day_date_depot_mairie_for_calc} ${date_depot_mairie_for_calc_calculated} = Convert Date ${next_month_date} result_format=%d/%m/%Y Depuis le contexte du dossier d'instruction ${di_date_depot_mairie} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain date_limite ${date_depot_mairie_for_calc_calculated} &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_date_depot_mairie ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} Vérification de la prise en compte de l'année de la date de dépôt en mairie lors de la numérotation manuelle Depuis la page d'accueil admin admin # Active l'option de numérotation forcée &{param_values} = Create Dictionary ... libelle=option_dossier_saisie_numero ... valeur=true ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} # On active l'option option_date_depot_mairie &{param_values} = Create Dictionary ... libelle=option_date_depot_mairie ... valeur=true ... om_collectivite=agglo Ajouter le paramètre depuis le menu (surcharge) ${param_values} # On vérifie que lorsque les deux options sont activées elles fonctionnent correctement entre elles Go To Submenu In Menu guichet_unique nouveau-dossier Select From List By Label om_collectivite MARSEILLE Select From List By Label dossier_autorisation_type_detaille DECLARATION PREALABLE SIMPLE Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible date_depot_mairie Activer la saisie du numéro de dossier ${date_annee_yyyy} = Get Time year ${date_annee_yy} = Get Substring ${date_annee_yyyy} -2 Wait Until Form Value Should Be css=#num_doss_annee ${date_annee_yy} Input Datepicker date_depot_mairie 16/02/2015 Input Datepicker date_demande ${date_ddmmyyyy} Wait Until Form Value Should Be css=#num_doss_annee 15 &{args_petitionnaire} = Create Dictionary ... om_collectivite=MARSEILLE ... particulier_civilite=Monsieur ... particulier_nom=DURAND Ajouter le demandeur petitionnaire_principal ${args_petitionnaire} Input Text num_doss_division A Click On Submit Button Valid Message Should Contain DP 013055 15 A0001 Click Element link_demande_dossier_instruction Element Should Contain dossier_libelle DP 013055 15 A0001P0 &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_date_depot_mairie ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args} &{param_args} = Create Dictionary ... selection_col=libellé ... search_value=option_dossier_saisie_numero ... click_value=agglo Supprimer le paramètre (surcharge) ${param_args}