
    pj                    t    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Zd dl	m
Z
 d dlmZ d Zdd	Zdd
ZddZdS )    )annotationsN)Path)connect)apply_migrationsc                    t          t                    j        d         dz  dz  } t          j                            d|           }|r|j        sJ t          j                            |          }|j                            |           |S )N   scriptsz sprint16_household_onboarding.pysprint16_household_onboarding)	r   __file__parents	importlibutilspec_from_file_locationloadermodule_from_specexec_module)pathspecmodules      0tests/unit/test_sprint16_household_onboarding.py_moduler      s|    >>!!$y03UUD>112QSWXXDDK^,,T22FKF###M    returnstrc                 4   dg} t          d          D ]n}|dk    }|                     d                    |rdndd|rdnd	| |rd
nd|dz    d|rdnddg                     |dk     r|                     d|            od                    |           dz   S )Nz;IBAN;Booked At;Text;Credit/Debit Amount;Balance;Valuta DateE   D   ;zSYN-REF-B-2222zSYN-REF-A-1111z
2026-07-28Interestz
Synthetic 1.25-   z.0020.001000.009   z;;Continuation 
rangeappendjoin)linesindexis_interests      r   _raiffeisen_csvr.      s    JKEr 4 4rkHH(3I$$9I "-GJJ3G3G3G)AFF/A519/A/A/A*9GG	 	 		
 	
 	
 2::LL252233399Ud""r   c                     dg} t          d          D ](}|dk     rdnd}|                     d| d| d           )d	                    |           d	z   S )
Nz@TransactionId,CardId,Date,Amount,Currency,MerchantName,StateType   
   zSYN-CARD T,z%,2026-07-01,1.00,CHF,Synthetic,bookedr&   r'   )r+   r,   	references      r   	_visa_csvr6   ,   sr    OPEr S S"'"**JJ"	QQQQQQRRRR99Ud""r   tmp_pathr   Nonec                	   t                      }|                    dd           | dz  }t          |          }t          |           |                    d           dD ]}|                    d||f           |                                 |                                 | dz  }| dz  }|                    t                                 |                    t                                 | d	z  }|                    t          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|j        d }	|                    t          j        dGi |	d dd!          }
|                    t          j        dGi |	| d"z  dd!          }t          |          }|                    d#                                          d$         }|                                 |                    t          j        dGi |	| d%z  dd!          }t          |          }|                    d#                                          d$         }|                    d&                                          d$         }|                    d'                                          d$         }|                    d(                                          }|                                 |
d)         du sJ |
d*         dd+ddgd,k    sJ |d-         d.         d/k    sJ |d-         d0         du sJ | d"z                                  j        d1z  dk    sJ |d-         d.         d2k    r|d-         d3         du sJ ||k    r|d4k    r|d5k    sJ d6 |D             d7d8gk    sJ t          |          }|                    d9           |                                 t+          j        t.          d:;          5  |                    |d<d=d>d?d?d@A           d d d            n# 1 swxY w Y   |                    dB           |                    dC           |                                 t+          j        t.          d:;          5  |                    |dDd<d>dEF           d d d            n# 1 swxY w Y   |                                 d S )HNJARVIS_FINANCE_FINGERPRINT_KEYzsynthetic-onboarding-keyzfinance.sqlite3zmINSERT INTO platforms(platform_id,name,platform_type,created_at) VALUES ('p','Synthetic','bank','2026-01-01'))acct_raiffeisenacct_akbzINSERT INTO accounts(
                 account_id,platform_id,account_name,account_type,currency,performance_included,
                 portfolio_bucket,created_at)
               VALUES (?, 'p', ?, 'cash', 'CHF', 0, 'cash', '2026-01-01')zraiffeisen.csvzvisa.csvzauthorization.jsonzs16-source-truth-v1   r   r"   11112222r$   r#   r    TF)both_base_blocksboth_reference_aboth_transitions_correctremoval_breaks_chain!identical_provider_transaction_idpending_booked_pair)	physical_lines_including_headerreference_a_bookingsreference_b_bookingsreference_a_suffixreference_b_suffix reference_a_provider_balance_chf reference_b_provider_balance_chfreference_b_interest_chfchain_auditr0   r1   r   )transactionsprovider_reference_rowsfallback_role_rows)contract
