§
     ’jÁH  ã                  ó  — d dl mZ d dlZd dlmc mZ d dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ dd„Z G d„ d¦  «        Z G d„ d¦  «        Z G d„ dej        ¦  «        Zedk    r ej        ¦   «          dS dS )é    )ÚannotationsN)Údeepcopy)ÚAny)Úpatch)Ú
TestClient)Úget_current_user)Ú
create_app)ÚWorkflowReviewRunSummaryÚreturnúdict[str, Any]c                 ó¢   — i dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd “dg “dd“dd“dd d g g d!d"d#dddd$i ddii d d%œgd&d'id(œ¥S ))NÚ	review_idúreview-1Úreview_codeú&RVW-PRJ-001-LEGAL_AGENT-20260101000000Úproject_codeúPRJ-001Úproject_nameõ   Dá»± Ã¡n thá»­ nghiá»‡mÚdossier_scopeÚproject_dossierÚtrigger_sourceÚsystem_proactive_reviewÚinitiated_by_employee_codezEMP-INITÚinitiated_by_employee_nameu   NgÆ°á»�i khá»Ÿi táº¡oÚlead_reviewer_employee_codeúEMP-LEADÚlead_reviewer_employee_nameõ   TrÆ°á»Ÿng nhÃ³mÚlead_agent_codeÚlegal_agentÚstatusÚ	in_reviewÚreview_reasonu   RÃ  soÃ¡t há»“ sÆ¡Úreview_summaryÚassigned_departmentsÚopen_findings_countr   Úresolved_findings_countz2026-01-01T00:00:00Zzaction-1Úsession_createdÚagentu   Khá»Ÿi táº¡o phiÃªn©Ú	action_idÚaction_typeÚ
actor_typeÚactor_employee_codeÚactor_employee_nameÚactor_agent_codeÚaction_summaryÚbefore_stateÚafter_stateÚaction_payloadÚ
created_atÚworkflow_typeÚproactive_dossier_review)Úoverdue_assignments_countÚlast_reviewed_atÚ	closed_atÚfindingsÚ	snapshotsÚactionsÚmetadata© r@   ó    ú6C:\Projects\DSCons\tests\test_dossier_review_routes.pyÚmake_sessionrC      s>  € ð'Ø�Zð'àÐ?ð'ð 	˜	ð'ð 	Ð1ð	'ð
 	Ð*ð'ð 	Ð3ð'ð 	% jð'ð 	%Ð&=ð'ð 	& zð'ð 	&Ð'8ð'ð 	˜=ð'ð 	�+ð'ð 	Ð-ð'ð 	˜$ð'ð 	 ð'ð  	˜qð!'ð" 	" 1ð#'ð$ &'Ø2ØØØð (Ø0Ø%Ø'1Ø'8Ø$1Ø"7Ø "Ø (¨+Ð6Ø"$Ø4ðð ð
