§
    ²l»j"&  ã                   óô   — d Z ddlZddlmZ ddlZddlZddlZddlmZ ddl	m
Z
mZmZmZmZmZ ej        dedefd„¦   «         Zdd	„Zd
eddfd„Zd
eddfd„Zd
eddfd„Zd
eddfd„Zd
eddfd„Zd
eddfd„ZdS )z²
Unit tests for FreeExile Design Pipeline Manager and Cross-Department Workflow.
Tests complete lifecycle: Create -> Scan -> Dispatch -> Submit -> QA Audit -> CEO Audit -> Sync.
é    N)ÚPath)ÚImage)ÚApprovalVerdictÚAssetCategoryÚDesignPipelineManagerÚPriorityÚRequestStatusÚis_power_of_twoÚtmp_pathÚreturnc                 ó^   — | dz  }|                      dd¬¦  «         t          |¬¦  «        }|S )zECreates a temporary workspace with full pipeline directory hierarchy.ÚFreeExile_TestT©ÚparentsÚexist_ok)Úworkspace_root)Úmkdirr   )r   ÚwsÚmgrs      ú@C:\Projects\FreeExile\tests\unit\test_design_pipeline_manager.pyÚtemp_workspacer      s:   € ð 
Ð$Ñ	$€BØ‡H‚H�T D€HÑ)Ô)Ð)Ý
¨rÐ
2Ñ
2Ô
2€CØ€Jó    c                  ó\  — t          d¦  «        du sJ ‚t          d¦  «        du sJ ‚t          d¦  «        du sJ ‚t          d¦  «        du sJ ‚t          d¦  «        du sJ ‚t          d¦  «        du sJ ‚t          d¦  «        d	u sJ ‚t          d
¦  «        d	u sJ ‚t          d¦  «        d	u sJ ‚d S )Né   Té   é@   é   é   i   r   Fé   éú   ©r
   © r   r   Útest_power_of_twor#       sé   € Ý˜1ÑÔ Ð%Ð%Ð%Ð%Ý˜1ÑÔ Ð%Ð%Ð%Ð%Ý˜2ÑÔ $Ð&Ð&Ð&Ð&Ý˜3ÑÔ 4Ð'Ð'Ð'Ð'Ý˜3ÑÔ 4Ð'Ð'Ð'Ð'Ý˜4Ñ Ô  DÐ(Ð(Ð(Ð(Ý˜1ÑÔ Ð&Ð&Ð&Ð&Ý˜1ÑÔ Ð&Ð&Ð&Ð&Ý˜3ÑÔ 5Ð(Ð(Ð(Ð(Ð(Ð(r   r   c                 ó  — | }|                      ddddt          j        t          j        ddddd	œd
dg¬¦
  «
        }|                      ddddt          j        t          j        ddddd	œdg¬¦
  «
        }|                      ddddt          j        t          j        ddddd	œdg¬¦
  «
        }| 	                    ¦   «         }t          |¦  «        dk    sJ ‚|d         j        dk    sJ ‚|d          j        dk    sJ ‚|d!         j        dk    sJ ‚d S )"NzDRQ-TEST-001u   Icon Linh Tháº¡ch Há»—n NguyÃªnú$docs/ORIGINAL_SYSTEMS_AND_ECONOMY.mdzLead Systems DesignerÚisometric_animatoru#   Linh tháº¡ch báº£n vá»‹ cá»‘t lÃµi.Ú256x256ÚPNG)Ú
