*** Settings ***
Documentation  Les widgets.

# 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 ***
Widget "Infos Profil"
    [Documentation]  Ce widget affiche des informations sur l'utilisateur connecté.

    # En tant qu'utilisateur profil QUALIFICATEUR
    Depuis la page d'accueil  qualif  qualif
    # On vérifie que le profil affiché est le bon
    Element Should Contain  css=.profil-infos-profil span.value  QUALIFICATEUR
    # On vérifie que le nom de l'utilisateur est le bon
    Element Should Contain  css=.profil-infos-nom span.value  Qualificateur
    Page Should Not Contain Element  css=.profil-infos-instructeur_qualite span.value
    Element Should Contain  css=.widget_infos_profil .tab-tab  urbanisme
    Element Should Contain  css=.widget_infos_profil .tab-tab  Oui

    # En tant qu'utilisateur profil INSTRUCTEUR
    # On vérifie pour trois utilisateurs différents pour être sûr
    # que l'information de division est correcte
    # instr -> Division H
    Depuis la page d'accueil  instr  instr
    # On vérifie que le profil affiché est le bon
    Element Should Contain  css=.profil-infos-profil span.value  INSTRUCTEUR
    # On vérifie que le nom de l'utilisateur est le bon
    Element Should Contain  css=.profil-infos-nom span.value  Louis Laurent
    # On vérifie que le code de la division est le bon
    # instr1 -> Division H
    Element Should Contain  css=.profil-infos-division span.value  H
    Element Should Contain  css=.profil-infos-instructeur_qualite span.value  instructeur

    Depuis la page d'accueil  instr1  instr
    # On vérifie que le profil affiché est le bon
    Element Should Contain  css=.profil-infos-profil span.value  INSTRUCTEUR
    # On vérifie que le nom de l'utilisateur est le bon
    Element Should Contain  css=.profil-infos-nom span.value  Martine Nadeau
    # On vérifie que le code de la division est le bon
    Element Should Contain  css=.profil-infos-division span.value  H
    # instr2 -> Division J
    Depuis la page d'accueil  instr2  instr
    # On vérifie que le profil affiché est le bon
    Element Should Contain  css=.profil-infos-profil span.value  INSTRUCTEUR
    # On vérifie que le nom de l'utilisateur est le bon
    Element Should Contain  css=.profil-infos-nom span.value  Roland Richard
    # On vérifie que le code de la division est le bon
    Element Should Contain  css=.profil-infos-division span.value  J

    # Pour un utilisateur lié au groupe contentieux
    Depuis la page d'accueil  juriste  juriste
    # On vérifie que le nom de l'utilisateur est le bon
    Element Should Contain  css=.profil-infos-profil span.value  JURISTE
    Element Should Contain  css=.profil-infos-nom span.value  Juriste
    Element Should Contain  css=.profil-infos-instructeur_qualite span.value  juriste
    Element Should Contain  css=.widget_infos_profil .tab-tab  urbanisme
    Element Should Contain  css=.widget_infos_profil .tab-tab  Contentieux
    Element Should Contain  css=.widget_infos_profil .tab-tab  Oui
    Element Should Contain  css=.widget_infos_profil .tab-tab  Non

Widget "Redirection"
    [Documentation]  Ce widget redirige l'utilisateur vers les listing des
    ...  demandes d'avis en cours.

    # On se connecte avec l'utilisateur consu
    Depuis la page d'accueil  consu  consu
    # On vérifie que l'utilisateur est bien redirigé vers le listing souhaité
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Le titre de la page doit être  Demandes D'avis > En Cours

