*** Settings *** Documentation Vérification que tous les documents sont bien utilisables ... depuis le sous-onglet Dossier final de Pièces & Documents Resource resources/resources.robot Suite Setup Run Keywords ... For Suite Setup ... AND Composition du jeu de données Suite Teardown Run Keywords ... Décomposition du jeu de données ... AND For Suite Teardown *** Keywords *** Composition du jeu de données &{om_param} = Create Dictionary ... libelle=option_notification_piece_numerisee ... valeur=true ... om_collectivite=agglo Gerer le paramètre par WS ${om_param} &{param_values} = Create Dictionary ... libelle=id_avis_consultation_tacite ... valeur=4 ... om_collectivite=agglo Gerer le paramètre par WS ${param_values} &{args_petitionnaire} = Create Dictionary ... particulier_nom=Alric ... particulier_prenom=Lily-June ... om_collectivite=MARSEILLE &{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_demande=01/01/2018 ${di} = Ajouter la demande par WS ${args_demande} ${args_petitionnaire} Set Suite Variable ${di} # Vérification que lorsqu'un document d'instruction est récupéré, # si celui-ci n'a pas de date de finalisation, # alors il doit être traité comme les autres documents sans date (rapport d'instruction) Depuis la page d'accueil admin admin Ajouter une instruction au DI et la finaliser ${di} Consultation service d'hygiène municipal ${date_finalisation_instr} = Set Variable ${EMPTY} &{date_instruction} = Create Dictionary ... date_finalisation_courrier=${date_finalisation_instr} Modifier le suivi des dates ${di} Consultation service d'hygiène municipal ${date_instruction} # Modification de la date de finalisation de l'instruction pour pouvoir vérifier si la bonne # date est affiché dans l'onglet pièces & documents ${date_finalisation_instr} = Set Variable 02/06/2001 Set Suite Variable ${date_finalisation_instr} &{date_instruction} = Create Dictionary ... date_finalisation_courrier=${date_finalisation_instr} ... date_envoi_signature=03/06/2001 ... date_retour_signature=04/06/2001 Modifier le suivi des dates ${di} Notification du delai legal maison individuelle ${date_instruction} # Charger des pièces &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... document_numerise_type=arrêté ... date_creation=05/05/2018 Ajouter une pièce depuis le dossier d'instruction ${di} ${document_numerise_values} &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... document_numerise_type=arrêté ... date_creation=15/03/2018 Ajouter une pièce depuis le dossier d'instruction ${di} ${document_numerise_values} # Faire des demandes de consultation pour inf, pour consu avec avis rendu # Pour conformité Ajouter une consultation depuis un dossier ${di} 59.01 - Direction de l'Eau et de l'Assainissement # Rendre un avis à l'avis attendu &{args_avis_consultation} = Create Dictionary ... avis_consultation=Favorable ... fichier_upload=testImportManuel.pdf Depuis la page d'accueil consu consu Rendre l'avis sur la consultation du dossier ${di} ${args_avis_consultation} # Consultation avec Avis tacite Depuis la page d'accueil admin admin Ajouter une consultation depuis un dossier ${di} 59.01 - Direction de l'Eau et de l'Assainissement &{args_avis_consultation} = Create Dictionary ... avis_consultation=Tacite Depuis la page d'accueil consu consu Rendre l'avis sur la consultation du dossier ${di} ${args_avis_consultation} # Avec avis attendu sans retour d'avis Depuis la page d'accueil admin admin Depuis l'onglet consultation du dossier ${di} Ajouter une consultation depuis le listing des consultations 59.01 - SERAM 03/02/2018 #Pour information Depuis l'onglet consultation du dossier ${di} Ajouter une consultation depuis le listing des consultations 59.12 - Direction de la Propreté Urbaine 15/02/2018 # Ajout d'une date de retour &{date_retour} = Create Dictionary ... date_retour=16/03/2018 Modifier la consultation ${date_retour} Click On Back Button In Subform # Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=table.tab-tab ... pour conformite Element Should Contain css=table.tab-tab pour information Element Should Contain css=table.tab-tab avec avis attendu # Valider et finaliser le rapport d'instruction et créer un rapport d'instruction historisé Depuis le contexte du rapport d'instruction ${di} Click On Submit Button In Subform Valid Message Should Contain Vos modifications ont bien été enregistrées. Click On Back Button In Subform Depuis le contexte du rapport d'instruction ${di} Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Click On SubForm Portlet Action rapport_instruction finalise Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain In Subform La finalisation du document s'est effectuée avec succès. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Click On SubForm Portlet Action rapport_instruction definalise Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain In Subform La définalisation du document s'est effectuée avec succès. Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Click On SubForm Portlet Action rapport_instruction finalise Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Valid Message Should Contain In Subform La finalisation du document s'est effectuée avec succès. # Depuis la page d'accueil instr instr # Ajout d'un document de travail &{document_travail_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... description_type=document de travail ... date_creation=06/06/2001 Ajouter un document de travail depuis le dossier d'instruction ${di} ${document_travail_values} # Ajout d'un document d'instruction importé Accéder à l'onglet documents de l'onglet pièces par le dossier d'instruction ${di} Cliquer sur le bouton d'ajout de document d'instruction importé &{doc_values} = Create Dictionary ... chemin_fichier_a_uploader=testImportManuel.pdf ... document_type=Courrier (demande de prorogation) # code 29 Saisir le document d'instruction importé ${doc_values} Click On Submit Button In Subform Valid Message Should Contain In Subform Vos modifications ont bien été enregistrées. # Récupération des noms des fichiers pour la suite Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Docs. d'instruction ${nom_fichier_doc_instr_genere} = Get Text css=#sousform-document_instruction .tab-data td.col-1 span Set Suite Variable ${nom_fichier_doc_instr_genere} ${nom_fichier_doc_instr_importe} = Get Text css=#sousform-document_instruction_importe .tab-data td.col-1 span Set Suite Variable ${nom_fichier_doc_instr_importe} ${nom_fichier_doc_trav} = Get Text css=#sousform-document_travail .tab-data td.col-1 span Set Suite Variable ${nom_fichier_doc_trav} Décomposition du jeu de données &{param_values} = Create Dictionary ... libelle=id_avis_consultation_tacite ... valeur=-1 ... om_collectivite=agglo Gerer le paramètre par WS ${param_values} &{om_param} = Create Dictionary ... libelle=option_notification_piece_numerisee ... valeur=false ... om_collectivite=agglo Gerer le paramètre par WS ${om_param} Cliquer sur la constitution du dossier final Click Element name:constituer_dossier_final Wait Until Element Is Visible css=.message.ui-widget.ui-corner-all.ui-state-highlight Element Should Contain css=.message.ui-widget.ui-corner-all.ui-state-highlight Le dossier final a bien été constitué Page Should Not Contain Element css=div#telecharger_dossier_final Cliquer et confirmer le téléchargement du dossier final Click Element telecharger_dossier_final Wait Until Page Contains Téléchargement du dossier final Page Should Contain Êtes vous sûr(e) de vouloir télécharger l'ensemble des pièces du dossier final ? Click Element css=button.ui-button:nth-child(1) # bouton de confirmation Wait Until Page Contains Votre archive est prête, Page Should Contain Cliquez ici pour la télécharger ${link} = Get Element Attribute archive_download_link href ${output_dir} ${output_name} = Télécharger un fichier ${SESSION_COOKIE} ${link} ${EXECDIR}${/}binary_files${/}downloads${/} ${full_path_to_file} = Catenate SEPARATOR= ${output_dir} ${output_name} Click Element css=.ui-icon-closethick [Return] ${full_path_to_file} ${output_name} Ajout un fichier à la sélection [Arguments] ${nom_fichier} Select Checkbox xpath=//span[normalize-space(text()) = "${nom_fichier}"]//ancestor::tr/td[contains(@class, "col-0")]/div/input[contains(@class, "checkbox-dossier_final")] Le fichier est dans la sélection [Arguments] ${nom_fichier} Checkbox Should Be Selected xpath=//span[normalize-space(text()) = "${nom_fichier}"]//ancestor::tr/td[contains(@class, "col-0")]/div/input[contains(@class, "checkbox-dossier_final")] *** Test Cases *** Les bonnes pièces sont disponibles dans l'onglet dossier final Depuis la page d'accueil instr instr Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # Vérifie que tous les documents attendus sont présents, que le document de travail # n'est pas visible et que les dates sont correctes ${pieces} = Set Variable @{locators_pieces_document} = Get WebElements css=.tab-data :FOR ${locator} IN @{locators_pieces_document} \ ${line} = Get Text ${locator} \ ${pieces} = Catenate ${pieces} ${line} Should Contain ${pieces} rapport_instruction Should Contain ${pieces} Non applicable Should Contain ${pieces} consultation_avis_pour_conformite Should Contain ${pieces} consultation_pour_conformite_tacite Should Contain ${pieces} consultation_avec_avis_attendu Should Contain ${pieces} 03/02/2018 Should Contain ${pieces} consultation_pour_information Should Contain ${pieces} 16/03/2018 Should Contain ${pieces} 20180505ARRT.pdf Should Contain ${pieces} 05/05/2018 Should Contain ${pieces} ${nom_fichier_doc_instr_genere} Should Contain ${pieces} ${date_finalisation_instr} Should Contain ${pieces} ${nom_fichier_doc_instr_importe} Should Not Contain ${pieces} ${nom_fichier_doc_trav} Le bouton sélectionner les pièces et documents recommandés fonctionne Depuis la page d'accueil instr instr Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # vérifier que les éléments de la classe en surbrillance sont ceux qu'on attend (boucle for) ${pieces_recommandees} = Set Variable @{locators_pieces_recommandees} = Get WebElements css=.dossier_final_piece_recommandee :FOR ${locator} IN @{locators_pieces_recommandees} \ ${line} = Get Text ${locator} \ ${pieces_recommandees} = Catenate ${pieces_recommandees} ${line} # La dernière version du rapport d'instruction est recommandée Should Contain ${pieces_recommandees} rapport_instruction_2.pdf Should Not Contain ${pieces_recommandees} rapport_instruction_1.pdf Should Contain ${pieces_recommandees} consultation_avis_pour_conformite Should Contain ${pieces_recommandees} consultation_pour_conformite_tacite Should Contain ${pieces_recommandees} 20180505ARRT.pdf Should Not Contain ${pieces_recommandees} consultation_avec_avis_attendu Should Not Contain ${pieces_recommandees} consultation_pour_information Should Not Contain ${pieces_recommandees} 20180315ARRT.pdf # Rien n'est pré-coché @{locators_checkboxes_all} = Get WebElements css=.checkbox-dossier_final :FOR ${locator} IN @{locators_checkboxes_all} \ Checkbox Should Not Be Selected ${locator} # Vérifie que seulement les cases à cocher recommandées sont sélectionnées Click Button Sélectionner les pièces et documents recommandés @{locators_checkboxes_pieces_recommandees} = Get WebElements css=tr.dossier_final_piece_recommandee td.checkbox-dossier_final :FOR ${locator} IN @{locators_checkboxes_pieces_recommandees} \ Checkbox Should Be Selected ${locator} @{locators_checkboxes_pieces_non_recommandees} = Get WebElements css=tr:not(.dossier_final_piece_recommandee) td.checkbox-dossier_final :FOR ${locator} IN @{locators_checkboxes_pieces_non_recommandees} \ Checkbox Should Not Be Selected ${locator} Le bouton tout sélectionner/désélectionner fonctionne Depuis la page d'accueil instr instr Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # Récupération des checkbox @{locators_checkboxes_all} = Get WebElements css=.checkbox-dossier_final # Rien n'est pré-coché :FOR ${locator} IN @{locators_checkboxes_all} \ Checkbox Should Not Be Selected ${locator} # Vérifie que toutes les cases à cocher sont sélectionnées quand on clique sur tout Click Button id=checkbox_select_all_none :FOR ${locator} IN @{locators_checkboxes_all} \ Checkbox Should Be Selected ${locator} # Vérifie que toutes les cases à cocher sont désélectionnées Click Button id=checkbox_select_all_none :FOR ${locator} IN @{locators_checkboxes_all} \ Checkbox Should Not Be Selected ${locator} Téléchargement du dossier final Depuis la page d'accueil instr instr Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # Le bouton n'existe pas si on a pas encore constitué de dossier Page Should Not Contain Element css=#telecharger_dossier_final Click Button Sélectionner les pièces et documents recommandés Cliquer sur la constitution du dossier final Page Should Contain Element css=#telecharger_dossier_final # Composition du nom correct de l'archive zip ${di_libelle_spaceless} = Sans espace ${di} ${date_ddmmyyyy} = Date du jour EN ${date_jour_sans_tirets} = STR_REPLACE - ${EMPTY} ${date_ddmmyyyy} ${correct_archive_name_di} = Set Variable ${di_libelle_spaceless}_dossier_final_${date_jour_sans_tirets}.zip # Télécharger toutes les pièces et vérifier l'archive ${path_archive} ${archive_name} = Cliquer et confirmer le téléchargement du dossier final Should Be Equal ${correct_archive_name_di} ${archive_name} Archive Should Contain File ${path_archive} 20180505ARRT.pdf # Recharger et vérifier le précochage Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # Le dernier dossier final comportait toutes les pièces recommandées cochées, on vérifie que c'ets toujours le cas @{locators_checkboxes_pieces_recommandees} = Get WebElements css=tr.dossier_final_piece_recommandee td.checkbox-dossier_final :FOR ${locator} IN @{locators_checkboxes_pieces_recommandees} \ Checkbox Should Be Selected ${locator} @{locators_checkboxes_pieces_non_recommandees} = Get WebElements css=tr:not(.dossier_final_piece_recommandee) td.checkbox-dossier_final :FOR ${locator} IN @{locators_checkboxes_pieces_non_recommandees} \ Checkbox Should Not Be Selected ${locator} # Télécharger toutes les pièces et vérifier l'archive ${path_archive} ${archive_name} = Cliquer et confirmer le téléchargement du dossier final # Vérification du nom de l'archive, et de son contenu. Should Be Equal ${correct_archive_name_di} ${archive_name} Archive Should Contain File ${path_archive} 20180505ARRT.pdf # TODO Il faudrait idéalement vérifier tous les fichiers de l'archive, pour vérifier # qu'il n'y a que les sélectionnés qui sont ajoutés La sélection des pièces est sauvegardée correctement Depuis la page d'accueil instr instr Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # Ajoute un rapport d'instruction à l'archive Ajout un fichier à la sélection rapport_instruction_1.pdf Ajout un fichier à la sélection ${nom_fichier_doc_instr_importe} Cliquer sur la constitution du dossier final # On recharge la page Depuis l'onglet des pièces du dossier d'instruction ${di} Ouvrir le sous-onglet Dossier final # La sélection a été conservée Le fichier est dans la sélection rapport_instruction_1.pdf Le fichier est dans la sélection ${nom_fichier_doc_instr_importe} # Et toutes les pièces recommandées sont encore là @{locators_checkboxes_pieces_recommandees} = Get WebElements css=tr.dossier_final_piece_recommandee td.checkbox-dossier_final :FOR ${locator} IN @{locators_checkboxes_pieces_recommandees} \ Checkbox Should Be Selected ${locator} # Et en téléchargeant, on a les bons fichiers dans l'archive ${path_archive} ${archive_name} = Cliquer et confirmer le téléchargement du dossier final Archive Should Contain File ${path_archive} 20180505ARRT.pdf Archive Should Contain File ${path_archive} rapport_instruction_1.pdf Archive Should Contain File ${path_archive} ${nom_fichier_doc_instr_importe}