ResolutionÚFormatzchaos_stone.pngzchaos_stone_normal.png©
Ú
request_idÚtitleÚ
source_docÚrequesting_deptÚcategoryÚpriorityÚassigned_agentÚlore_contextÚ
specs_dictÚdeliverableszDRQ-TEST-002u!   UI RÆ°Æ¡ng LuÃ¢n Há»“i Chá»‰ RÃºtú*docs/SEASONAL_LEAGUE_RESET_ARCHITECTURE.mdúLead Documentation ArchitectÚmobile_ui_designeru#   RÆ°Æ¡ng káº¿t chuyá»ƒn mÃ¹a giáº£i.Ú512x512ÚWebPzremove_only_stash.pngzDRQ-TEST-003u&   Trang TrÃ­ MÃ´i TrÆ°á»�ng Ä�áº¡o QuÃ¡nú docs/GAME_ENGINE_ARCHITECTURE.mdzClient ArchitectÚconcept_artistu   Bá»‘i cáº£nh ngoáº¡i cáº£nh.Ú	1024x1024zdaoist_temple_concept.pngr   r   r   r   )Úcreate_requestr   ÚSPRITEr   ÚHIGHÚUIÚCRITICALÚCONCEPTÚLOWÚ
scan_inboxÚlenr,   )r   r   Úreq1Úreq2Úreq3Úinboxs         r   Útest_create_and_scan_inboxrK   ,   s[  € Ø
€Cð ×ÒØ!Ø/Ø9Ø/ÝÔ%Ý”Ø+Ø:Ø"+°uÐ=Ð=Ø'Ð)AÐBð ñ ô €Dð ×ÒØ!Ø1Ø?Ø6ÝÔ!ÝÔ"Ø+Ø:Ø"+°vÐ>Ð>Ø-Ð.ð ñ ô €Dð ×ÒØ!Ø6Ø5Ø*ÝÔ&Ý”Ø'Ø3Ø"-¸Ð?Ð?Ø1Ð2ð ñ ô €Dð �NŠNÑÔ€EÝˆu‰:Œ:˜Š?ˆ?ˆ?ˆ?à�Œ8Ô .Ò0Ð0Ð0Ð0Ø�Œ8Ô .Ò0Ð0Ð0Ð0Ø�Œ8Ô .Ò0Ð0Ð0Ð0Ð0Ð0r   c                 ó¢  — | }|                      ddddt          j        t          j        ddddid	d
g¬¦
  «
        }|j        dz                       ¦   «         sJ ‚|                     dd¬¦  «        }|j        dz                       ¦   «         rJ ‚|j        dz                       ¦   «         sJ ‚|j	        t          j        k    sJ ‚|j        dk    sJ ‚d S )NzDRQ-DISPATCH-001u   VFX Huyá»…n áº¢nh Bá»™ i-framer;   zCombat DesignerÚart_ui_directoru*   Hiá»‡u á»©ng lÆ°á»›t tÃ n áº£nh nÃ© Ä‘Ã²n.ÚShaderzApple Metal Computezphantom_dodge.metalzdodge_trail.pngr+   zDRQ-DISPATCH-001.mdÚvfx_tech_artist)r2   )r>   r   ÚVFXr   rB   Ú	inbox_dirÚexistsÚdispatch_requestÚin_progress_dirÚstatusr	   ÚIN_PROGRESSr2   )r   r   ÚreqÚ
dispatcheds       r   Útest_dispatch_requestrY   _   s  € Ø
€CØ
×
Ò
Ø%Ø.Ø5Ø)ÝÔ"ÝÔ"Ø(ØAØÐ3Ð4Ø+Ð->Ð?ð ñ ô €Cð ŒMÐ1Ñ1×9Ò9Ñ;Ô;Ð;Ð;Ð;ð ×%Ò%Ð&8ÐIZÐ%Ñ[Ô[€Jà”Ð 5Ñ5×=Ò=Ñ?Ô?Ð?Ð?Ð?ØÔÐ"7Ñ7×?Ò?ÑAÔAÐAÐAÐAØÔ¥Ô 9Ò9Ð9Ð9Ð9ØÔ$Ð(9Ò9Ð9Ð9Ð9Ð9Ð9r   c                 ó  — | }|                      ddddt          j        t          j        ddddid	d
g¬¦
  «
        }|                     d¦  «         |j        dz  }|                     dd¬¦  «         t          j	        ddd¦  «        }| 
                    |d	z  ¦  «         t          j	        ddd¦  «        }| 
                    |d
