
    ]jj	
                    D   d dl mZ d dlmZ d dlZd dlZd dlmZ d dlZ ee	          
                                j        d         Zedz  Z ed          d ej                     d	 ej                     z  Zed
z  dz  Z ed                                          
                                ZdD ]Zej                            e          Zer ee                                          
                                Zeek    s	eej        v r ej        e d           ed          
                                egej        R vr ej        e d          dej        d<    ee          ej        d<    ee          ej        d<   dej        d<   dej        d<    ee          ej        vr$ej                            d  ee                      ej        dd          d$d            Z ej        d          d%d!            Zej        d&d#            Z dS )'    )annotations)dateN)Path   srcz/tmpzfinancemanager-pytest--datazfinance.sqlite3z~/jarvis_runtime/finance-system)JARVIS_FINANCE_RUNTIME_DIRJARVIS_FINANCE_DB_PATHz0 points at the productive FinanceManager runtimez  must point below /tmp for teststestJARVIS_FINANCE_ENVr
   r   JARVIS_FINANCE_WRITE_MODEz-synthetic-test-only-household-fingerprint-keyJARVIS_FINANCE_FINGERPRINT_KEYsessionT)scopeautousereturnr   c                     ddl m}  ddlm} t          j                            dd            | t                    }	  ||           |                                 n# |                                 w xY wt          S )zEMake every default API dependency use a disposable schema below /tmp.r   )connect)apply_migrationsT)parentsexist_ok)jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   TEST_DBparentmkdirclose)r   r   conns      tests/conftest.pyisolated_runtime_databaser!   "   s     877777BBBBBBN55577D



Ns   A A5)r   monkeypatchpytest.MonkeyPatchNonec                :    d	d}|                      d|           dS )
z;Unit tests must never depend on live provider availability._argsobject_kwargsr   r$   c                      t          d          )Nexternal_http_blocked_in_tests)OSError)r&   r(   s     r    blockedz-block_unmocked_external_http.<locals>.blocked6   s    6777    zurllib.request.urlopenN)r&   r'   r(   r'   r   r$   )setattr)r"   r,   s     r    block_unmocked_external_httpr/   2   s5    8 8 8 8 0':::::r-   r   c                    ddl m}  G d dt                    }|                     |d|           |                                S )z>Keep budget tests anchored to their synthetic May 2026 ledger.r   )budget_overviewc                  &    e Zd Zedd            ZdS ),budget_reference_date.<locals>.ReferenceDater   ReferenceDatec                     | ddd          S )Ni         )clss    r    todayz2budget_reference_date.<locals>.ReferenceDate.todayC   s    3tQ###r-   N)r   r4   )__name__
__module____qualname__classmethodr:   r8   r-   r    r4   r3   B   s2        		$ 	$ 	$ 
	$ 	$ 	$r-   r4   r   )jarvis_finance.servicesr1   r   r.   r:   )r"   r1   r4   s      r    budget_reference_dater@   <   sl     877777$ $ $ $ $ $ $ $
 ???   r-   )r   r   )r"   r#   r   r$   )r"   r#   r   r   )!
__future__r   datetimer   ossyspathlibr   pytest__file__resolver   ROOTSRCgetuidgetpidTEST_RUNTIMEr   
expanduserPRODUCTIVE_RUNTIMEvariableenvironget
configuredresolved
UsageErrorstrpathinsertfixturer!   r/   r@   r8   r-   r    <module>rZ      s   " " " " " "       				 



       tH~~'*
UltF||Ryry{{RRYRY[[RRR

"3
3T;<<GGIIQQSS H S SH))J S4
##..0088::)))-?8CS-S-S#&#x$a$a$abbb4<<!!()FX5E)F)FFF#&#x$Q$Q$QRRR#)
  +.3|+<+<
' ('*s7||
# $*0
& '/^
+ ,3s8838HOOAss3xx    i...   /. ; ; ; ; ! ! ! ! ! !r-   