§
     ’j©  ã                   ón   — d dl Zd dlmc mZ d dlmZmZ d dl	m
Z
 d dlmZ  G d„ d¦  «        Zd„ Zd„ ZdS )	é    N)ÚdateÚ	timedelta)ÚDecimal)ÚFinancialWarRoomServicec                   ó   — e Zd Zdedefd„ZdS )ÚMockPostgresClientÚ
start_dateÚend_datec                 ó–   — |t          d¬¦  «        z   ddt          d¦  «        dœ|t          d¬¦  «        z   dd	t          d
¦  «        dœgS )Né   )ÚdaysÚstage_paymentÚinflowz650000000.0000)Útransaction_dateÚtransaction_typeÚ	directionÚamounté
   Úsupplier_paymentÚoutflowz5000000000.0000)r   r   )Úselfr	   r
   s      ú?C:\Projects\DSCons\tests\test_financial_war_room_stress_test.pyÚfetch_planned_transactionsz-MockPostgresClient.fetch_planned_transactions   sn   € ð %/µÀÐ1BÑ1BÔ1BÑ$BØ$3Ø%Ý!Ð"2Ñ3Ô3ð	ð ð %/µÀÐ1CÑ1CÔ1CÑ$CØ$6Ø&Ý!Ð"3Ñ4Ô4ð	ð ð
ð 	
ó    N)Ú__name__Ú
__module__Ú__qualname__r   r   © r   r   r   r      s6   € € € € € ð
°Tð 
ÀTð 
ð 
ð 
ð 
ð 
ð 
r   r   c            	      óØ  — t          ¦   «         } t          | ¬¦  «        }|                     t          ddd¦  «        d¬¦  «        }|j        }|j        }d}||u }|s½t          j        d|fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|j        }|j        }d}	t          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}	}
d S )N©Úpostgres_clientéê  é   r   ©Ú
as_of_dateÚclient_delay_daysF©Úis©za%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.cashflow_runway
}.liquidity_risk_alert
} is %(py7)sÚdata©Úpy0Úpy2Úpy4Úpy7úassert %(py9)sÚpy9z500000000.0000©ú==©z{%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.cashflow_runway
}.lowest_balance
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r   ©r,   r-   r.   Úpy6Úpy8Úpy10úassert %(py12)sÚpy12)r   r   Úget_war_room_summaryr   Úcashflow_runwayÚliquidity_risk_alertÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚlowest_balancer   ©Úmock_clientÚservicer*   Ú@py_assert1Ú@py_assert3Ú@py_assert6Ú@py_assert5Ú@py_format8Ú@py_format10Ú@py_assert7Ú@py_assert9Ú@py_format11Ú@py_format13s                r   Ú,test_financial_war_room_stress_test_no_delayrT      s±  € Ý$Ñ&Ô&€KÝ%°kÐBÑBÔB€Gð ×'Ò'Ý˜˜a Ñ#Ô#°qð (ñ ô €Dð ÔÐ=ÐÔ4Ð=¸Ð=Ð4¸Ð=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=Ð4¸Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Ð=Õ=Ô=ÐÑ=Ô=Õ=Ô=Ð4Ñ=Ô=Õ=Ô=¸Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔÐKÐÔ.ÐKÐ:JÐKµ'Ð:JÑ2KÔ2KÐKÐ.Ð2KÒKÐKÐKÑKÕKÔKÐKÐKÐKÐKÐ.Ð2KÐKÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔKˆ4ÑKÔKÐKÕKÔKˆ4ÑKÔKÐKÐKÕKÔKÐÑKÔKÕKÔKÐ.ÑKÔKÐKÕKÔKÑKÔKÐKÐKÕKÔKµ'ÑKÔKÐKÕKÔKµ'ÑKÔKÐKÐKÕKÔKÐ:JÑKÔKÕKÔKÐ2KÑKÔKÐKÐKÑKÐKÐKÐKÐKÐKÑKÐKÕKÕKÔKÐKÑKÔKÑKÔKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKÐKr   c            	      óL  — t          ¦   «         } t          | ¬¦  «        }|                     t          ddd¦  «        d¬¦  «        }|j        }|j        }d}||u }|s½t          j        d|fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|j        }|j        }d}	t          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}x}	}
|j        }|j        }d}||k    }|s½t          j        d|fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}|j        }|j        }d}||k    }|s½t          j        d|fd||f¦  «        d	t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        d
œz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d x}x}x}}d S )Nr    r"   r#   é   r$   Tr'   r)   r*   r+   r0   r1   z-150000000.0000r2   r4   r   r5   r9   r:   z
2026-01-11)zV%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.cashflow_runway
}.risk_date
} == %(py7)sé	   )z\%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.cashflow_runway
}.net_runway_days
} == %(py7)s)r   r   r;   r   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   r   Ú	risk_dateÚnet_runway_daysrG   s                r   Ú.test_financial_war_room_stress_test_with_delayrZ   *   s9  € Ý$Ñ&Ô&€KÝ%°kÐBÑBÔB€Gð ×'Ò'Ý˜˜a Ñ#Ô#°rð (ñ ô €Dð ÔÐ<ÐÔ4Ð<¸Ð<Ð4¸Ð<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð4¸Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Ð<Õ<Ô<ÐÑ<Ô<Õ<Ô<Ð4Ñ<Ô<Õ<Ô<¸Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔÐLÐÔ.ÐLÐ:KÐLµ'Ð:KÑ2LÔ2LÐLÐ.Ð2LÒLÐLÐLÑLÕLÔLÐLÐLÐLÐLÐ.Ð2LÐLÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔLˆ4ÑLÔLÐLÕLÔLˆ4ÑLÔLÐLÐLÕLÔLÐÑLÔLÕLÔLÐ.ÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔLµ'ÑLÔLÐLÕLÔLµ'ÑLÔLÐLÐLÕLÔLÐ:KÑLÔLÕLÔLÐ2LÑLÔLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLØÔÐ9ÐÔ)Ð9¨\Ð9Ð)¨\Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð)¨\Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆ4Ñ9Ô9Ð9Õ9Ô9ˆ4Ñ9Ô9Ð9Ð9Õ9Ô9ÐÑ9Ô9Õ9Ô9Ð)Ñ9Ô9Õ9Ô9¨\Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9àÔðØÔ,ðØ01ðØ,°Ò1ðð ð õ ìðð ð ð Ø,°ðñ ô ð õ ìñô ð ð õ ìð 	ñô ð õ ìð 	ñô ð ð õ ìð 	ñô õ ìð 	-ñô õ ìð 12ñô ð ð ñ ð ð ð ð ð ñ ð õ õ ìðñ ô ñ ô ð ð ð ð ð ð ð ð ð ð ð r   )Úbuiltinsr@   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter>   Údatetimer   r   Údecimalr   Ú<app.modules.financial.application.financial_war_room_servicer   r   rT   rZ   r   r   r   ú<module>rb      s¯   ðØ  € € € € € € € € € € € € Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à `Ð `Ð `Ð `Ð `Ð `ð
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð&Lð Lð Lð ð ð ð ð r   