*** Settings *** Documentation Test de task. # 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 *** Test Cases *** Activation de l'option 'option_notification_piece_numerisee' [Documentation] Il est nécessaire de faire cette manipulation pour éviter le ... FAIL: Element with locator 'dossier_message_id' not found. &{om_param} = Create Dictionary ... libelle=option_notification_piece_numerisee ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${om_param} Depuis la page d'accueil admin admin Rendre les types de dossier d'autorisation détaillés utilisés transmissible à Plat'AU PCI Ajout de commentaire aux tâches du moniteur [Documentation] Vérifie l'implémentation du champ commentaire ainsi que la modification de ce champ ... pour un tache du moniteur Plat'AU/IDE'AU Depuis la page d'accueil admin admin &{args_dossier} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_adresse_localite=TEST300LieuComments &{args_petitionnaire1} = Create Dictionary ... qualite=particulier ... particulier_nom=Terrieur ... particulier_prenom=Alain ... localite=TEST300Localite ... om_collectivite=MARSEILLE ${di_comments} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire1} &{donnees_techniques_values} = Create Dictionary ... enga_decla_lieu=TEST300engadelalieu ... enga_decla_date=${date_ddmmyyyy} Saisir les données techniques du DI ${di_comments} ${donnees_techniques_values} ${di_comments_sans_espace} = Sans espace ${di_comments} ${di_comments_da} = Replace String Using Regexp ${di_comments_sans_espace} [A-Z][0-9]+$ ${EMPTY} Set Suite Variable ${di_comments} Set Suite Variable ${di_comments_sans_espace} Set Suite Variable ${di_comments_da} #On accède au listing du moniteur Plat'AU et on vérifie que la colonne "Commentaire" existe bien. Depuis le menu Moniteur Plat'AU Element Should Contain css=th.title.col-8.lastcol commentaire #On effectue une recherche avancée sur le dossier d'instruction précedemment créé. Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier Wait Until Element Is Visible css=div#adv-search-adv-fields select#type # On remplit Input Text css=div#adv-search-adv-fields input#dossier ${di_comments_da} Select From List By Label css=div#adv-search-adv-fields select#type Création DA # On valide le formulaire de recherche Click On Search Button #On vérifie que la tâche que l'on recherche apparait dans le listing. Element Should Contain css=td.col-1 a.lienTable Création DA Element Should Contain css=td.col-4 a.lienTable ${di_comments_da} &{comments_task_values} = Create Dictionary ... type=creation_DA ... dossier=${di_comments_da} ... state=new ... object_id=${di_comments_da} ... link_dossier=${di_comments_da} ... stream=output #On accède à la tâche afin de la modifier Depuis le contexte d'une task à partir de la recherche avancée ${comments_task_values} ${task_id} = Get Text css=#task Click On Form Portlet Action task modifier #On ajoute un commentaire dans le textarea et on valide la modification Input Text css=textarea#comment.champFormulaire C'est un commentaire de test avec des apostrophes et caractères spéciaux ! Click On Submit Button #On vérifie que dans le résumé de la tâche, le commentaire soit bien mis à jour. Element Text Should Be css=span#comment C'est un commentaire de test avec des apostrophes et caractères spéciaux ! #On retourne sur le listing global et on recherche à nouveau notre tâche. On peut ainsi vérifier # si le commentaire apparait correctement dans la colonne "Commentaire" Depuis le menu Moniteur Plat'AU Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier Wait Until Element Is Visible css=div#adv-search-adv-fields select#type # On remplit Input Text css=div#adv-search-adv-fields input#dossier ${di_comments_da} Select From List By Label css=div#adv-search-adv-fields select#type Création DA # On valide le formulaire de recherche Click On Search Button #On vérifie le contenu de la colonne commentaire. Element Text Should Be css=td.col-8.lastcol C'est un commentaire de test avec des apostrophes et caractères spéciaux ! # Modification de l'état et du commentaire depuis l'action 997 &{task_data} = Create Dictionary ... state=debug ... comment=C'est un autre commentaire de test avec des apostrophes et caractères spéciaux ! ${COOKIE} = Get Cookie ${SESSION_COOKIE} ${cookies} = Create Dictionary ${SESSION_COOKIE}=${COOKIE.value} ${session} = Set Variable ${PROJECT_NAME}_web_ihm Create Session ${session} ${PROJECT_URL} cookies=${cookies} ${headers} = Create Dictionary Content-Type=application/x-www-form-urlencoded ${response} = Post Request ${session} /app/index.php?module=form&obj=task&action=997&idx=${task_id} data=${task_data} headers=${headers} Depuis le contexte de la task ${task_id} Element Text Should Be css=span#comment C'est un autre commentaire de test avec des apostrophes et caractères spéciaux ! TNR vérification que le lien du dossier fonctionne correctement [Documentation] Test les différents cas pour lequel on a un lien vers le dossier ... qui s'affiche en consultation d'une tâche. Les cas sont les suivants : ... Cas 1 : tâche Sortante avec un numéro de dossier d'autorisation (DA) -> le numéro ... est cliquable et redirige l'utilisateur vers le dossier d'autorisation ... Cas 2 : tâche Sortante avec un numéro de dossier d'instruction (DI) -> le numéro ... est cliquable et renvoie l'utilisateur vers le dossier d'instruction ... Cas 3 : tâche Sortante avec un numéro de DA et le DA n'existe plus -> le numéro est ... affiché mais ce n'est pas un lien ... Cas 4 : tâche Sortante avec un numéro de DI et le DI n'existe plus -> le numéro est ... affiché mais ce n'est pas un lien ... Cas 5 : tâche entrante avec un numéro de DI existant dans l'application -> le numéro ... est cliquable et renvoie l'utilisateur vers le DI ... Cas 6 : tâche entrante avec un numéro de DI non existant dans l'application -> le numéro est ... affiché mais ce n'est pas un lien ... Cas 7 : tâche entrante sans numéro de dossier et sans external UID permettant de le récupérer ... -> pas de numéro et pas de lien affiché dans la synthèse de la tâche ... Cas 8 : tâche entrante pour laquelle un numéro de dossier a été récupéré à l'aide des ... external UID de la tâche et où le DI existe -> le numéro est cliquable et ... renvoie l'utilisateur vers le DI ... Cas 9 : tâche entrante pour laquelle un numéro de dossier a été récupéré à l'aide des ... external UID de la tâche et où le DI n'existe pas -> le numéro n'est pas cliquable ... Cas 10 : tâche entrante de type portal pour laquelle un numéro de dossier a été récupéré ... à l'aide des external UID de la tâche et où le DI existe -> le numéro est pas cliquable # Création d'un dossier transmissible à plat'AU. La création de ce dossier entraine # l'ajout de nouvelles tâches. # La tâche creation_DA sert à tester les cas 1 et 3 # La tâche creation_DI sert à tester les cas 2 et 4 &{args_dossier} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... terrain_adresse_localite=TEST300AdresseLocalite &{args_petitionnaire} = Create Dictionary ... qualite=particulier ... particulier_nom=TEST300TASKNOM05 ... particulier_prenom=TEST300TASKPRENOM05 ... localite=TEST300Localite ... om_collectivite=MARSEILLE ${di_lie_taches} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire} # Récupération du numéro de dossier sans espace et du numéro de dossier d'autorisation # à partir du numéro de dossier fourni à la création du dossier ${di_se} = Sans espace ${di_lie_taches} ${da_lie_taches} = Replace String Using Regexp ${di_lie_taches} [A-Z][0-9]+$ ${EMPTY} ${da_se} = Sans espace ${da_lie_taches} # Ajout d'un élément dans la table lien_id_interne_uid_externe faisant référence # à ce dossier. # Cette référence permettra de tester les tâches en input (cas 5 à 9) ${lien_dossier_payload} = Create Dictionary ... object=dossier ... object_id=${di_se} ... external_uid=000-MMM-10 ... dossier=${di_se} ... category=platau Ajouter un external UID ${lien_dossier_payload} # Cas 1 : tâches entrante avec un numéro de DA existant # On accède à cette tâche et on vérifie que le lien vers le dossier est présent # sur le formulaire de consultation de la tâche. Vérifie également que cliquer # sur ce lien redirige bien vers le formulaire de consultation du dossier # d'autorisation &{task_values_cas1} = Create Dictionary ... type=creation_DA ... dossier=${da_se} ... stream=output Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas1} # Vérifie l'existance du lien La page ne doit pas contenir d'erreur Element Should Contain css=#dossier + a ${da_se} ${id_creation_DA} = Get Text css=#task # Test la redirection Click Link ${da_se} # Temporisation pour s'assurer que la page a bien le temps de se charger Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=form#dossier_autorisation #dossier_autorisation_libelle ${da_lie_taches} # Cas 2 : tâches entrante avec un numéro de DI existant # On accède à cette tâche et on vérifie que le lien vers le dossier est présent # sur le formulaire de consultation de la tâche. Vérifie également que cliquer # sur ce lien redirige bien vers le formulaire de consultation du dossier &{task_values_cas2} = Create Dictionary ... type=creation_DI ... dossier=${di_se} ... stream=output Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas2} La page ne doit pas contenir d'erreur Element Should Contain css=#dossier + a ${di_se} Click Link ${di_se} # Temporisation pour s'assurer que la page a bien le temps de se charger Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#fieldset-form-dossier_instruction-dossier-d_instruction #dossier_libelle ${di_lie_taches} # Cas 5 : Tâche entrante avec un numéro de dossier existant dans l'application # Création d'une tâche faisant référence au dossier créé précedemment # Récupération de la payload d'une tâche create_DI_for_consultation et modification # du numéro et de l'external uid du dossier pour qu'ils correspondent à ceux ajouté # en début de test ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_ref.txt ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-MMM-10 ${json_payload} = Replace String ${json_payload} PC0130552007777P0 ${di_se} ${payload_dict} = To Json ${json_payload} ${task_values} = Create Dictionary ... type=create_DI_for_consultation ... json_payload=${json_payload} ... dossier=${di_se} ${task_id_cas5} = Ajouter la tâche par WS ${task_values} # Accède à la tâche, vérifie qu'il existe bien un lien vers le dossier # Vérifie également que cliquer sur ce lien renvoie vers le formulaire # consultation du DI ${task_values} = Create Dictionary ... type=create_DI_for_consultation ... state=new ... dossier=${di_se} ... stream=input ... task=${task_id_cas5} Depuis le contexte d'une task à partir de la recherche avancée ${task_values} La page ne doit pas contenir d'erreur Element Should Contain css=#dossier + a ${di_se} Click Link ${di_se} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#fieldset-form-dossier_instruction-dossier-d_instruction #dossier_libelle ${di_lie_taches} # Cas 7 : tâche entrante pour laquelle le numéro de dossier n'a pas été récupéré # via l'external uid de sa payload # En consultation de la tâche il ne doit pas y avoir de numéro de dossier visible ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-000-00 ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id_cas7} = Ajouter la tâche par WS ${task_values} # Accéde à la tâche et vérifie que le numéro de dossier n'est pas rempli Depuis le contexte de la task ${task_id_cas7} La page ne doit pas contenir d'erreur Element Should Contain css=#dossier ${EMPTY} # Cas 8 : tâche entrante pour laquelle le numéro de dossier a été récupéré via l'external uid # dossier renseignée dans sa payload # Le numéro de dossier doit être visible et cliquable en consultation de la tâche # Récupère le template de payload JSON et le transforme en dictionnaire # Modifie la payload du json pour y ajouter l'external UID faisant référence au dossier # créé pour ce test ${json_payload} = Replace String ${json_payload} 000-000-00 000-MMM-10 ${task_values} = Create Dictionary ... type=add_piece ... json_payload=${json_payload} ${task_id_cas8} = Ajouter la tâche par WS ${task_values} # Accéde à la tâche et vérifie la présence du numéro de dossier et le fonctionnement du lien Depuis le contexte de la task ${task_id_cas8} La page ne doit pas contenir d'erreur Element Should Contain css=#dossier + a ${di_se} Click Link ${di_se} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#fieldset-form-dossier_instruction-dossier-d_instruction #dossier_libelle ${di_lie_taches} # Fait en sorte que les taches ne soit pas traité pour ne pas provoquer # des erreurs lors de futur déclenchement des tâches &{task_values_modif} = Create Dictionary ... state=brouillon Modifier la task ${task_id_cas8} ${task_values_modif} Modifier la task ${task_id_cas7} ${task_values_modif} # Activation de l'option de suppression des dossiers &{options} = Create Dictionary ... libelle=option_suppression_dossier_instruction ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${options} # Suppression du dossier. Les tâches liées a ce dossier ne le seront plus. Supprimer le dossier d'instruction ${di_lie_taches} Le dossier d'instruction ne doit pas exister ${di_lie_taches} # Cas 3 : tâche Sortante avec un numéro de DA non existant dans l'application. # Réutilise la tâche créée pour le cas 1. Cette tâche n'est plus liée au # dossier car il a été supprimé. # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas1} La page ne doit pas contenir d'erreur Page Should Not Contain Element css=#dossier + a Element Should Contain css=#dossier + span ${da_se} # Cas 4 : tâche Sortante avec un numéro de DI non existant dans l'application. # Réutilise la tâche créée pour le cas 2. Cette tâche n'est plus liée au # dossier car il a été supprimé. # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas2} La page ne doit pas contenir d'erreur Page Should Not Contain Element css=#dossier + a Element Should Contain css=#dossier + span ${di_se} # Cas 6 : tâche entrante avec un numéro de DI non existant dans l'application. # Réutilise la tâche créée pour le cas 5. Cette tâche n'est plus liée au # dossier car il a été supprimé. # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien Depuis le contexte de la task ${task_id_cas5} La page ne doit pas contenir d'erreur Element Should Contain css=#dossier + span ${di_se} # Cas 9 : tâche entrante pour laquelle un numéro de dossier a été récupéré # à l'aide des external UID # Réutilise la tâche créée pour le cas 7. Cette tâche n'est plus liée au # dossier car il a été supprimé. # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien Depuis le contexte de la task ${task_id_cas8} La page ne doit pas contenir d'erreur Element Should Contain css=#dossier + span ${di_se} # Cas 10 : tache entrante de type portal pour laquelle un numero de dossier a été récuperé # Le numéro de dossier doit être visible et cliquable en consultation de la tâche # Récupère le template de payload JSON et le transforme en dictionnaire. Créé # la tâche avec cette payload et déclenche le traitement pour créer le dossier. ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}portal_task_create_di.json &{platau_type_demande_initial} = Create Dictionary ... libelle=platau_type_demande_initial_PCI ... valeur=DI ... om_collectivite=agglo Gerer le paramètre par WS ${platau_type_demande_initial} ${task_values} = Create Dictionary ... type=create_DI ... json_payload=${json_payload} ... category=portal ${task_id_cas10} = Ajouter la tâche par WS ${task_values} # Avant traitement le numéro de dossier ne dois pas être rempli ni cliquable Depuis le contexte de la task ${task_id_cas10} IDE'AU Page Should Not Contain Element css=#dossier + a Element Should Contain css=#dossier ${EMPTY} # Déclenchement de la tâche et vérification de la présence du numéro de dossier # cliquable Déclencher le traitement des tâches par WS Depuis le contexte de la task ${task_id_cas10} IDE'AU La page ne doit pas contenir d'erreur # Comme on ne connaît pas le numéro de dossier on vérifie qu'il s'agit du bon # en se basant sur les données de la payload Click Link css=#dossier + a # Temporisation pour s'assurer que la page a bien le temps de se charger Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Avenue Plop, 13000 TNR vérification que la création de dossiers non transmissible n'entraine pas une tache Création DA [Documentation] Vérifie que lorsqu'un dossier est créé, si ce n'est pas un type de dossier ... transmissible à Plat'Au alors il n'y a pas de tâche Création DA ajoutée à la liste des ... task # Tout les types de dossier ont été rendu non transmissible au test précédent # n'importe quel type de dossier peut donc être utilisé Depuis la page d'accueil admin admin # Création d'un dossier non transmissible &{args_dossier} = Create Dictionary ... om_collectivite=MARSEILLE ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes ... demande_type=Dépôt Initial ... depot_electronique=true ... source_depot=platau &{args_petitionnaire1} = Create Dictionary ... qualite=particulier ... particulier_nom=Sirois ... particulier_prenom=Eugenia ... om_collectivite=MARSEILLE ${di} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire1} # Vérification de l'absence de task Création DA lié au dossier Depuis le menu Moniteur Plat'AU # Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier Wait Until Element Is Visible css=div#adv-search-adv-fields select#type # On remplit ${di_sans_espace} = Sans espace ${di} ${di_da} = Replace String Using Regexp ${di_sans_espace} [A-Z][0-9]+$ ${EMPTY} Select From List By Label css=#type Création DA Input Text css=#dossier ${di_da} Select From List By Label css=#state à traiter Select From List By Label css=#stream Sortant # On valide le formulaire de recherche Click On Search Button # Aucune tache d'ajout de pièce ne doit être trouvé Element Should Contain css=#tab-task Aucun enregistrement. Rendre les types de dossier d'autorisation détaillés utilisés non transmissible à Plat'AU [Documentation] Il est nécessaire de faire cette manipulation pour revenir à un état normal Depuis la page d'accueil admin admin &{args_type_DA_detaille_modification} = Create Dictionary ... dossier_platau=false Modifier type de dossier d'autorisation détaillé PCI ${args_type_DA_detaille_modification} Désactivation de l'option 'option_notification_piece_numerisee' [Documentation] Il est nécessaire de faire cette manipulation pour éviter le ... FAIL: Element with locator 'dossier_message_id' not found. &{om_param} = Create Dictionary ... libelle=option_notification_piece_numerisee ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${om_param}