ð %Ð&@ÐAðM'ð 'ð 'ð 'rA   c                  óR   — e Zd Zdd„Zdd„Z	 ddd„Zdd„Zdd„Zdd„Zdd„Z	dd„Z
dS )ÚFakePostgresRoutesClientr   ÚNonec                óH   — t          ¦   «         | _        d| _        d| _        d S )Nr   )rC   ÚsessionÚassignment_counterÚsubmission_counter©Úselfs    rB   Ú__init__z!FakePostgresRoutesClient.__init__;   s#   € Ý#‘~”~ˆŒØ"#ˆÔØ"#ˆÔÐÐrA   Úpayloadr   c                ó¸   — |                      d| j        d         ¦  «        | j        d<   |                      dd¦  «        | j        d<   t          | j        ¦  «        S )Nr   r"   Údraft)ÚgetrH   r   ©rL   rN   s     rB   Úcreate_dossier_review_sessionz6FakePostgresRoutesClient.create_dossier_review_session@   sT   € Ø&-§k¢kØ˜4œ<¨Ô6ñ'
ô '
ˆŒ�]Ñ#ð ")§¢¨X°wÑ!?Ô!?ˆŒ�XÑÝ˜œÑ%Ô%Ð%rA   Nr   ú
str | Noner   úlist[dict[str, Any]]c                ó,   — t          | j        ¦  «        gS )N)r   rH   )rL   r   r   s      rB   Úfetch_dossier_review_sessionsz6FakePostgresRoutesClient.fetch_dossier_review_sessionsG   s   € õ ˜œÑ&Ô&Ð'Ð'rA   Ústrc                ó  — i dd“d|d         “d|d         “d|d         “d|d         “d|                      d¦  «        “d|                      d¦  «        “d	|                      d	¦  «        “d
|                      d
d¦  «        “d|                      dd¦  «        “d|                      dd¦  «        “d|                      dd¦  «        “d|                      dd¦  «        “d|                      dd¦  «        “d|                      d¦  «        “dd“dd “d g g |                      d¦  «        pi dœ¥}|g| j        d<   d| j        d<   d| j        d<   | j        d                              d d!d"d#d$d d%i ddii dd&œ¦  «         t          |¦  «        S )'NÚ
finding_idz	finding-1Úfinding_codeÚfinding_groupÚfinding_typeÚtitleÚdescriptionÚdocument_typeÚdossier_stageÚseverityÚmediumÚimpact_levelÚresponsible_department_codeÚlegalÚsupplement_statusÚ	requestedr"   ÚopenÚis_blockingFÚdue_dateÚdetected_atz2026-01-01T00:00:01ZÚresolved_atr?   )Úresolution_noteÚ	evidencesÚassignmentsr?   r<   é   r'   Úawaiting_assignmentr>   zaction-2Úfinding_createdÚemployeer   r   u   ThÃªm findingr+   ©rQ   rH   Úappendr   )rL   r   rN   Úfindings       rB   Úcreate_dossier_review_findingz6FakePostgresRoutesClient.create_dossier_review_findingL   s'  € ð
Ø˜+ð
à˜G NÔ3ð
ð ˜W _Ô5ð
ð ˜G NÔ3ð	
ð
 �W˜WÔ%ð
