*** Settings *** Documentation Gestion des messages. # 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 *** Constitution du jeu de données [Documentation] L'objet de ce 'Test Case' est de constituer un jeu de ... données cohérent pour les scénarios fonctionnels qui suivent. # Date du jour au format : JJ/MM/AAAA ${date_ddmmyyyy} = Date du jour FR Set Suite Variable ${date_ddmmyyyy} Gestion des retours de messages depuis la rubrique 'Instruction' [Documentation] ## ## Constitution du jeu de données ## ## On cré deux nouvelles collectivités pour être sûr du nombre ## de retours de messages à vérifier dans les widgets et tableaux ## # ${collectivite_a} = Set Variable SAMBALPUR ${collectivite_b} = Set Variable DRIEKAPELLEN # ${utilisateur_nom_01} = Set Variable Hermione JUAREZ ${utilisateur_login_01} = Set Variable hjuarez ${utilisateur_nom_02} = Set Variable Jorden BOWERS ${utilisateur_login_02} = Set Variable jbowers ${utilisateur_nom_03} = Set Variable Kiara COLE ${utilisateur_login_03} = Set Variable kcole ${utilisateur_nom_04} = Set Variable Elizabeth ORTIZ ${utilisateur_login_04} = Set Variable eortiz # Depuis la page d'accueil admin admin # Ajouter la collectivité depuis le menu ${collectivite_a} mono Ajouter la collectivité depuis le menu ${collectivite_b} mono # Ajouter l'utilisateur ${utilisateur_nom_01} nospam@openmairie.org ${utilisateur_login_01} ${utilisateur_login_01} INSTRUCTEUR ${collectivite_a} Ajouter l'utilisateur ${utilisateur_nom_02} nospam@openmairie.org ${utilisateur_login_02} ${utilisateur_login_02} INSTRUCTEUR ${collectivite_a} Ajouter l'utilisateur ${utilisateur_nom_03} nospam@openmairie.org ${utilisateur_login_03} ${utilisateur_login_03} INSTRUCTEUR ${collectivite_a} Ajouter l'utilisateur ${utilisateur_nom_04} nospam@openmairie.org ${utilisateur_login_04} ${utilisateur_login_04} INSTRUCTEUR ${collectivite_b} # Ajouter l'instructeur depuis le menu ${utilisateur_nom_01} subdivision H instructeur ${utilisateur_nom_01} Ajouter l'instructeur depuis le menu ${utilisateur_nom_02} subdivision H instructeur ${utilisateur_nom_02} Ajouter l'instructeur depuis le menu ${utilisateur_nom_03} subdivision J instructeur ${utilisateur_nom_03} Ajouter l'instructeur depuis le menu ${utilisateur_nom_04} subdivision H instructeur ${utilisateur_nom_04} # &{args_affectation} = Create Dictionary ... instructeur=${utilisateur_nom_01} ... om_collectivite=${collectivite_a} Ajouter l'affectation depuis le menu ${args_affectation} &{args_affectation} = Create Dictionary ... instructeur=${utilisateur_nom_02} ... om_collectivite=${collectivite_a} ... dossier_autorisation_type_detaille=Permis de construire comprenant ou non des démolitions Ajouter l'affectation depuis le menu ${args_affectation} &{args_affectation} = Create Dictionary ... instructeur=${utilisateur_nom_03} ... om_collectivite=${collectivite_a} ... dossier_autorisation_type_detaille=Permis de démolir Ajouter l'affectation depuis le menu ${args_affectation} &{args_affectation} = Create Dictionary ... instructeur=${utilisateur_nom_04} ... om_collectivite=${collectivite_b} Ajouter l'affectation depuis le menu ${args_affectation} # DI n°1 : Permis de démolir dans Collectivité A (niveau mono) # => Affecté à l'instructeur '${utilisateur_nom_03}' (${utilisateur_login_03}) # => Division 'J' # &{args_petitionnaire_01} = Create Dictionary ... particulier_nom=DUPONT ... particulier_prenom=Jacques ... om_collectivite=${collectivite_a} # &{args_demande_01} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de démolir ... demande_type=Dépôt Initial ... date_demande=12/04/2015 ... om_collectivite=${collectivite_a} # ${di_01} = Ajouter la nouvelle demande ${args_demande_01} ${args_petitionnaire_01} # DI n°2 : Permis de construire pour une maison individuelle et / ou ses annexes dans Collectivité A (niveau mono) # => Affecté à l'instructeur '${utilisateur_nom_01}' (${utilisateur_login_01}) # => Division 'H' # &{args_petitionnaire_02} = Create Dictionary ... particulier_nom=VACHIER ... particulier_prenom=Arthur ... om_collectivite=${collectivite_a} # &{args_demande_02} = 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=12/04/2015 ... om_collectivite=${collectivite_a} # ${di_02} = Ajouter la nouvelle demande ${args_demande_02} ${args_petitionnaire_02} # DI n°3 : Permis de construire comprenant ou non des démolitions dans Collectivité A (niveau mono) # => Affecté à l'instructeur '${utilisateur_nom_02}' (${utilisateur_login_02}) # => Division 'H' # &{args_petitionnaire_03} = Create Dictionary ... particulier_nom=BRAY ... particulier_prenom=Guy ... om_collectivite=${collectivite_a} # &{args_demande_03} = Create Dictionary ... dossier_autorisation_type_detaille=Permis de construire comprenant ou non des démolitions ... demande_type=Dépôt Initial ... date_demande=12/04/2015 ... om_collectivite=${collectivite_a} # ${di_03} = Ajouter la nouvelle demande ${args_demande_03} ${args_petitionnaire_03} # DI n°4 : Permis de construire pour une maison individuelle et / ou ses annexes dans Collectivité B (niveau mono) # => Affecté à l'instructeur '${utilisateur_nom_04}' (${utilisateur_login_04}) # => Division 'H' # &{args_petitionnaire_04} = Create Dictionary ... particulier_nom=BOULAGE ... particulier_prenom=Damien ... om_collectivite=${collectivite_b} # &{args_demande_04} = 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=12/04/2015 ... om_collectivite=${collectivite_b} # ${di_04} = Ajouter la nouvelle demande ${args_demande_04} ${args_petitionnaire_04} # On active l'option de notification par message Modifier le paramètre option_notification_piece_numerisee true # On ajoute un document numérisé par DI &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... date_creation=${date_ddmmyyyy} ... document_numerise_type=autres pièces composant le dossier (A0) Ajouter une pièce depuis le dossier d'instruction ${di_01} ${document_numerise_values} Ajouter une pièce depuis le dossier d'instruction ${di_02} ${document_numerise_values} Ajouter une pièce depuis le dossier d'instruction ${di_03} ${document_numerise_values} Ajouter une pièce depuis le dossier d'instruction ${di_04} ${document_numerise_values} ## ## Cas d'usage ## ## ## # ${widget_id} = Set Variable widget_4 # On se connecte en tant que utilisateur de niveau 2 Depuis la page d'accueil admin admin # On vérifie qu'on a la collonne collectivité dans le listing tous les messages Go To Submenu In Menu instruction messages_tous_retours Page Title Should Be Instruction > Messages > Tous Les Messages First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans toutes les collectivités. Element Should Contain css=#tab-messages_tous_retours table thead instructeur Element Should Contain css=#tab-messages_tous_retours table thead division Element Should Contain css=#tab-messages_tous_retours table thead collectivité # On va sur le listing 'Tous les messages' # Il doit contenir des retours des deux collectivités Input Text css=#tab-messages_tous_retours #adv-search-classic-fields input ${collectivite_a} Click On Search Button Element Should Contain css=#tab-messages_tous_retours table ${collectivite_a} Input Text css=#tab-messages_tous_retours #adv-search-classic-fields input ${collectivite_b} Click On Search Button Element Should Contain css=#tab-messages_tous_retours table ${collectivite_b} # On se connecte en tant que "${utilisateur_login_01}" (Profil 'INSTRUCTEUR') Depuis la page d'accueil ${utilisateur_login_01} ${utilisateur_login_01} # On vérifie que les messages apparaissent bien sur le tableau de bord de l'instructeur Element Should Contain css=#${widget_id} .widget-content-wrapper span.box-icon 1 # On clique sur le lien "Voir +" du widget Click Element css=#${widget_id} .widget-footer a # Le lien Voir + nous amène sur le listing 'Mes retours' # Il ne doit contenir qu'un seul retour Submenu In Menu Should Be Selected instruction messages_mes_retours Page Title Should Be Instruction > Messages > Mes Messages First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction dont je suis l'instructeur et les messages dont le destinataire est 'commune'. Element Should Contain css=#tab-messages_mes_retours .pagination-text 1 - 1 enregistrement(s) sur 1 # On va sur le listing 'Messages de ma division' # Il doit contenir deux retours Go To Submenu In Menu instruction messages_retours_ma_division Page Title Should Be Instruction > Messages > Messages De Ma Division First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans ma division et les messages dont le destinataire est 'commune'. Element Should Contain css=#tab-messages_retours_ma_division .pagination-text 1 - 2 enregistrement(s) sur 2 Element Should Contain css=#tab-messages_retours_ma_division table ${utilisateur_nom_02} # On va sur le listing 'Tous les messages' # Il doit contenir trois retours Go To Submenu In Menu instruction messages_tous_retours Page Title Should Be Instruction > Messages > Tous Les Messages First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans ma collectivité. Element Should Contain css=#tab-messages_tous_retours .pagination-text 1 - 3 enregistrement(s) sur 3 # Filtre sur l'instructeur Depuis la page d'accueil admin admin Depuis le contexte du widget messages_retours Click On Form Portlet Action om_widget modifier Input Text texte filtre=division Click On Submit Button # On se connecte en tant que "${utilisateur_login_01}" (Profil 'INSTRUCTEUR') Depuis la page d'accueil ${utilisateur_login_01} ${utilisateur_login_01} # On vérifie que les messages apparaissent bien sur le tableau de bord de l'instructeur Element Should Contain css=#${widget_id} .widget-content-wrapper span.box-icon 2 # On clique sur le lien "Voir +" du widget Click Element css=#${widget_id} .widget-footer a # Le lien Voir + nous amène sur le listing 'Messages de ma division' # Il doit contenir deux retours Submenu In Menu Should Be Selected instruction messages_retours_ma_division Page Title Should Be Instruction > Messages > Messages De Ma Division First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans ma division et les messages dont le destinataire est 'commune'. Element Should Contain css=#tab-messages_retours_ma_division .pagination-text 1 - 2 enregistrement(s) sur 2 # Filtre sur l'instructeur Depuis la page d'accueil admin admin Depuis le contexte du widget messages_retours Click On Form Portlet Action om_widget modifier Input Text texte filtre=aucun Click On Submit Button # On se connecte en tant que "${utilisateur_login_01}" (Profil 'INSTRUCTEUR') Depuis la page d'accueil ${utilisateur_login_01} ${utilisateur_login_01} # On vérifie que les messages apparaissent bien sur le tableau de bord de l'instructeur Element Should Contain css=#${widget_id} .widget-content-wrapper span.box-icon 3 # On clique sur le lien "Voir +" du widget Click Element css=#${widget_id} .widget-footer a # Le lien Voir + nous amène sur le listing 'Tous les messages' # Il doit contenir trois retours Submenu In Menu Should Be Selected instruction messages_tous_retours Page Title Should Be Instruction > Messages > Tous Les Messages First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans ma collectivité. Element Should Contain css=#tab-messages_tous_retours .pagination-text 1 - 3 enregistrement(s) sur 3 # Filtre sur l'instructeur Depuis la page d'accueil admin admin Depuis le contexte du widget messages_retours Click On Form Portlet Action om_widget modifier Input Text texte filtre=instructeur Click On Submit Button # On se connecte en tant que Profil 'INSTRUCTEUR' Depuis la page d'accueil ${utilisateur_login_04} ${utilisateur_login_04} # On vérifie que les messages apparaissent bien sur le tableau de bord de l'instructeur Element Should Contain css=#${widget_id} .widget-content-wrapper span.box-icon 1 # On clique sur le lien "Voir +" du widget Click Element css=#${widget_id} .widget-footer a # On clique sur le lien du dossier Click Link ${di_04} # Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Be Visible css=#sousform-dossier_message #dossier_message # Page Title Should Contain ${di_04} Page Title Should Contain BOULAGE DAMIEN # Portlet Action Should Be In SubForm dossier_message marquer_comme_lu # Click On SubForm Portlet Action dossier_message marquer_comme_lu # Valid Message Should Be In Subform Le message a été marqué comme lu. # Depuis la page d'accueil ${utilisateur_login_04} ${utilisateur_login_04} # # On vérifie que lorsqu'il n'y a aucun message, une information dans le widget 'Messages' # l'indique et que le lien Voir + n'est pas présent # Element Should Contain css=#${widget_id} .widget-content-wrapper Aucun message non lu. Element Should Not Contain css=#${widget_id} Voir + # # On clique sur les trois listings liés pour vérifier qu'il n'y a aucun résultat # Go To Submenu In Menu instruction messages_mes_retours Page Title Should Be Instruction > Messages > Mes Messages First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction dont je suis l'instructeur et les messages dont le destinataire est 'commune'. Element Should Contain css=#tab-messages_mes_retours .pagination-text 1 - 0 enregistrement(s) sur 0 Element Should Not Contain css=#tab-messages_mes_retours table thead instructeur Element Should Not Contain css=#tab-messages_mes_retours table thead division Element Should Not Contain css=#tab-messages_mes_retours table thead collectivité # Go To Submenu In Menu instruction messages_retours_ma_division Page Title Should Be Instruction > Messages > Messages De Ma Division First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans ma division et les messages dont le destinataire est 'commune'. Element Should Contain css=#tab-messages_retours_ma_division .pagination-text 1 - 0 enregistrement(s) sur 0 Element Should Contain css=#tab-messages_retours_ma_division table thead instructeur Element Should Not Contain css=#tab-messages_retours_ma_division table thead division Element Should Not Contain css=#tab-messages_retours_ma_division table thead collectivité # Go To Submenu In Menu instruction messages_tous_retours Page Title Should Be Instruction > Messages > Tous Les Messages First Tab Title Should Be Message Page Should Contain Les messages marqués comme 'non lu' qui concernent des dossiers d'instruction situés dans ma collectivité. Element Should Contain css=#tab-messages_tous_retours .pagination-text 1 - 0 enregistrement(s) sur 0 Element Should Contain css=#tab-messages_tous_retours table thead instructeur Element Should Contain css=#tab-messages_tous_retours table thead division Element Should Not Contain css=#tab-messages_tous_retours table thead collectivité ## ## Vérification de la notion de destinataire dans les messages ## # # Constitution du jeux de données # Depuis la page d'accueil admin admin # On ajoute un utilisateur/instructeur sur la collectivité de niveau 2 ${utilisateur_nom_05} = Set Variable Joseph Marcoux ${utilisateur_login_05} = Set Variable jmarcoux ${utilisateur_division_05} = Set Variable subdivision Y Ajouter l'utilisateur ${utilisateur_nom_05} nospam@openmairie.org ${utilisateur_login_05} ${utilisateur_login_05} INSTRUCTEUR agglo Ajouter la division depuis le menu Y ${utilisateur_division_05} null Afrodille Boulanger null null Direction ADS Ajouter l'instructeur depuis le menu ${utilisateur_nom_05} ${utilisateur_division_05} instructeur ${utilisateur_nom_05} # On affecte automatiquement cet instructeur sur les dossiers de la # collectivité B de niveau 1 Supprimer l'affectation depuis le menu Elizabeth ORTIZ &{args_affectation} = Create Dictionary ... instructeur=${utilisateur_nom_05} ... om_collectivite=${collectivite_b} Ajouter l'affectation depuis le menu ${args_affectation} # On ajoute un dossier d'instruction &{args_petitionnaire_05} = Create Dictionary ... particulier_nom=Flamand ... particulier_prenom=Léon ... om_collectivite=${collectivite_b} &{args_demande_05} = 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=${collectivite_b} ${di_05} = Ajouter la nouvelle demande ${args_demande_05} ${args_petitionnaire_05} # # Depuis un dossier d'instruction de la commune A affecté à un instructeur # de la communauté, on ajoute une pièce avec cet instructeur. Le # destinataire du message doit être "commune" et donc l'instructeur affecté # ne doit pas être notifié. # Depuis la page d'accueil jmarcoux jmarcoux &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... document_numerise_type=autres pièces composant le dossier (A0) Ajouter une pièce depuis le dossier d'instruction ${di_05} ${document_numerise_values} Depuis le contexte du message dans le dossier d'instruction ${di_05} jmarcoux (Joseph Marcoux) # On vérifie que le champ destinataire contient bien la valeur "commune" Form Static Value Should Be css=#destinataire commune # On vérifie que le widget indique aucun message Go To Dashboard Element Should Contain css=#${widget_id} .widget-content-wrapper Aucun message non lu. Element Should Not Contain css=#${widget_id} Voir + # # L'instructeur de la commune doit avoir une notification et doit pouvoir # marquer comme lu le message même s'il ne sont pas de la même division. # Depuis la page d'accueil eortiz eortiz # On vérifie que le widget affiche 1 message Element Should Contain css=#${widget_id} .widget-content-wrapper span.box-icon 1 # Depuis le lien "Voir +" du widget, on vérifie le message Click Element css=#${widget_id} .widget-footer a Click On Link ${di_05} # On vérifie que le champ destinataire contient bien la valeur "commune" et # qu'il a accès à l'action "Marquer comme lu" Form Static Value Should Be css=#destinataire commune Portlet Action Should Be In SubForm dossier_message marquer_comme_lu # # On ajoute un message à destination de l'instructeur communauté, le # destinataire doit contenir la valeur "isntructeur". Ce message ne doit pas # être marqué comme lu par un instructeur commune qui n'est pas de la même # division. # Depuis la page d'accueil admin admin &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... document_numerise_type=autres pièces composant le dossier (A0) Ajouter une pièce depuis le dossier d'instruction ${di_05} ${document_numerise_values} Depuis le contexte du message dans le dossier d'instruction ${di_05} admin (Administrateur) # On vérifie que le champ destinataire contient bien la valeur "instructeur" Form Static Value Should Be css=#destinataire instructeur # L'instructeur du dossier doit pouvoir marquer comme lu le message Depuis la page d'accueil jmarcoux jmarcoux Depuis le contexte du message dans le dossier d'instruction ${di_05} admin (Administrateur) Portlet Action Should Be In SubForm dossier_message marquer_comme_lu # L'instructeur de la commune ne doit pas pouvoir marquer comme lu le # message Depuis la page d'accueil eortiz eortiz Depuis le contexte du message dans le dossier d'instruction ${di_05} admin (Administrateur) Portlet Action Should Not Be In SubForm dossier_message marquer_comme_lu Gestion de l'action 'Marquer comme lu' [Documentation] Test des conditions d'affichage de l'action. ... /!\ Dépendant du paramétrage des instructeurs et affectations automatiques # En admin on crée un dossier avec une pièce donc un message Depuis la page d'accueil admin admin &{args_petitionnaire} = Create Dictionary ... particulier_nom=PYRET ... particulier_prenom=Laurent ... 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 ... date_demande=${date_ddmmyyyy} ... om_collectivite=MARSEILLE ${di} = Ajouter la nouvelle demande ${args_demande} ${args_petitionnaire} &{document_numerise_values} = Create Dictionary ... uid_upload=testImportManuel.pdf ... date_creation=${date_ddmmyyyy} ... document_numerise_type=autres pièces composant le dossier (A0) Ajouter une pièce depuis le dossier d'instruction ${di} ${document_numerise_values} # En instructeur d'une division différente que celle du dossier # on ne doit pas pouvoir marquer le message comme lu Depuis la page d'accueil instr2 instr Depuis l'onglet des messages du dossier d'instruction ${di} Click On Link Ajout de pièce(s) Portlet Action Should Not Be In SubForm dossier_message marquer_comme_lu # En instructeur du dossier on doit pouvoir marquer le message comme lu Depuis la page d'accueil instr instr Depuis l'onglet des messages du dossier d'instruction ${di} Click On Link Ajout de pièce(s) Portlet Action Should Be In SubForm dossier_message marquer_comme_lu # On accepte le dossier pour le clôturer Ajouter une instruction au DI et la finaliser ${di} accepter un dossier sans réserve ${date_ddmmyyyy} # On doit toujours pouvoir marquer le message comme lu Depuis l'onglet des messages du dossier d'instruction ${di} Click On Link Ajout de pièce(s) Portlet Action Should Be In SubForm dossier_message marquer_comme_lu # On ajoute le bypass au profil instructeur Depuis la page d'accueil admin admin Ajouter le droit depuis le menu dossier_message_modifier_lu_bypass INSTRUCTEUR # Dorénavant l'instructeur de la division différente doit pouvoir marquer comme lu Depuis la page d'accueil instr2 instr Depuis l'onglet des messages du dossier d'instruction ${di} Click On Link Ajout de pièce(s) Portlet Action Should Be In SubForm dossier_message marquer_comme_lu # Pour la suite des tests on supprime le bypass créé dans ce test case Depuis la page d'accueil admin admin Depuis le listing des droits Use Simple Search libellé dossier_message_modifier_lu_bypass Click On Link INSTRUCTEUR Click On Form Portlet Action om_droit supprimer