/[openfoncier]/trunk/tests/309_task_TNR.robot
ViewVC logotype

Annotation of /trunk/tests/309_task_TNR.robot

Parent Directory Parent Directory | Revision Log Revision Log


Revision 17542 - (hide annotations)
Thu Apr 25 13:27:12 2024 UTC (9 months ago) by softime
File size: 22162 byte(s)
chore(branch): fusion de la branche d'intégration 6.5.0-develop dans le trunk

1 ejpritchard 17206 *** Settings ***
2     Documentation Test de task.
3    
4     # On inclut les mots-clefs
5     Resource resources/resources.robot
6     # On ouvre/ferme le navigateur au début/à la fin du Test Suite.
7     Suite Setup For Suite Setup
8     Suite Teardown For Suite Teardown
9    
10    
11     *** Test Cases ***
12     Activation de l'option 'option_notification_piece_numerisee'
13     [Documentation] Il est nécessaire de faire cette manipulation pour éviter le
14     ... FAIL: Element with locator 'dossier_message_id' not found.
15    
16     &{om_param} = Create Dictionary
17     ... libelle=option_notification_piece_numerisee
18     ... valeur=true
19     ... om_collectivite=agglo
20     Gerer le paramètre par WS ${om_param}
21    
22     Depuis la page d'accueil admin admin
23     Rendre les types de dossier d'autorisation détaillés utilisés transmissible à Plat'AU PCI
24    
25    
26     Ajout de commentaire aux tâches du moniteur
27     [Documentation] Vérifie l'implémentation du champ commentaire ainsi que la modification de ce champ
28     ... pour un tache du moniteur Plat'AU/IDE'AU
29    
30     Depuis la page d'accueil admin admin
31    
32     &{args_dossier} = Create Dictionary
33     ... om_collectivite=MARSEILLE
34     ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
35     ... demande_type=Dépôt Initial
36     ... terrain_adresse_localite=TEST300LieuComments
37     &{args_petitionnaire1} = Create Dictionary
38     ... qualite=particulier
39     ... particulier_nom=Terrieur
40     ... particulier_prenom=Alain
41     ... localite=TEST300Localite
42     ... om_collectivite=MARSEILLE
43     ${di_comments} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire1}
44    
45     &{donnees_techniques_values} = Create Dictionary
46     ... enga_decla_lieu=TEST300engadelalieu
47     ... enga_decla_date=${date_ddmmyyyy}
48     Saisir les données techniques du DI ${di_comments} ${donnees_techniques_values}
49    
50     ${di_comments_sans_espace} = Sans espace ${di_comments}
51     ${di_comments_da} = Replace String Using Regexp ${di_comments_sans_espace} [A-Z][0-9]+$ ${EMPTY}
52     Set Suite Variable ${di_comments}
53     Set Suite Variable ${di_comments_sans_espace}
54     Set Suite Variable ${di_comments_da}
55    
56     #On accède au listing du moniteur Plat'AU et on vérifie que la colonne "Commentaire" existe bien.
57     Depuis le menu Moniteur Plat'AU
58     Element Should Contain css=th.title.col-8.lastcol commentaire
59    
60     #On effectue une recherche avancée sur le dossier d'instruction précedemment créé.
61     Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier
62     Wait Until Element Is Visible css=div#adv-search-adv-fields select#type
63     # On remplit
64     Input Text css=div#adv-search-adv-fields input#dossier ${di_comments_da}
65     Select From List By Label css=div#adv-search-adv-fields select#type Création DA
66     # On valide le formulaire de recherche
67     Click On Search Button
68     #On vérifie que la tâche que l'on recherche apparait dans le listing.
69     Element Should Contain css=td.col-1 a.lienTable Création DA
70     Element Should Contain css=td.col-4 a.lienTable ${di_comments_da}
71    
72     &{comments_task_values} = Create Dictionary
73     ... type=creation_DA
74     ... dossier=${di_comments_da}
75     ... state=new
76     ... object_id=${di_comments_da}
77     ... link_dossier=${di_comments_da}
78     ... stream=output
79    
80     #On accède à la tâche afin de la modifier
81     Depuis le contexte d'une task à partir de la recherche avancée ${comments_task_values}
82     ${task_id} = Get Text css=#task
83     Click On Form Portlet Action task modifier
84     #On ajoute un commentaire dans le textarea et on valide la modification
85     Input Text css=textarea#comment.champFormulaire C'est un commentaire de test avec des apostrophes et caractères spéciaux !
86     Click On Submit Button
87     #On vérifie que dans le résumé de la tâche, le commentaire soit bien mis à jour.
88     Element Text Should Be css=span#comment C'est un commentaire de test avec des apostrophes et caractères spéciaux !
89    
90     #On retourne sur le listing global et on recherche à nouveau notre tâche. On peut ainsi vérifier
91     # si le commentaire apparait correctement dans la colonne "Commentaire"
92     Depuis le menu Moniteur Plat'AU
93     Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier
94     Wait Until Element Is Visible css=div#adv-search-adv-fields select#type
95     # On remplit
96     Input Text css=div#adv-search-adv-fields input#dossier ${di_comments_da}
97     Select From List By Label css=div#adv-search-adv-fields select#type Création DA
98     # On valide le formulaire de recherche
99     Click On Search Button
100     #On vérifie le contenu de la colonne commentaire.
101     Element Text Should Be css=td.col-8.lastcol C'est un commentaire de test avec des apostrophes et caractères spéciaux !
102    
103     # Modification de l'état et du commentaire depuis l'action 997
104     &{task_data} = Create Dictionary
105     ... state=debug
106     ... comment=C'est un autre commentaire de test avec des apostrophes et caractères spéciaux !
107     ${COOKIE} = Get Cookie ${SESSION_COOKIE}
108     ${cookies} = Create Dictionary ${SESSION_COOKIE}=${COOKIE.value}
109     ${session} = Set Variable ${PROJECT_NAME}_web_ihm
110     Create Session ${session} ${PROJECT_URL} cookies=${cookies}
111     ${headers} = Create Dictionary Content-Type=application/x-www-form-urlencoded
112     ${response} = Post Request ${session} /app/index.php?module=form&obj=task&action=997&idx=${task_id} data=${task_data} headers=${headers}
113    
114     Depuis le contexte de la task ${task_id}
115     Element Text Should Be css=span#comment C'est un autre commentaire de test avec des apostrophes et caractères spéciaux !
116    
117    
118     TNR vérification que le lien du dossier fonctionne correctement
119     [Documentation] Test les différents cas pour lequel on a un lien vers le dossier
120     ... qui s'affiche en consultation d'une tâche. Les cas sont les suivants :
121     ... Cas 1 : tâche Sortante avec un numéro de dossier d'autorisation (DA) -> le numéro
122     ... est cliquable et redirige l'utilisateur vers le dossier d'autorisation
123     ... Cas 2 : tâche Sortante avec un numéro de dossier d'instruction (DI) -> le numéro
124     ... est cliquable et renvoie l'utilisateur vers le dossier d'instruction
125     ... Cas 3 : tâche Sortante avec un numéro de DA et le DA n'existe plus -> le numéro est
126     ... affiché mais ce n'est pas un lien
127     ... Cas 4 : tâche Sortante avec un numéro de DI et le DI n'existe plus -> le numéro est
128     ... affiché mais ce n'est pas un lien
129     ... Cas 5 : tâche entrante avec un numéro de DI existant dans l'application -> le numéro
130     ... est cliquable et renvoie l'utilisateur vers le DI
131     ... Cas 6 : tâche entrante avec un numéro de DI non existant dans l'application -> le numéro est
132     ... affiché mais ce n'est pas un lien
133     ... Cas 7 : tâche entrante sans numéro de dossier et sans external UID permettant de le récupérer
134     ... -> pas de numéro et pas de lien affiché dans la synthèse de la tâche
135     ... Cas 8 : tâche entrante pour laquelle un numéro de dossier a été récupéré à l'aide des
136     ... external UID de la tâche et où le DI existe -> le numéro est cliquable et
137     ... renvoie l'utilisateur vers le DI
138     ... Cas 9 : tâche entrante pour laquelle un numéro de dossier a été récupéré à l'aide des
139     ... external UID de la tâche et où le DI n'existe pas -> le numéro n'est pas cliquable
140     ... Cas 10 : tâche entrante de type portal pour laquelle un numéro de dossier a été récupéré
141     ... à l'aide des external UID de la tâche et où le DI existe -> le numéro est pas cliquable
142    
143     # Création d'un dossier transmissible à plat'AU. La création de ce dossier entraine
144     # l'ajout de nouvelles tâches.
145     # La tâche creation_DA sert à tester les cas 1 et 3
146     # La tâche creation_DI sert à tester les cas 2 et 4
147     &{args_dossier} = Create Dictionary
148     ... om_collectivite=MARSEILLE
149     ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
150     ... demande_type=Dépôt Initial
151     ... terrain_adresse_localite=TEST300AdresseLocalite
152     &{args_petitionnaire} = Create Dictionary
153     ... qualite=particulier
154     ... particulier_nom=TEST300TASKNOM05
155     ... particulier_prenom=TEST300TASKPRENOM05
156     ... localite=TEST300Localite
157     ... om_collectivite=MARSEILLE
158     ${di_lie_taches} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire}
159     # Récupération du numéro de dossier sans espace et du numéro de dossier d'autorisation
160     # à partir du numéro de dossier fourni à la création du dossier
161     ${di_se} = Sans espace ${di_lie_taches}
162     ${da_lie_taches} = Replace String Using Regexp ${di_lie_taches} [A-Z][0-9]+$ ${EMPTY}
163     ${da_se} = Sans espace ${da_lie_taches}
164    
165    
166     # Ajout d'un élément dans la table lien_id_interne_uid_externe faisant référence
167     # à ce dossier.
168     # Cette référence permettra de tester les tâches en input (cas 5 à 9)
169     ${lien_dossier_payload} = Create Dictionary
170     ... object=dossier
171     ... object_id=${di_se}
172     ... external_uid=000-MMM-10
173     ... dossier=${di_se}
174     ... category=platau
175     Ajouter un external UID ${lien_dossier_payload}
176    
177     # Cas 1 : tâches entrante avec un numéro de DA existant
178     # On accède à cette tâche et on vérifie que le lien vers le dossier est présent
179     # sur le formulaire de consultation de la tâche. Vérifie également que cliquer
180     # sur ce lien redirige bien vers le formulaire de consultation du dossier
181     # d'autorisation
182     &{task_values_cas1} = Create Dictionary
183     ... type=creation_DA
184     ... dossier=${da_se}
185     ... stream=output
186     Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas1}
187     # Vérifie l'existance du lien
188     La page ne doit pas contenir d'erreur
189     Element Should Contain css=#dossier + a ${da_se}
190     ${id_creation_DA} = Get Text css=#task
191     # Test la redirection
192     Click Link ${da_se}
193     # Temporisation pour s'assurer que la page a bien le temps de se charger
194     Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=form#dossier_autorisation #dossier_autorisation_libelle ${da_lie_taches}
195     # Cas 2 : tâches entrante avec un numéro de DI existant
196     # On accède à cette tâche et on vérifie que le lien vers le dossier est présent
197     # sur le formulaire de consultation de la tâche. Vérifie également que cliquer
198     # sur ce lien redirige bien vers le formulaire de consultation du dossier
199     &{task_values_cas2} = Create Dictionary
200     ... type=creation_DI
201     ... dossier=${di_se}
202     ... stream=output
203     Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas2}
204     La page ne doit pas contenir d'erreur
205     Element Should Contain css=#dossier + a ${di_se}
206     Click Link ${di_se}
207     # Temporisation pour s'assurer que la page a bien le temps de se charger
208     Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#fieldset-form-dossier_instruction-dossier-d_instruction #dossier_libelle ${di_lie_taches}
209    
210     # Cas 5 : Tâche entrante avec un numéro de dossier existant dans l'application
211     # Création d'une tâche faisant référence au dossier créé précedemment
212     # Récupération de la payload d'une tâche create_DI_for_consultation et modification
213     # du numéro et de l'external uid du dossier pour qu'ils correspondent à ceux ajouté
214     # en début de test
215     ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_payload_ref.txt
216     ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-MMM-10
217     ${json_payload} = Replace String ${json_payload} PC0130552007777P0 ${di_se}
218     ${payload_dict} = To Json ${json_payload}
219    
220     ${task_values} = Create Dictionary
221     ... type=create_DI_for_consultation
222     ... json_payload=${json_payload}
223     ... dossier=${di_se}
224     ${task_id_cas5} = Ajouter la tâche par WS ${task_values}
225    
226     # Accède à la tâche, vérifie qu'il existe bien un lien vers le dossier
227     # Vérifie également que cliquer sur ce lien renvoie vers le formulaire
228     # consultation du DI
229     ${task_values} = Create Dictionary
230     ... type=create_DI_for_consultation
231     ... state=new
232     ... dossier=${di_se}
233     ... stream=input
234     ... task=${task_id_cas5}
235     Depuis le contexte d'une task à partir de la recherche avancée ${task_values}
236     La page ne doit pas contenir d'erreur
237     Element Should Contain css=#dossier + a ${di_se}
238     Click Link ${di_se}
239     Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#fieldset-form-dossier_instruction-dossier-d_instruction #dossier_libelle ${di_lie_taches}
240    
241     # Cas 7 : tâche entrante pour laquelle le numéro de dossier n'a pas été récupéré
242     # via l'external uid de sa payload
243     # En consultation de la tâche il ne doit pas y avoir de numéro de dossier visible
244     ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}json_ajout_piece_with_b64.json
245     ${json_payload} = Replace String ${json_payload} 7XY-DK8-5X 000-000-00
246     ${task_values} = Create Dictionary
247     ... type=add_piece
248     ... json_payload=${json_payload}
249     ${task_id_cas7} = Ajouter la tâche par WS ${task_values}
250    
251     # Accéde à la tâche et vérifie que le numéro de dossier n'est pas rempli
252     Depuis le contexte de la task ${task_id_cas7}
253     La page ne doit pas contenir d'erreur
254     Element Should Contain css=#dossier ${EMPTY}
255    
256    
257     # Cas 8 : tâche entrante pour laquelle le numéro de dossier a été récupéré via l'external uid
258     # dossier renseignée dans sa payload
259     # Le numéro de dossier doit être visible et cliquable en consultation de la tâche
260     # Récupère le template de payload JSON et le transforme en dictionnaire
261     # Modifie la payload du json pour y ajouter l'external UID faisant référence au dossier
262     # créé pour ce test
263     ${json_payload} = Replace String ${json_payload} 000-000-00 000-MMM-10
264    
265     ${task_values} = Create Dictionary
266     ... type=add_piece
267     ... json_payload=${json_payload}
268     ${task_id_cas8} = Ajouter la tâche par WS ${task_values}
269     # Accéde à la tâche et vérifie la présence du numéro de dossier et le fonctionnement du lien
270     Depuis le contexte de la task ${task_id_cas8}
271     La page ne doit pas contenir d'erreur
272     Element Should Contain css=#dossier + a ${di_se}
273     Click Link ${di_se}
274     Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Element Should Contain css=#fieldset-form-dossier_instruction-dossier-d_instruction #dossier_libelle ${di_lie_taches}
275     # Fait en sorte que les taches ne soit pas traité pour ne pas provoquer
276     # des erreurs lors de futur déclenchement des tâches
277     &{task_values_modif} = Create Dictionary
278     ... state=brouillon
279     Modifier la task ${task_id_cas8} ${task_values_modif}
280     Modifier la task ${task_id_cas7} ${task_values_modif}
281     # Activation de l'option de suppression des dossiers
282     &{options} = Create Dictionary
283     ... libelle=option_suppression_dossier_instruction
284     ... valeur=true
285     ... om_collectivite=agglo
286     Gerer le paramètre par WS ${options}
287    
288     # Suppression du dossier. Les tâches liées a ce dossier ne le seront plus.
289     Supprimer le dossier d'instruction ${di_lie_taches}
290     Le dossier d'instruction ne doit pas exister ${di_lie_taches}
291    
292     # Cas 3 : tâche Sortante avec un numéro de DA non existant dans l'application.
293     # Réutilise la tâche créée pour le cas 1. Cette tâche n'est plus liée au
294     # dossier car il a été supprimé.
295     # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien
296     Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas1}
297     La page ne doit pas contenir d'erreur
298     Page Should Not Contain Element css=#dossier + a
299     Element Should Contain css=#dossier + span ${da_se}
300    
301     # Cas 4 : tâche Sortante avec un numéro de DI non existant dans l'application.
302     # Réutilise la tâche créée pour le cas 2. Cette tâche n'est plus liée au
303     # dossier car il a été supprimé.
304     # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien
305     Depuis le contexte d'une task à partir de la recherche avancée ${task_values_cas2}
306     La page ne doit pas contenir d'erreur
307     Page Should Not Contain Element css=#dossier + a
308     Element Should Contain css=#dossier + span ${di_se}
309    
310     # Cas 6 : tâche entrante avec un numéro de DI non existant dans l'application.
311     # Réutilise la tâche créée pour le cas 5. Cette tâche n'est plus liée au
312     # dossier car il a été supprimé.
313     # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien
314     Depuis le contexte de la task ${task_id_cas5}
315     La page ne doit pas contenir d'erreur
316     Element Should Contain css=#dossier + span ${di_se}
317    
318     # Cas 9 : tâche entrante pour laquelle un numéro de dossier a été récupéré
319     # à l'aide des external UID
320     # Réutilise la tâche créée pour le cas 7. Cette tâche n'est plus liée au
321     # dossier car il a été supprimé.
322     # Vérifie que le numéro de dossier est visible mais que ce n'est pas un lien
323     Depuis le contexte de la task ${task_id_cas8}
324     La page ne doit pas contenir d'erreur
325     Element Should Contain css=#dossier + span ${di_se}
326    
327     # Cas 10 : tache entrante de type portal pour laquelle un numero de dossier a été récuperé
328     # Le numéro de dossier doit être visible et cliquable en consultation de la tâche
329     # Récupère le template de payload JSON et le transforme en dictionnaire. Créé
330     # la tâche avec cette payload et déclenche le traitement pour créer le dossier.
331     ${json_payload} = Get File ${EXECDIR}${/}binary_files${/}portal_task_create_di.json
332    
333     &{platau_type_demande_initial} = Create Dictionary
334     ... libelle=platau_type_demande_initial_PCI
335     ... valeur=DI
336     ... om_collectivite=agglo
337     Gerer le paramètre par WS ${platau_type_demande_initial}
338    
339     ${task_values} = Create Dictionary
340     ... type=create_DI
341     ... json_payload=${json_payload}
342     ... category=portal
343     ${task_id_cas10} = Ajouter la tâche par WS ${task_values}
344     # Avant traitement le numéro de dossier ne dois pas être rempli ni cliquable
345     Depuis le contexte de la task ${task_id_cas10} IDE'AU
346     Page Should Not Contain Element css=#dossier + a
347     Element Should Contain css=#dossier ${EMPTY}
348    
349     # Déclenchement de la tâche et vérification de la présence du numéro de dossier
350     # cliquable
351     Déclencher le traitement des tâches par WS
352     Depuis le contexte de la task ${task_id_cas10} IDE'AU
353     La page ne doit pas contenir d'erreur
354     # Comme on ne connaît pas le numéro de dossier on vérifie qu'il s'agit du bon
355     # en se basant sur les données de la payload
356     Click Link css=#dossier + a
357     # Temporisation pour s'assurer que la page a bien le temps de se charger
358     Wait Until Keyword Succeeds ${TIMEOUT} ${RETRY_INTERVAL} Page Should Contain Avenue Plop, 13000
359    
360    
361     TNR vérification que la création de dossiers non transmissible n'entraine pas une tache Création DA
362     [Documentation] Vérifie que lorsqu'un dossier est créé, si ce n'est pas un type de dossier
363     ... transmissible à Plat'Au alors il n'y a pas de tâche Création DA ajoutée à la liste des
364     ... task
365    
366     # Tout les types de dossier ont été rendu non transmissible au test précédent
367     # n'importe quel type de dossier peut donc être utilisé
368     Depuis la page d'accueil admin admin
369    
370     # Création d'un dossier non transmissible
371     &{args_dossier} = Create Dictionary
372     ... om_collectivite=MARSEILLE
373     ... dossier_autorisation_type_detaille=Permis de construire pour une maison individuelle et / ou ses annexes
374     ... demande_type=Dépôt Initial
375     ... depot_electronique=true
376     ... source_depot=platau
377     &{args_petitionnaire1} = Create Dictionary
378     ... qualite=particulier
379     ... particulier_nom=Sirois
380     ... particulier_prenom=Eugenia
381     ... om_collectivite=MARSEILLE
382     ${di} = Ajouter la demande par WS ${args_dossier} ${args_petitionnaire1}
383    
384     # Vérification de l'absence de task Création DA lié au dossier
385     Depuis le menu Moniteur Plat'AU
386     #
387     Wait Until Element Is Visible css=div#adv-search-adv-fields input#dossier
388     Wait Until Element Is Visible css=div#adv-search-adv-fields select#type
389     # On remplit
390     ${di_sans_espace} = Sans espace ${di}
391     ${di_da} = Replace String Using Regexp ${di_sans_espace} [A-Z][0-9]+$ ${EMPTY}
392     Select From List By Label css=#type Création DA
393     Input Text css=#dossier ${di_da}
394     Select From List By Label css=#state à traiter
395     Select From List By Label css=#stream Sortant
396     # On valide le formulaire de recherche
397     Click On Search Button
398     # Aucune tache d'ajout de pièce ne doit être trouvé
399     Element Should Contain css=#tab-task Aucun enregistrement.
400    
401    
402     Rendre les types de dossier d'autorisation détaillés utilisés non transmissible à Plat'AU
403     [Documentation] Il est nécessaire de faire cette manipulation pour revenir à un état normal
404     Depuis la page d'accueil admin admin
405     &{args_type_DA_detaille_modification} = Create Dictionary
406     ... dossier_platau=false
407     Modifier type de dossier d'autorisation détaillé PCI ${args_type_DA_detaille_modification}
408    
409    
410     Désactivation de l'option 'option_notification_piece_numerisee'
411     [Documentation] Il est nécessaire de faire cette manipulation pour éviter le
412     ... FAIL: Element with locator 'dossier_message_id' not found.
413    
414     &{om_param} = Create Dictionary
415     ... libelle=option_notification_piece_numerisee
416     ... valeur=false
417     ... om_collectivite=agglo
418     Gerer le paramètre par WS ${om_param}
419    

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26