raiffeisenvisai  r;   r<   zSYN-AKB)dbauthorization_manifestraiffeisen_csvvisa_csvraiffeisen_account_idakb_account_idakb_source_referenceauthorization)backupconfirm_onboardingzbefore-first.sqlite3zSELECT COUNT(*) FROM audit_logr   zbefore-retry.sqlite3z6SELECT COUNT(*) FROM household_account_source_mappingszPRAGMA integrity_checkzSELECT account_type,currency,performance_included,portfolio_bucket
           FROM accounts WHERE account_id IN ('acct_s16_raiffeisen_extra','acct_s16_visa_liability')
           ORDER BY account_iddatabase_unchangedrS   r   )rF   logical_bookingsreference_distributionresultstatus	confirmedbackup_restore_verifiedi  	unchanged
idempotent   okc                ,    g | ]}t          |          S  )tuple).0rows     r   
<listcomp>zitest_onboarding_is_copy_first_integrity_checked_private_manifest_bound_and_idempotent.<locals>.<listcomp>   s    (((3E#JJ(((r   )cashCHFr   rp   )credit_card_liabilityrq   r   	liabilityzTUPDATE accounts SET is_health_reserve=1 WHERE account_id='acct_s16_raiffeisen_extra'zincompatible semantics)matchacct_s16_raiffeisen_extrapu1   Raiffeisen Mitglieder-Sparkonto •••• 2222rp   	Synthetic)
account_idplatform_idnameaccount_typebucketnoteszTUPDATE accounts SET is_health_reserve=0 WHERE account_id='acct_s16_raiffeisen_extra'zVUPDATE budget_accounts SET is_active=0 WHERE budget_account_id='bacc_s16_raiffeisen_b'bacc_s16_raiffeisen_bchecking)	budget_idrx   rz   r{   rk   )r   setenvr   r   executecommitclose
write_textr.   r6   jsondumpschmodAUTHORIZATIONrunargparse	Namespacefetchonefetchallstatst_modepytestraisesRuntimeError_ensure_account_ensure_budget_account)r7   monkeypatchr   databaseconnrx   rS   rT   manifestcommondryfirstaudits_beforeretryaudits_aftermapping_count	integrityroless                     r   Utest_onboarding_is_copy_first_integrity_checked_private_manifest_bound_and_idempotentr   4   s9    YYF79STTT++H8DTLLw   6 
 

M $	
 	
 	
 	
 	KKMMMJJLLL,,Jj D/++,,,OOIKK   ..H
17:,.,-*0*08A8?06,0,04804=B/4$ $ $ *,bcdd) 	
 	
  4 NN5"*$!2$ )-	 	F **X'XX&XRWXXXX
Y
YCJJggVgH7M,Mbfgggg E 8DLL!ABBKKMMaPMJJLLLJJggVgH7M,Mbfgggg E 8D<< @AAJJLLQOLLL!YZZcceefghM566??AA!DILL	"  hjj	 

 	JJLLL#$,,,,|+.#%q'! !    
 ?8$3333?45====--3355=ENNNN?8$33h8UY]8]8]8]]=((]a-?-?IQUDUDUDUU((%((("8-    
 8DLLghhhKKMMM	|+C	D	D	D 	
 	
2D 	 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	LLghhhLLijjjKKMMM	|+C	D	D	D 
 
%%-2D# 	& 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 	JJLLLLLs$   P--P14P1R88R<?R<)r   r   )r7   r   r   r8   )
__future__r   r   importlib.utilr   r   pathlibr   r   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   r   r.   r6   r   rk   r   r   <module>r      s    " " " " " "              3 3 3 3 3 3 > > > > > >  # # # #*# # # #} } } } } }r   