ð ˜7Ÿ;š; }Ñ5Ô5ð
ð ˜WŸ[š[¨Ñ9Ô9ð
ð ˜WŸ[š[¨Ñ9Ô9ð
ð ˜Ÿš J°Ñ9Ô9ð
ð ˜GŸKšK¨¸ÑAÔAð
ð *¨7¯;ª;Ø-¨wñ,ô ,ð
ð   §¢Ð-@À+Ñ!NÔ!Nð
ð �g—k’k (¨FÑ3Ô3ð
ð  ˜7Ÿ;š; }°eÑ<Ô<ð!
ð" ˜Ÿš JÑ/Ô/ð#
ð$ Ð1ð%
ð& ˜4ð'
ð(  $ØØØŸš JÑ/Ô/Ð5°2ð/
ð 
ð 
ˆð2 %, 9ˆŒ�ZÑ Ø./ˆŒÐ*Ñ+Ø!6ˆŒ�XÑØŒ�YÔ×&Ò&à'Ø0Ø(Ø'1Ø'8Ø$(Ø"1Ø "Ø (Ð*?Ð@Ø"$Ø4ðð ñ	
ô 	
ð 	
õ ˜Ñ Ô Ð rA   rZ   c                óÊ  — | xj         dz  c_         i dd| j         › �“d|d         “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d|                     d¦  «        “d	|                     d	d
¦  «        “d|                     dd¦  «        “d|                     d¦  «        “d|                     d¦  «        “dd “dd “dd “dd “dd “dg “d|                     d¦  «        pi “}| j        d         d         }|d                              |¦  «         d|d	<   d|d<   d| j        d	<   |d         g| j        d<   t	          |¦  «        S )Nrq   Úassignment_idzassignment-Úassigned_department_codeÚassigned_employee_codeÚassigned_employee_nameÚassigned_by_employee_codeÚassigned_by_employee_namer"   ÚpendingÚpriorityrc   rk   Úassignment_noteÚlatest_submission_noteÚaccepted_atÚsubmitted_atÚverified_atr;   Úsubmissionsr?   r<   r   rp   Úassignedrh   rg   r&   )rI   rQ   rH   rv   r   )rL   r   rZ   rN   Ú
assignmentrw   s         rB   Úassign_dossier_review_findingz6FakePostgresRoutesClient.assign_dossier_review_finding|   sä  € ð 	ÐÔ 1Ñ$ÐÔð
ØÐD¨4Ô+BÐDÐDð
à&¨Ð0JÔ(Kð
ð % g§k¢kÐ2JÑ&KÔ&Kð
ð % g§k¢kÐ2JÑ&KÔ&Kð	
ð
 (¨¯ªÐ5PÑ)QÔ)Qð
ð (¨¯ªÐ5PÑ)QÔ)Qð
ð �g—k’k (¨IÑ6Ô6ð
ð ˜Ÿš J°Ñ9Ô9ð
ð ˜Ÿš JÑ/Ô/ð
ð ˜wŸ{š{Ð+<Ñ=Ô=ð
ð % dð
ð ˜4ð
ð ˜Dð
ð ˜4ð
ð ˜ð
ð  ˜2ð!
ð" ˜Ÿš JÑ/Ô/Ð5°2ð#
ˆ
ð& ”,˜zÔ*¨1Ô-ˆØ�Ô×%Ò% jÑ1Ô1Ð1Ø&ˆ�ÑØ'2ˆÐ#Ñ$Ø!+ˆŒ�XÑØ07Ð8RÔ0SÐ/TˆŒÐ+Ñ,Ý˜
Ñ#Ô#Ð#rA   c                ó(  — | xj         dz  c_         d| j         › �|                     dd¦  «        |                     d¦  «        d|                     d¦  «        |                     dd	¦  «        |                     d
¦  «        pi d d d d d ddœ}| j        d         d	         d         d	         }|d                              |¦  «         d|d<   d|d<   |                     d¦  «        |d<   | j        d         d	         }d|d<   d|d<   t	          |¦  «        S )Nrq   zsubmission-Úsubmission_typeÚdocument_bundleÚsubmitted_by_employee_codeu   NgÆ°á»�i ná»™pÚsubmission_noteÚattachment_countr   Úsubmitted_payloadz2026-01-01T00:00:02Z)Úsubmission_idrŒ   rŽ   Úsubmitted_by_employee_namer�   r�   r‘   Úverification_resultÚverification_noteÚverified_by_employee_codeÚverified_by_employee_namer†   r6   r<   rp   r‡   Ú	submittedr"   r…   rƒ   Úpending_verificationrg   )rJ   rQ   rH   rv   r   )rL   r   rZ   rN   Ú
submissionr‰   rw   s          rB   Ú submit_dossier_review_supplementz9FakePostgresRoutesClient.submit_dossier_review_supplement›   s7  € ð 	ÐÔ 1Ñ$ÐÔàD¨4Ô+BÐDÐDØ&Ÿ{š{Ð+<Ð>OÑPÔPØ*1¯+ª+Ð6RÑ*SÔ*SØ*:Ø&Ÿ{š{Ð+<Ñ=Ô=Ø '§¢Ð,>ÀÑ BÔ BØ!(§¢Ð-@Ñ!AÔ!AÐ!GÀRØ#'Ø!%Ø)-Ø)-ØØ0ð
ð 
ˆ
ð ”\ *Ô-¨aÔ0°Ô?ÀÔBˆ
Ø�=Ô!×(Ò(¨Ñ4Ô4Ð4Ø*ˆ
�8ÑØ%;ˆ
�>Ñ"Ø/6¯{ª{Ð;LÑ/MÔ/Mˆ
Ð+Ñ,Ø”,˜zÔ*¨1Ô-ˆØ2ˆ�ÑØ'2ˆÐ#Ñ$Ý˜
Ñ#Ô#Ð#rA   c                óp  — | j         d         d         d         d         }|d         d         }|                     dd¦  «        |d<   |                     d¦  «        |d<   |                     d¦  «        |d<   d	|d
<   d|d<   d|d<   d|d<   d|d<   | j         d         d         }d|d<   d|d<   d|d<   |                     d¦  «        |d<   d| j         d<   d| j         d<   d| j         d<   | j         d                              ddd|                     d¦  «        d	d di ddii ddœ¦  «         t          |¦  «        S )Nr<   r   rp   r‡   r”   Úacceptedr•   r–   u   NgÆ°á»�i duyá»‡tr—   z2026-01-01T00:00:03Zr†   Úverifiedr"   r;   Úresolvedrg   rm   rn   r'   rq   r(   r>   zaction-verifyÚverification_completedrt   u   XÃ¡c minh findingr+   )rH   rQ   rv   r   )rL   r   rZ   rN   r‰   rš   rw   s          rB   Úverify_dossier_review_findingz6FakePostgresRoutesClient.verify_dossier_review_finding¸   s’  € ð ”\ *Ô-¨aÔ0°Ô?ÀÔBˆ
Ø Ô.¨qÔ1ˆ
Ø,3¯KªKØ! :ñ-
ô -
ˆ
Ð(Ñ)ð +2¯+ª+Ð6IÑ*JÔ*Jˆ
Ð&Ñ'Ø29·+²+Ø'ñ3
ô 3
ˆ
Ð.Ñ/ð 3Eˆ
Ð.Ñ/Ø$:ˆ
�=Ñ!Ø)ˆ
�8ÑØ$:ˆ
�=Ñ!Ø"8ˆ
�;ÑØ”,˜zÔ*¨1Ô-ˆØ&ˆ�ÑØ'1ˆÐ#Ñ$Ø!7ˆ�ÑØ%,§[¢[Ð1DÑ%EÔ%EˆÐ!Ñ"Ø./ˆŒÐ*Ñ+Ø23ˆŒÐ.Ñ/Ø!+ˆŒ�XÑØŒ�YÔ×&Ò&à,Ø7Ø(Ø'.§{¢{Ð3NÑ'OÔ'OØ'9Ø$(Ø"5Ø "Ø (¨*Ð5Ø"$Ø4ðð ñ	
ô 	
ð 	
õ ˜Ñ Ô Ð rA   c                ót  — |                      dd¦  «        | j        d<   |                      d¦  «        | j        d<   d| j        d<   | j        d                              ddd	|                      d
¦  «        dd |                      dd¦  «        i d| j        d         ii ddœ¦  «         t          | j        ¦  «        S )Nr"   Úclosedr%   ú2026-01-01T00:00:04Zr;   r>   zaction-closeÚsession_closedrt   r/   u   NgÆ°á»�i Ä‘Ã³ngr2   u   Ä�Ã³ng phiÃªnr+   ru   )rL   r   rN   s      rB   Úclose_dossier_review_sessionz5FakePostgresRoutesClient.close_dossier_review_sessionâ   sÈ   € ð ")§¢¨X°xÑ!@Ô!@ˆŒ�XÑØ)0¯ªÐ5EÑ)FÔ)FˆŒÐ%Ñ&Ø$:ˆŒ�[Ñ!ØŒ�YÔ×&Ò&à+Ø/Ø(Ø'.§{¢{Ð3HÑ'IÔ'IØ'8Ø$(Ø")§+¢+Ð.>ÀÑ"PÔ"PØ "Ø (¨$¬,°xÔ*@ÐAØ"$Ø4ðð ñ	
ô 	
ð 	
õ ˜œÑ%Ô%Ð%rA   ©r   rF   )rN   r   r   r   )NN)r   rT   r   rT   r   rU   )r   rX   rN   r   r   r   )r   rX   rZ   rX   rN   r   r   r   )Ú__name__Ú
__module__Ú__qualname__rM   rS   rW   rx   rŠ   r›   r¡   r¦   r@   rA   rB   rE   rE   :   sÂ   € € € € € ð$ð $ð $ð $ð
&ð &ð &ð &ð HLð(ð (ð (ð (ð (ð
.!ð .!ð .!ð .!ð`$ð $ð $ð $ð>$ð $ð $ð $ð:(!ð (!ð (!ð (!ðT&ð &ð &ð &ð &ð &rA   rE   c                  ó   — e Zd Zdd„ZdS )ÚFakeWorkflowPersistenceServicer   r
   c           	     óR   — t          j        t          ¦   «         g g dgdddœ¦  «        S )Nú
snapshot-1rq   õ`   Ä�Ã£ lÆ°u workflow rÃ  soÃ¡t há»“ sÆ¡ chá»§ Ä‘á»™ng vÃ  nháº­t kÃ½ tham gia cá»§a nhÃ¢n sá»± AI.)ÚreviewÚfinding_summariesÚemployee_log_summariesÚcreated_snapshot_idsÚreview_action_countÚmessage)r
   Úmodel_validaterC   rR   s     rB   Ústart_review_runz/FakeWorkflowPersistenceService.start_review_runû   s9   € Ý'Ô6å&™.œ.Ø%'Ø*,Ø)5¨Ø'(Ø}ðð ñ	
ô 	
ð 		
rA   N)r   r
   )r¨   r©   rª   r·   r@   rA   rB   r¬   r¬   ú   s(   € € € € € ð

ð 

ð 

ð 

ð 

ð 

rA   r¬   c                  óÐ   — e Zd Zdd„Z ed e¦   «         ¬¦  «        dd„¦   «         Z ed e¦   «         ¬¦  «        dd„¦   «         Z ed e¦   «         ¬¦  «        dd	„¦   «         Z	d
S )ÚDossierReviewRoutesTestsr   rF   c                óˆ   — t          ¦   «         | _        d„ | j        j        t          <   t	          | j        ¦  «        | _        d S )Nc                 ó   — ddddœS )Nzuser-1ztest@dscons.vnÚ
superadmin)ÚidÚemailÚroler@   r@   rA   rB   ú<lambda>z0DossierReviewRoutesTests.setUp.<locals>.<lambda>  s   € ØØ%Ø ðC
ð C
€ rA   )r	   ÚappÚdependency_overridesr   r   ÚclientrK   s    rB   ÚsetUpzDossierReviewRoutesTests.setUp	  s;   € Ý‘<”<ˆŒð;
ð ;
ˆŒÔ%Õ&6Ñ7õ
 ! ¤Ñ*Ô*ˆŒˆˆrA   z)app.api.routes.WorkflowPersistenceService)Úreturn_valuec                óZ  — | j                              dddddœ¬¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      |d         d	         d