z  ¦  «         |                     dd	d
g¦  «        }|j        t          j        k    sJ ‚|j        dz                       ¦   «         sJ ‚|                     d¦  «        \  }}}	|du sJ ‚t%          |	¦  «        dk    sJ ‚t'          d„ |	D ¦   «         ¦  «        sJ ‚|j        dz                       d¬¦  «        }
d|
v sJ ‚d S )NzDRQ-QA-PASS-001u   Icon Ä�an DÆ°á»£c ChÃ¢n VÃµr%   zSystems Designerr&   u   Ä�an dÆ°á»£c bá»• trá»£.r)   r'   zpill_icon.pngzpill_icon_normal.pngr+   Tr   ÚRGBA)r   r   )éÈ   éd   é2   éÿ   )é€   r`   r_   r_   zDRQ-QA-PASS-001.mdr   c              3   ó$   K  — | ]}|j         V — Œd S )Nr!   )Ú.0Úds     r   ú	<genexpr>z:test_submit_and_qa_technical_audit_pass.<locals>.<genexpr>ž   s%   è è € Ð7Ð7 QˆqÔ Ð7Ð7Ð7Ð7Ð7Ð7r   zutf-8)Úencodingu!   - **Káº¿t Quáº£ Cáº¥p 1**: `PASS`)r>   r   r?   r   r@   rS   Úassets_pendingr   r   ÚnewÚsaveÚsubmit_for_reviewrU   r	   ÚPENDING_REVIEWÚpending_review_dirrR   Úqa_technical_auditrF   ÚallÚ	read_text)r   r   rW   Ú	asset_dirÚ
img_albedoÚ
img_normalÚ	submittedÚpassedÚnotesr5   Úcontents              r   Ú'test_submit_and_qa_technical_audit_passrv   y   sØ  € Ø
€Cà
×
Ò
Ø$Ø+Ø9Ø*ÝÔ%Ý”Ø+Ø/Ø  )Ð,Ø%Ð'=Ð>ð ñ ô €Cð ×ÒÐ*Ñ+Ô+Ð+ð Ô"Ð%6Ñ6€IØ‡O‚O˜D¨4€OÑ0Ô0Ð0å”˜6 :Ð/BÑCÔC€JØ‡O‚O�I Ñ/Ñ0Ô0Ð0å”˜6 :Ð/CÑDÔD€JØ‡O‚O�IÐ 6Ñ6Ñ7Ô7Ð7ð ×%Ò%Ð&7¸/ÐKaÐ9bÑcÔc€IØÔ�}Ô;Ò;Ð;Ð;Ð;ØÔ"Ð%9Ñ9×AÒAÑCÔCÐCÐCÐCð #&×"8Ò"8Ð9JÑ"KÔ"KÑ€FˆE�<Ø�Tˆ>ˆ>ˆ>ˆ>Ýˆ|ÑÔ Ò!Ð!Ð!Ð!ÝÐ7Ð7¨,Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7ð Ô%Ð(<Ñ<×GÒGÐQXÐGÑYÔY€GØ.°'Ð9Ð9Ð9Ð9Ð9Ð9r   c                 ó.  — | }|                      ddddt          j        t          j        ddddid	g¬
¦
  «
         |                     d¦  «         |j        dz  }|                     dd¬¦  «         t          j	        ddd¦  «        }| 
                    |d	z  ¦  «         |                     dd	g¦  «         |                     d¦  «        \  }}}|du sJ ‚d|v sJ ‚|j        dz                       ¦   «         rJ ‚|j        dz                       ¦   «         sJ ‚d S )NzDRQ-QA-FAIL-001u   Icon KÃ­ch ThÆ°á»›c Lá»—ir;   z	Test Deptr&   zTest non-POT size.r)   Ú250x250zbad_size.pngr+   Tr   r[   )r    r    )r_   r   r   r_   Fz'dimensions (250x250) are not power of 2zDRQ-QA-FAIL-001.md)r>   r   r?   r   ÚMEDIUMrS   rf   r   r   rg   rh   ri   rl   rk   rR   Úrejected_dir)r   r   ro   Úimg_badrs   rt   r5   s          r   Ú0test_qa_technical_audit_fail_on_non_power_of_twor|   ¥   sT  € Ø
€Cà×ÒØ$Ø)Ø5Ø#ÝÔ%Ý”Ø+Ø)Ø  )Ð,Ø$Ð%ð ñ ô ð ð ×ÒÐ*Ñ+Ô+Ð+àÔ"Ð%6Ñ6€IØ‡O‚O˜D¨4€OÑ0Ô0Ð0õ Œi˜ 
Ð,<Ñ=Ô=€GØ‡L‚L�˜^Ñ+Ñ,Ô,Ð,à×ÒÐ+¨nÐ-=Ñ>Ô>Ð>à"%×"8Ò"8Ð9JÑ"KÔ"KÑ€FˆE�<Ø�Uˆ?ˆ?ˆ?ˆ?Ø4¸Ð=Ð=Ð=Ð=ð Ô&Ð)=Ñ=×EÒEÑGÔGÐGÐGÐGØÔÐ3Ñ3×;Ò;Ñ=Ô=Ð=Ð=Ð=Ð=Ð=r   c                 ó  — | }|                      ddddt          j        t          j        ddddid	g¬
¦
  «
         |                     d¦  «         |j        dz  }|                     dd¬¦  «         t          j	        ddd¦  «        }| 
                    |d	z  ¦  «         |                     dd	g¦  «         |                     d¦  «        \  }}}|du sJ ‚|                     ddt          j        dd¬¦  «        }|j        t"          j        k    sJ ‚|j        dz                       ¦   «         sJ ‚|j        dz                       ¦   «         rJ ‚|j        dz  d	z                       ¦   «         sJ ‚|j        dz  d	z                       ¦   «         sJ ‚d S )NzDRQ-CEO-APP-001u   Banner MÃ¹a Giáº£i Má»›ir6   r7   r8   u4   Khá»Ÿi Ä‘áº§u mÃ¹a giáº£i ThiÃªn Ä�áº¡o LuÃ¢n Há»“i.r)   r9   zseason_banner.pngr+   Tr   r[   )r   r   )é   é   é(   r_   Ústudio_produceru.   Phong cÃ¡ch Cá»• VÃµ Háº¯c Ã�m tuyá»‡t Ä‘áº¹p!Úseasons)r,   ÚapproverÚverdictrt   Úsync_to_client_subfolderzDRQ-CEO-APP-001.md)r>   r   rA   r   rB   rS   rf   r   r   rg   rh   ri   rl   Úceo_aesthetic_auditr   ÚAPPROVErU   r	   ÚAPPROVEDÚapproved_dirrR   rk   Úassets_approvedÚclient_webapp_assets)r   r   ro   ÚimgÚqa_passÚ_Úapproved_reqs          r   Ú&test_ceo_aesthetic_audit_full_approvalr�   É   sÙ  € Ø