TNR Vérifier que le widget mes messages prend ou ne prend pas en compte les messages des dossiers cloturer en fonction d'un argument
    [Documentation]  Vérifie que si des messages sont marquées comme "non lu" dans un
    ...  dossier cloturer, il ne sont pas compté sur le widget "mes messages"

    Depuis la page d'accueil  admin  admin

    # paramétrage du widget comme le widget a un nom similaire a celui d'un autre
    # on utilise son id pour l'identifier
    &{args_om_widget} =  Create Dictionary
    ...  arguments=filtre=aucun
    Modifier le widget  4  ${args_om_widget}

    # Liste des arguments pour la demande
    &{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
    # Liste des arguments pour le pétitionnaire
    &{args_petitionnaire} =  Create Dictionary
    ...  particulier_civilite=Madame
    ...  particulier_nom=Rivière
    ...  particulier_prenom=Coralie
    ...  om_collectivite=MARSEILLE
    ${di} =  Ajouter la demande par WS  ${args_demande}  ${args_petitionnaire}

    # Ajout d'une pièce pour avoir un message de notication de l'instructeur
    &{document_numerise_values} =  Create Dictionary
    ...  uid_upload=testImportManuel.pdf
    ...  date_creation=10/09/2016
    ...  document_numerise_type=arrêté retour préfecture
    Ajouter une pièce depuis le dossier d'instruction  ${di}  ${document_numerise_values}

    # Ajout d'un nouveau dossier pour toujours avoir accès au voir+ du widget
    &{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
    # Liste des arguments pour le pétitionnaire
    &{args_petitionnaire} =  Create Dictionary
    ...  particulier_civilite=Madame
    ...  particulier_nom=Jean
    ...  particulier_prenom=Neimar
    ...  om_collectivite=MARSEILLE
    ${di_non_cloture} =  Ajouter la demande par WS  ${args_demande}  ${args_petitionnaire}

    # Ajout d'une pièce pour avoir un message de notication de l'instructeur
    &{document_numerise_values} =  Create Dictionary
    ...  uid_upload=testImportManuel.pdf
    ...  date_creation=10/09/2016
    ...  document_numerise_type=arrêté retour préfecture
    Ajouter une pièce depuis le dossier d'instruction  ${di_non_cloture}  ${document_numerise_values}

    # Vérification de la prise en compte du message dans le widget avec
    # un profil instructeur
    Depuis la page d'accueil  instr  instr
    Go To Dashboard via Link
    Click Element  css=div.widget_messages_retours div.widget-footer a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Input Text    css=div#tab-messages_tous_retours form#advanced-form input  ${di}
    Element Should Contain  css=#tab-messages_tous_retours  ${di}

    # Cloture du dossier
    Ajouter une instruction au DI  ${di}  accepter un dossier sans réserve
    Ajouter une instruction au DI  ${di}  cloture suite a transfert accepte

    # Vérification de l'affichage du widget
    Go To Dashboard via Link
    Click Element  css=div.widget_messages_retours div.widget-footer a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Input Text    css=div#tab-messages_tous_retours form#advanced-form input  ${di}
    Element Should Not Contain  css=#tab-messages_tous_retours  ${di}

    # modifier le widget mes messages, 
    Depuis la page d'accueil  admin  admin

    &{args_om_widget} =  Create Dictionary
    ...  arguments=filtre=aucun\ndossier_cloture=true
    Modifier le widget  4  ${args_om_widget}

    Depuis la page d'accueil  instr  instr
    Go To Dashboard via Link
    Click Element  css=div.widget_messages_retours div.widget-footer a
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Input Text    css=div#tab-messages_tous_retours form#advanced-form input  ${di}
    # verifier que le $di existe dans le widget
    Element Should Contain  css=#tab-messages_tous_retours  ${di}

Reset Params - TNR Vérifier que le widget mes messages prend ou ne prend pas en compte les messages des dossiers cloturer en fonction d'un argument
    [Documentation]  Remet le paramétrage de base du widget

    Depuis la page d'accueil  admin  admin
    &{args_om_widget} =  Create Dictionary
    ...  arguments=${EMPTY}
    Modifier le widget  4  ${args_om_widget}