
    \jU                        d dl 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mZmZmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZ d Zd Zd Zd Zd Zd Zy)    )annotationsN)HTTPException)confirm_create_budget_account)confirm_create_categoryimport_budget_csv_text)$classify_swisslos_internal_transfersconfirm_transaction_candidatelist_transaction_candidates preview_batch_confirm_candidates)get_budget_status_by_category)list_budget_transactionslist_budget_transfers)connect_memory)apply_migrationsc                 0    t               } t        |        | S )N)r   r   conns    2tests/unit/test_budget_internal_transfer_hotfix.pydbr      s    DTK    c                |    t        | dddd      d   }t        | dddd      d   }t        | ddd	      d   }|||fS )
N
RaiffeisencashCHF)nameaccount_typecurrency	entity_idAKB HaushaltskontozEssen & Haushaltexpense)r   category_type)r   r   )r   raifakbfoods       r   
setup_baser&      se    (V\jo/pqr}~D
'7K]cqv.w
x  zE  FC"42DW`)abcnoDd?r   c                D    t        | dddd       t        | dddd       y )	Nraiffeisen_bankzIBAN;Booked At;Text;Credit/Debit Amount;Balance;Valuta Date
CH1280808006766055632;2026-01-26;Einkauf TWINT SWISSLOS E-COMMERCE;-100.00;0;2026-01-26
z*260518_Konto_Raiffeisen_20260518085941.csvFsource_file_labeldry_runakb_bankzBuchung;Valuta;Buchungstext;Belastung;Gutschrift;Saldo CHF
26.01.2026;26.01.2026;TWINT-Zahlung SWISSLOS E-COMMERCE, BASEL;100.00;;0
zKontoauszug_360 Tage_AKB.csvr   r   s    r   seed_swisslosr-   "   s8     	aF  	Q8r   c                    t               } t        |        t        |        t        |       }|d   dk(  sJ t	        | d      }t	        | ddd      }t        d |D              sJ t        d	 |D              }|d
   dk(  sJ |d   dk(  sJ |d   J |d   dk(  sJ |d   dk(  sJ |d   dk(  sJ | j                  d      j                         }|d   dk(  sJ d|d   v sJ y )Nupdated_count   2026)budget_year	transfersTr2   tabinclude_referencec              3  *   K   | ]  }d |d   v  yw)SWISSLOSdescriptionN .0rs     r   	<genexpr>z_test_swisslos_raiffeisen_candidate_is_transfer_and_not_normal_review_expense.<locals>.<genexpr>:   s     Baz=!11Bs   c              3  2   K   | ]  }|d    dk(  s|  ywsource_typer(   Nr:   r;   s     r   r>   z_test_swisslos_raiffeisen_candidate_is_transfer_and_not_normal_review_expense.<locals>.<genexpr>;   s     MQq'7;L'LqM   statustransfer_candidateclassificationproposed_category_id	rule_nameu9   Raiffeisen TWINT Swisslos → AKB Haushaltskonto Transferbudget_impactneutraltransfer_target_account_namer    zjSELECT target_action, notes FROM budget_import_rules WHERE rule_id='rule_raiffeisen_swisslos_akb_transfer'target_actionnotes)	r   r&   r-   r	   r   allnextexecutefetchone)r   resultnormalr3   rowstored_rules         r   Ltest_swisslos_raiffeisen_candidate_is_transfer_and_not_normal_review_expenserU   3   s9   4DD!=#61$7F/"a'''(6BF+Df+imnIB6BBBB
M)M
MCx=0000 $8888%&...{ZZZZ9,,,-.2FFFF,,   L  M  V  V  XK'+????;w#7777r   c            	     B   t               } t        |       \  }}}t        |        t        |        t	        d t        | ddd      D              }t        j                  t              5 }t        | |d   g|d       d d d        j                  j                  d   d	   d
   dk(  sJ t        j                  t              5  t        | |d   |ddd       d d d        t        | |d   ||ddd      }|d   dk(  sJ t        | d      sJ t        | dd      g k(  sJ t        | dd      g k(  sJ t        t        | dd            dk(  sJ t!        | d      g k(  sJ | j#                  d      j%                         d	   dk(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nc              3  2   K   | ]  }|d    dk(  s|  ywr@   r:   r;   s     r   r>   zltest_transfer_candidate_confirm_creates_transfer_not_income_or_expense_and_batch_skips_it.<locals>.<genexpr>J   s9       i1  CD  ER  CS  Wh  ChQ  irB   r1   r3   Tr4   transaction_candidate_id)candidate_ids
account_idr2   	conflictsr   reasontransfer_candidate_blockedtransfer)rZ   transaction_typer2   )from_account_idto_account_idr_   r2   rC   	confirmed)yearr!   )rc   r_   income   zJSELECT COUNT(*) FROM audit_log WHERE action='candidate_transfer_confirmed'r0   )r   r&   r-   r	   rN   r   pytestraisesr   r   valuedetailr
   r   r   lenr   rO   rP   )r   r#   r$   _food	candidateblockedrQ   s          r   Ytest_transfer_candidate_confirm_creates_transfer_not_income_or_expense_and_batch_skips_itrn   G   s   4DJt$4!sEmD6I(.  i ;DfZey} ~  i  iI	}	% K(iHb>c=dqu  DJ  	KK==,Q/9=YYYY	}	% `%dI6P,Qbf  }G  X^  T_  	`` +4;U1Vlp  DG  ]g  x~  Y  @F({*** F333#Dv	RVXXXX#DvQUWWWW'6JWX\]]]](F;rAAA<<dennpqrswxxxxK K` `s   (FFFFc                     t               } t        |        t        | dddd       t        |       }t	        | ddd	      d
   }|d   dk(  sJ |d   dk(  sJ |d   du sJ y )Nr(   zIBAN;Booked At;Text;Credit/Debit Amount;Balance;Valuta Date
CH1280808006766055632;2026-05-13;Einkauf TWINT SWISSLOS E-COMMERCE;-100.00;0;2026-05-13
zraiffeisen.csvFr)   r1   r3   Tr4   r   unmatched_countr0   transfer_pair_status	unmatchedrequires_review)r   r&   r   r	   r   )r   rQ   rS   s      r   8test_unmatched_swisslos_transfer_remains_review_requiredrt   \   s    4DD!4!2  5M  aq  {@  A1$7F
%dKcg
hij
kC#$)))%&+555 !T)))r   )
__future__r   rf   fastapir   'jarvis_finance.services.budget_accountsr   )jarvis_finance.services.budget_categoriesr   *jarvis_finance.services.budget_csv_importsr   &jarvis_finance.services.budget_importsr	   r
   r   r   'jarvis_finance.services.budget_overviewr   +jarvis_finance.services.budget_transactionsr   r   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   r   r&   r-   rU   rn   rt   r:   r   r   <module>r      sO    "  ! Q M M  R g : >"8(y**r   