
    pj                        d dl mZ d dlZd dlmc mZ d dl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 dlmZ d d	lmZ d d
lmZ d Zd ZddZddZddZdS )    )annotationsN)confirm_create_budget_account)confirm_create_category)get_budget_data_explorerget_category_analysis_v2)get_monthly_comparison)get_budget_vs_actual_analysis)confirm_budget_transaction)connect_memory)apply_migrationsc                 @    t                      } t          |            | S )N)r   r   )conns    a/home/agent/.hermes/worktrees/FinanceManager-sprint20d/tests/unit/test_budget_ux_foundation_v3.pydbr      s    D-d333D[    c                   t          | dddd          d         }t          | ddd          d         }t          | d	d
d          d         }t          | |d
dd	ddd|dd	           t          | |dddddd|dd	           d S )NHaushaltcheckingCHF)nameaccount_typecurrency	entity_idzEssen & Haushaltexpense)r   category_typeLohnincomez
2026-05-01Arbeitgeberz100.00manual)	
account_idtransaction_typetransaction_datedescriptionpayeeamount_originalcurrency_originalcategory_idsource_typez
2026-05-02EinkaufMigros25.00)r   r   r
   )r   accountfoodr   s       r   seedr.      s   +D:Waot2u2uvv  xC  DG"42DW`)a)abbcnoD$TFX+V+VWWXcdFtGQYo{  MS  ^k  @H  _d  u{  LT  &U  &U  V  V  VtGQZp|  NW  bj  F  ]b  sw  HP  &Q  &Q  R  R  R  R  Rr   datadictviewstrreturnNonec                   | d         d         }||k    }|st          j        d|fd||f          t          j        |          dt          j                    v st          j        |          rt          j        |          nddz  }dd|iz  }t          t          j        |                    d x}}| d         d         }d	}||k    }|slt          j        d|fd
||f          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}}| d         d         }|s:ddt          j        |          iz  }	t          t          j        |	                    d }| d         }
t          |
t                    }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |
          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}
}| d         }
t          |
t                    }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |
          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}
}| d         }
t          |
t                    }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |
          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}
}| d         }
t          |
t                    }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |
          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}
}| d         }
t          |
t                    }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |
          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}
}| d         }
t          |
t                    }|sddt          j                    v st          j        t                    rt          j        t                    ndt          j        |
          dt          j                    v st          j        t                    rt          j        t                    ndt          j        |          dz  }t          t          j        |                    d x}
}d S )Nmetar1   ==)z%(py1)s == %(py3)s)py1py3zassert %(py5)spy5r   r   z%(py1)s == %(py4)sr9   py4assert %(py6)spy6generated_atzassert %(py1)sr9   filters_appliedz5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}
isinstancer0   )py0py2r:   r;   totalsserieslistrowswarningserrors)
@pytest_ar_call_reprcompare	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanationrC   r0   rH   )r/   r1   @py_assert0@py_assert2@py_format4@py_format6@py_assert3@py_format5@py_format7@py_format2@py_assert1@py_assert4s               r   assert_enveloper^      sB   <'4''''''''''4''''''''''''''''4'''''4'''''''''''''''''''''''''''<
#,u,#u,,,,,,,,,,#u,,,,,#,,,,u,,,,,,,,,,,,,,,,,,,,,,,,,,,<''''''''''''''''''''''''',-4:-t444444444444444:44444:444444-44444444444t44444t444444444444444444444444448n+:nd+++++++++++++++:+++++:++++++n+++++++++++d+++++d++++++++++++++++++++++++++8n+:nd+++++++++++++++:+++++:++++++n+++++++++++d+++++d++++++++++++++++++++++++++6l):lD))))))))))))))):))))):))))))l)))))))))))D)))))D)))))))))))))))))))))))))):&-:&---------------:-----:------&------------------------------------------8n+:nd+++++++++++++++:+++++:++++++n+++++++++++d+++++d++++++++++++++++++++++++++++r   c                    t                      } t          |            t          | ddd          }t          |d           |d         d         }d}||k    }|slt	          j        d|fd	||f          t	          j        |          t	          j        |          d
z  }dd|iz  }t          t	          j        |                    d x}x}}|d         d         }d}||k    }|slt	          j        d|fd	||f          t	          j        |          t	          j        |          d
z  }dd|iz  }t          t	          j        |                    d x}x}}|d         }|d         }||k    }|slt	          j        d|fd	||f          t	          j        |          t	          j        |          d
z  }dd|iz  }t          t	          j        |                    d x}x}}|d         d         }d}||k    }|slt	          j        d|fd	||f          t	          j        |          t	          j        |          d
z  }dd|iz  }t          t	          j        |                    d x}x}}d S )N2026z2026-05r   )yearmonthtypedata_explorerrB   ra   r7   r<   r=   r?   r@   rF   transaction_count   rI   transactionskpisexpense_sum_chfr+   )	r   r.   r   r^   rL   rM   rN   rR   rS   )r   r/   rT   rX   rU   rY   rZ   s          r   =test_data_explorer_returns_analytics_envelope_and_legacy_keysrj   %   s   44Dd#DvYYWWWDD/***!"6*4f4*f4444444444*f44444*4444f444444444444444444444444444>-.3!3.!3333333333.!33333.3333!333333333333333333333333333</4//<///////////<//////<////////////////////////////////<)*5g5*g5555555555*g55555*5555g55555555555555555555555555555r   c                 D   t                      } t          |            t          | dd          }t          | d          }t	          | d          }t          |d           |d         }|d         }||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j
        |                    d x}x}}t          |d           |d         }|d         }||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j
        |                    d x}x}}t          |d           |d         }|d         }||k    }|slt          j        d|fd	||f          t          j        |          t          j        |          d
z  }dd|iz  }t          t          j
        |                    d x}x}}d S )Nr`   r   )ra   tx_type)ra   category_analysisrI   
categoriesr7   r<   r=   r?   r@   monthly_comparisonmonthsbudget_vs_actualbudget_vs_actual_by_category)r   r.   r   r   r	   r^   rL   rM   rN   rR   rS   )	r   categorymonthlyrq   rT   rX   rU   rY   rZ   s	            r   Dtest_category_monthly_and_budget_vs_actual_return_analytics_enveloperu   /   s   44Dd'69MMMH$T777G4TGGGH1222F5x555555555555555555555555555555555555555555555555555G12226?/gh//?///////////?//////?////////////////////////////////$&8999F#W'78V'WW#'WWWWWWWWWWW#'WWWWWW#WWWW'WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWr   )r/   r0   r1   r2   r3   r4   )r3   r4   )
__future__r   builtinsrO   _pytest.assertion.rewrite	assertionrewriterL   'jarvis_finance.services.budget_accountsr   )jarvis_finance.services.budget_categoriesr   ,jarvis_finance.services.budget_data_explorerr   r   (jarvis_finance.services.budget_analyticsr   +jarvis_finance.services.budget_analytics_v2r	   +jarvis_finance.services.budget_transactionsr
   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   r   r.   r^   rj   ru    r   r   <module>r      s8   " " " " " "               Q Q Q Q Q Q M M M M M M k k k k k k k k K K K K K K U U U U U U R R R R R R : : : : : : > > > > > >A A AR R R	, 	, 	, 	,6 6 6 6X X X X X Xr   