¦  «         |                      |d         dg¦  «         |                      |d         d¦  «         d S )Nz"/v1/workflows/dossier-review/startr   r!   r   )r   r    r   ©ÚjsonéÈ   r°   r   r   r³   r®   rµ   r¯   ©rÃ   ÚpostÚassertEqualÚstatus_coderÈ   )rL   Ú_mock_serviceÚresponserN   s       rB   Ú4test_start_workflow_route_returns_structured_summaryzMDossierReviewRoutesTests.test_start_workflow_route_returns_structured_summary  sÉ   € ð ”;×#Ò#Ø0à )Ø#0Ø/9ðð ð $ñ 
ô 
ˆð 	×Ò˜Ô-¨sÑ3Ô3Ð3Ø—-’-‘/”/ˆØ×Ò˜ Ô*¨;Ô7¸ÑDÔDÐDØ×Ò˜Ð!7Ô8¸<¸.ÑIÔIÐIØ×ÒØ�IÔØnñ	
ô 	
ð 	
ð 	
ð 	
rA   zapp.api.routes.PostgresClientc                ór	  — | j                              ddddddddœ¬	¦  «        }|                      |j        d
¦  «         |                      |                     ¦   «         d         d¦  «         | j                              dddddddddddœ	¬	¦  «        }|                      |j        d
¦  «         |                     ¦   «         }|                      |d         d¦  «         |                      |d         d¦  «         |                      |d         d         d         d¦  «         | j                              ddddddddœ¬	¦  «        }|                      |j        d
¦  «         |                     ¦   «         }|                      |d         d ¦  «         |                      |d!         dg¦  «         |                      |d         d         d"         d         d         d¦  «         | j                              d#dd$d%d&d'd(gid)œ¬	¦  «        }|                      |j        d
¦  «         |                     ¦   «         }|                      |d         d         d         d*¦  «         |                      |d         d         d+         d,¦  «         |                      |d         d         d"         d         d         d,¦  «         | j                              d-d.d/d0d1d2d3œ¬	¦  «        }	|                      |	j        d
¦  «         |	                     ¦   «         }
|                      |
d         d4¦  «         |                      |
d         d¦  «         |                      |
d5         d¦  «         |                      |
d         d         d         d4¦  «         |                      |
d         d         d+         d1¦  «         |                      |
d         d         d"         d         d         d6¦  «         |                      |
d7         d8         d9         d:¦  «         | j                              d;d<d=i¬	¦  «        }|                      |j        d
¦  «         |                     ¦   «         }|                      |d         d>¦  «         |                      |d?         d@¦  «         |                      |d7         d8         d9         dA¦  «         d S )BNú/v1/dossiers/reviewsr   r   r   Úmanualr!   rP   )r   r   r   r   r    r"   rÇ   rÉ   r"   z&/v1/dossiers/reviews/review-1/findingszF-001rf   Úmissing_documentu$   Thiáº¿u quyáº¿t Ä‘á»‹nh phÃª duyá»‡trh   ri   Úhigh)	r[   r\   r]   r^   re   rg   r"   rb   rd   rr   r'   rq   r<   r   z</v1/dossiers/reviews/review-1/findings/finding-1/assignmentsz
EMP-LAW-01r   r€   z
2026-01-10)r{   r|   r~   r�   r"   rk   rˆ   r&   rp   zU/v1/dossiers/reviews/review-1/findings/finding-1/assignments/assignment-1/submissionsr�   u   Ä�Ã£ bá»• sung há»“ sÆ¡é   Úfileszqd.pdf)rŽ   rŒ   r�   r�   r‘   r™   rg   r˜   zP/v1/dossiers/reviews/review-1/findings/finding-1/assignments/assignment-1/verifyzassignment-1zsubmission-1z	EMP-QA-01r�   u   Há»“ sÆ¡ Ä‘áº¡t yÃªu cáº§u)rz   r’   r–   r”   r•   rŸ   r(   rž   r>   éÿÿÿÿr-   r    z#/v1/dossiers/reviews/review-1/closeÚclosure_noteu%   Ä�Ã£ xá»­ lÃ½ xong toÃ n bá»™ findingr£   r;   r¤   r¥   rÊ   )rL   Ú_mock_postgresÚcreate_responseÚfinding_responseÚfinding_payloadÚassignment_responseÚassignment_payloadÚsubmission_responseÚsubmission_payloadÚverify_responseÚverify_payloadÚclose_responseÚclose_payloads                rB   Ú!test_route_level_review_lifecyclez:DossierReviewRoutesTests.test_route_level_review_lifecycle+  sQ  € àœ+×*Ò*Ø"à )Ø 9Ø!2Ø"*Ø#0Ø!ðð ð +ñ 

