*** Settings *** Documentation Tests relatifs au formulaire d'ajout d'une demande de nouveau dossier. # 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 *** Keywords *** Activer la saisie du numéro de dossier [Documentation] Permet d'activer la saisie du numéro de dossier par sections sur le formulaire ... d'ajout d'une nouvelle demande Click Element css=#num_doss_manuel Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Not Be Visible css=#num_doss_sequence[disabled="disabled"] *** Test Cases *** Initialisation du paramétrage - Gestion de la commune associée au dossier [Documentation] Prépare le paramétrage nécessaires pour faire fonctionner le test case : ... Gestion de la commune associée au dossier. ... Ajoute 2 collectivités LIBRECOM et LOINCOM et leur paramétrage (instructeur, guichet, commune, etc) ... Active les options : option_afficher_division et option_dossier_commune (agglo, LIBRECOM, LOINCOM) 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 Gerer le paramètre par WS ${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} # pour l'utilisateur admin &{param_commune} = Create Dictionary ... libelle=option_dossier_commune ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${param_commune} # pour les autres utilisateurs &{param_commune} = Create Dictionary ... libelle=option_dossier_commune ... valeur=true ... om_collectivite=LIBRECOM Gerer le paramètre par WS ${param_commune} &{param_commune} = Create Dictionary ... libelle=option_dossier_commune ... valeur=true ... om_collectivite=LOINCOM Gerer le paramètre par WS ${param_commune} Création du jeu de données Commune_03 [Documentation] L'objet de ce 'Test Case' est de constituer le jeu de données Run Keyword If '${CONTEXT_COMMUNE_CREATED}' == 'False' Initialisation du jeu de données Commune Set Global Variable ${CONTEXT_COMMUNE_CREATED} True Gestion de la commune associée au dossier - Communes Selectionnables [Documentation] Vérifie le bon fonctionnement de la gestion du ... champ 'commune' associé au dossier. # 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 # limiter les communes associables à LIBRECOM &{param_commune} = Create Dictionary ... libelle=param_communes ... valeur=13095,45645,13909,13904,13901 ... om_collectivite=LIBRECOM Gerer le paramètre par WS ${param_commune} # à 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 commune_chosen Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Not Contain Element css=div#commune_loader_div.loader Select From Chosen List Should Not Contain commune 45645 - Expiredcom Click Element css=#commune_chosen .info-16.chosen-tooltip Select From Chosen List Should Not Contain commune 46646 - Futurcom Click Element css=#commune_chosen .info-16.chosen-tooltip Select From Chosen List Should Not Contain commune 13905 - LibreCom 5e Arrondissement Click Element css=#commune_chosen .info-16.chosen-tooltip Select From Chosen List Should Contain commune 13904 - LibreCom 4e Arrondissement Click Element css=#commune_chosen .info-16.chosen-tooltip # mais que les communes anciennes soient sélectionnables si la date de demande correspond Select From Chosen List dossier_autorisation_type_detaille DP - Déclaration préalable 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 Input Text until text is correct css=input#date_demande 02/01/2020 Simulate Event css=input#date_demande change Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Not Contain Element css=div#commune_loader_div.loader ${chosen_val} = Get Value css=select#commune Should Be Equal ${chosen_val} ${EMPTY} Select From Chosen List Should Contain commune 45645 - Expiredcom Gestion de la commune associée au dossier - Remise à zéro du champ commune ${yyyy} = Get Time year ${yyyy_futur} = Evaluate ${yyyy}+1 ${yyyy_past} = Evaluate ${yyyy}-1 # 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 # En tant que guichet unique de LIBRECOM Depuis la page d'accueil aposteur aposteur Depuis le contexte de nouvelle demande via l'URL Wait Until Element Is Visible commune_chosen Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Not Contain Element css=div#commune_loader_div.loader Select From Chosen List commune 13904 - LibreCom 4e Arrondissement Select From Chosen List dossier_autorisation_type_detaille DP - Déclaration préalable 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 Input Text until text is correct css=input#date_demande 01/01/${yyyy_futur} Simulate Event css=input#date_demande change Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Not Contain Element css=div#commune_loader_div.loader Click Element css=#commune_chosen .search-choice-close Select From Chosen List commune 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 until text is correct 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=select#commune ${EMPTY} Gestion de la commune associée au dossier - Ajouter un dossier sans saisir de commune # ajouter un dossier sans saisir de commune # vérifier l'échec &{args_demande} = Create Dictionary ... dossier_autorisation_type_detaille=DP - Déclaration préalable &{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 Gestion de la commune associée au dossier - Vérifier le succès et l'association de la commune avec le DI et le DA # 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 ... om_collectivite=LIBRECOM ... dossier_autorisation_type_detaille=Déclaration préalable ... demande_type=Dépôt Initial ... commune=13095 - LibreCom &{args_petitionnaire} = Create Dictionary ... om_collectivite=LIBRECOM ... particulier_nom=Lacharité ... particulier_prenom=Juliette ${demande2_di} = Ajouter la demande par WS ${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 # dans le listing des DI, faire une recherche sur le champ commune avec les deux codes communes # vérifier la présence du 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"] Activation du paramètre : option_dossier_saisie_numero # activer la numérotation manuelle des dossiers (pour l'admin/agglo) &{param_saisie_complete} = Create Dictionary ... libelle=option_dossier_saisie_numero ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${param_saisie_complete} Gestion de la commune associée au dossier - Vérifier le lien Commune et Saisie du Numéro de dossier Depuis la page d'accueil admin admin # à 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=CU - Certificat d'urbanisme ... 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} # 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 commune_chosen Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Not Contain Element css=div#commune_loader_div.loader Select From Chosen List commune 13095 - LibreCom Wait Until Form Value Should Be css=#num_doss_code_depcom 013095 Select From Chosen List commune 97695 - LoinCom 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) Activer la saisie du numéro de dossier 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()) = "${demande3_di}"]/ancestor::tr/td/a[normalize-space(text()) = "LoinCom"] Gestion de la commune associée au dossier - Vérifier les affectations automatiques en lien avec les communes # TODO : vérifier les mêmes élements dans le listing des DA # ajouter les instructeurs pour pouvoir faire des affectations automatiques &{param_division} = Create Dictionary ... code=X1 ... libelle=Division X1 ... chef=Chef ... direction=Direction de LIBRECOM Gerer la division par WS ${param_division} &{args_utilisateur_instr} = Create Dictionary ... nom=Atienne Gamelin ... email=atiennegamelin@openads-test.fr ... login=agamelin ... pwd=agamelin ... om_collectivite=LIBRECOM ... om_profil=INSTRUCTEUR POLYVALENT COMMUNE Gerer l'utilisateur par WS ${args_utilisateur_instr} &{args_instructeur} = Create Dictionary ... nom=Atienne Gamelin ... division=${param_division.libelle} ... qualite=instructeur ... om_utilisateur=${args_utilisateur_instr.nom} Gerer l'instructeur par WS ${args_instructeur} &{param_division} = Create Dictionary ... code=Y1 ... libelle=Division Y1 ... chef=Chef ... direction=Direction de LOINCOM Gerer la division par WS ${param_division} &{args_utilisateur_instr} = Create Dictionary ... nom=Nenée Pinette ... email=nenéepinette@openads-test.fr ... login=npinette ... pwd=npinette ... om_collectivite=LOINCOM ... om_profil=INSTRUCTEUR POLYVALENT COMMUNE Gerer l'utilisateur par WS ${args_utilisateur_instr} &{args_instructeur} = Create Dictionary ... nom=Nenée Pinette ... division=${param_division.libelle} ... qualite=instructeur ... om_utilisateur=${args_utilisateur_instr.nom} Gerer l'instructeur par WS ${args_instructeur} # 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=CU - Certificat d'urbanisme ... communes=13095 ... affectation_manuelle=Atienne Gamelin (X1) pour LibreCom Gerer une affectation automatique par WS ${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=CU - Certificat d'urbanisme ... commune=13095 - 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=CU - Certificat d'urbanisme ... communes=976 Gerer une affectation automatique par WS ${args_affectation} Depuis la page d'accueil oecilo oecilo &{args_demande} = Create Dictionary ... om_collectivite=LOINCOM ... dossier_autorisation_type_detaille=Certificat d'urbanisme ... demande_type=Dépôt Initial ... commune=97695 - LoinCom &{args_petitionnaire} = Create Dictionary ... om_collectivite=LOINCOM ... particulier_nom=Lacharité ... particulier_prenom=Juliette ${demande5_di} = Ajouter la demande par WS ${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ès-activation du paramètre option_dossier_saisie_numero # désactiver la numérotation manuelle des dossiers (pour l'admin/agglo) &{param_args} = Create Dictionary ... delete=true ... libelle=option_dossier_saisie_numero ... om_collectivite=agglo Gerer le paramètre par WS ${param_args} Réinitialisation du paramétrage - Gestion de la commune associée au dossier [Documentation] Désactive les options qui ont été activées pour faire fonctionner ... le test case : Gestion de la commune associée au dossier. # désactiver l'option dossier_commune # pour l'utilisateur admin &{param_commune} = Create Dictionary ... delete=true ... libelle=option_dossier_commune ... om_collectivite=agglo Gerer le paramètre par WS ${param_commune} # pour les autres utilisateurs &{param_args} = Create Dictionary ... delete=true ... libelle=option_dossier_commune ... om_collectivite=LIBRECOM Gerer le paramètre par WS ${param_args} &{param_args} = Create Dictionary ... delete=true ... libelle=option_dossier_commune ... om_collectivite=LOINCOM Gerer le paramètre par WS ${param_args} &{param_division} = Create Dictionary ... libelle=option_afficher_division ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${param_division}