€Cà×ÒØ$Ø(Ø?Ø6ÝÔ!ÝÔ"Ø+ØKØ  )Ð,Ø)Ð*ð ñ ô ð ð ×ÒÐ*Ñ+Ô+Ð+àÔ"Ð%6Ñ6€IØ‡O‚O˜D¨4€OÑ0Ô0Ð0å
Œ)�F˜JÐ(9Ñ
:Ô
:€CØ‡H‚HˆYÐ,Ñ,Ñ-Ô-Ð-à×ÒÐ+Ð.AÐ-BÑCÔCÐCð ×*Ò*Ð+<Ñ=Ô=�M€GˆQ�Ø�dˆ?ˆ?ˆ?ˆ?ð ×*Ò*Ø$Ø"ÝÔ'Ø>Ø!*ð +ñ ô €Lð Ô¥-Ô"8Ò8Ð8Ð8Ð8ØÔÐ3Ñ3×;Ò;Ñ=Ô=Ð=Ð=Ð=ØÔ&Ð)=Ñ=×EÒEÑGÔGÐGÐGÐGð ÔÐ"3Ñ3Ð6IÑI×QÒQÑSÔSÐSÐSÐSØÔ$ yÑ0Ð3FÑF×NÒNÑPÔPÐPÐPÐPÐPÐPr   c                 ó  — | }|                      ddddt          j        t          j        ddi g ¬¦
  «
         |                     ¦   «         }|d         d	k    sJ ‚|d
         dk    sJ ‚|                     ¦   «         }d|v sJ ‚d|v sJ ‚d S )NzDRQ-SUM-001zTest Requestr;   ÚQAr<   zSummary testr+   rJ   r   Úin_progressr   z'FREEEXILE DESIGN PIPELINE STATUS REPORT)r>   r   rC   r   rD   Úget_pipeline_summaryÚgenerate_status_report)r   r   ÚsummaryÚreports       r   Ú test_pipeline_summary_and_reportr˜   ù   s¿   € Ø
€CØ×ÒØ ØØ5ØÝÔ&Ý”Ø'Ø#ØØð ñ ô ð ð ×&Ò&Ñ(Ô(€GØ�7Ô˜qÒ Ð Ð Ð Ø�=Ô! QÒ&Ð&Ð&Ð&à×'Ò'Ñ)Ô)€FØ4¸Ð>Ð>Ð>Ð>Ø˜FÐ"Ð"Ð"Ð"Ð"Ð"r   )r   N)Ú__doc__ÚosÚpathlibr   ÚshutilÚtempfileÚpytestÚPILr   Ú,tools.asset_pipeline.design_pipeline_managerr   r   r   r   r	   r
   Úfixturer   r#   rK   rY   rv   r|   r�   r˜   r"   r   r   ú<module>r¢      s×  ððð ð
 
€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð „ð˜Tð Ð&;ð ð ð ñ „ðð	)ð 	)ð 	)ð 	)ð01Ð/Dð 01Èð 01ð 01ð 01ð 01ðf:Ð*?ð :ÀDð :ð :ð :ð :ð4):Ð<Qð ):ÐVZð ):ð ):ð ):ð ):ðX!>ÐEZð !>Ð_cð !>ð !>ð !>ð !>ðH-QÐ;Pð -QÐUYð -Qð -Qð -Qð -Qð`#Ð5Jð #Ètð #ð #ð #ð #ð #ð #r   