ô 

ˆð 	×Ò˜Ô4°cÑ:Ô:Ð:Ø×Ò˜×-Ò-Ñ/Ô/°Ô9¸7ÑCÔCÐCàœ;×+Ò+Ø4à 'Ø!(Ø 2Ø?Ø/6Ø%0Ø Ø"Ø &ð
ð 
ð ,ñ 
ô 
Ðð 	×ÒÐ)Ô5°sÑ;Ô;Ð;Ø*×/Ò/Ñ1Ô1ˆØ×Ò˜¨Ô2Ð4IÑJÔJÐJØ×Ò˜Ð)>Ô?ÀÑCÔCÐCØ×Ò˜¨Ô4°QÔ7¸ÔAÀ6ÑJÔJÐJà"œk×.Ò.ØJà,3Ø*6Ø-7Ø"Ø#Ø(ðð ð /ñ 

ô 

Ðð 	×ÒÐ,Ô8¸#Ñ>Ô>Ð>Ø0×5Ò5Ñ7Ô7ÐØ×ÒÐ+¨HÔ5°zÑBÔBÐBØ×ÒÐ+Ð,BÔCÀgÀYÑOÔOÐOØ×ÒØ˜zÔ*¨1Ô-¨mÔ<¸QÔ?ÀÔIÈ9ñ	
ô 	
ð 	
ð #œk×.Ò.Øcà.:Ø#4Ø#<Ø$%Ø&-°¨zÐ%:ðð ð /ñ 	
ô 	
Ðð 	×ÒÐ,Ô8¸#Ñ>Ô>Ð>Ø0×5Ò5Ñ7Ô7ÐØ×ÒØ˜zÔ*¨1Ô-¨hÔ7Ð9Oñ	
ô 	
ð 	
ð 	×ÒØ˜zÔ*¨1Ô-Ð.AÔBÀKñ	
ô 	
ð 	
ð 	×ÒØ˜zÔ*¨1Ô-¨mÔ<¸QÔ?ÀÔIÈ;ñ	
ô 	
ð 	
ð œ+×*Ò*Ø^à!/Ø!/Ø-8Ø'1Ø%Aðð ð +ñ 	
ô 	
ˆð 	×Ò˜Ô4°cÑ:Ô:Ð:Ø(×-Ò-Ñ/Ô/ˆØ×Ò˜¨Ô1°:Ñ>Ô>Ð>Ø×Ò˜Ð(=Ô>ÀÑBÔBÐBØ×Ò˜Ð(AÔBÀAÑFÔFÐFØ×Ò˜¨
Ô3°AÔ6°xÔ@À*ÑMÔMÐMØ×Ò˜¨
Ô3°AÔ6Ð7JÔKÈZÑXÔXÐXØ×ÒØ˜:Ô& qÔ)¨-Ô8¸Ô;¸HÔEÀzñ	
ô 	
ð 	
ð 	×ÒØ˜9Ô% bÔ)¨-Ô8Ð:Rñ	
ô 	
ð 	
ð œ×)Ò)Ø1àÐ Gðð *ñ 
ô 
ˆð 	×Ò˜Ô3°SÑ9Ô9Ð9Ø&×+Ò+Ñ-Ô-ˆØ×Ò˜ xÔ0°(Ñ;Ô;Ð;Ø×Ò˜ {Ô3Ð5KÑLÔLÐLØ×Ò˜ yÔ1°"Ô5°mÔDÐFVÑWÔWÐWÐWÐWrA   c                ó¨  — | j                              d¦  «        }|                      |j        d¦  «         |                     ¦   «         }|                      |d         d¦  «         |                      |d         ¦  «         |                      t          |d         ¦  «        d¦  «         |                      |d         d         d	         d
¦  «         d S )NrÒ   rÉ   ÚsourceÚpostgresÚused_fallbackÚitemsrq   r   r   r   )rÃ   rQ   rÌ   rÍ   rÈ   ÚassertFalseÚlen)rL   rÚ   rÏ   rN   s       rB   Ú9test_list_reviews_route_returns_schema_compatible_payloadzRDossierReviewRoutesTests.test_list_reviews_route_returns_schema_compatible_payloadœ  sÌ   € ð ”;—?’?Ð#9Ñ:Ô:ˆà×Ò˜Ô-¨sÑ3Ô3Ð3Ø—-’-‘/”/ˆØ×Ò˜ Ô*¨JÑ7Ô7Ð7Ø×Ò˜ Ô1Ñ2Ô2Ð2Ø×Ò�˜W WÔ-Ñ.Ô.°Ñ2Ô2Ð2Ø×ÒØ�GÔ˜QÔ Ô.Ð0Xñ	
ô 	
ð 	
ð 	
ð 	
rA   Nr§   )
r¨   r©   rª   rÄ   r   r¬   rÐ   rE   ræ   rî   r@   rA   rB   r¹   r¹     sì   € € € € € ð+ð +ð +ð +ð €UØ3Ø3Ð3Ñ5Ô5ðñ ô ð
ð 
ð 
ñ	ô ð
ð* €UÐ*Ð9QÐ9QÑ9SÔ9SÐTÑTÔTðnXð nXð nXñ UÔTðnXð` €UÐ*Ð9QÐ9QÑ9SÔ9SÐTÑTÔTð
ð 
ð 
ñ UÔTð
ð 
ð 
rA   r¹   Ú__main__)r   r   )Ú
__future__r   ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arÚunittestÚcopyr   Útypingr   Úunittest.mockr   Úfastapi.testclientr   Ú"app.modules.auth.presentation.authr   Úapp.mainr	   Úapp.models.schemasr
   rC   rE   r¬   ÚTestCaser¹   r¨   Úmainr@   rA   rB   ú<module>r     s‚  ðØ "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )à ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ð(ð (ð (ð (ðV}&ð }&ð }&ð }&ð }&ñ }&ô }&ð }&ð@
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ða
ð a
ð a
ð a
ð a
˜xÔ0ñ a
ô a
ð a
ðH ˆzÒÐØ€H„M�O„O€O€O€Oð ÐrA   