
    aj:                        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mZ d dlmZ d dlmZ d d	lmZmZmZ ddZddZddZddZddZddZddZddZ ddZ!ddZ"d dZ#ddZ$dS )!    )annotations)Path)data)main)page_00_command_centerpage_04_cryptopage_05_walletspage_08_reports)page_03_equities_etfspage_17_position_add)connect_memory)apply_migrations)FakeStreamlitsetup_multi_wallet_crypto_connTECHNICAL_FIELDSstr   returnstrc                    g }| j         D ]V\  }}}|                    d |D                        |                    d |                                D                        Wd                    |          S )Nc              3  4   K   | ]}t          |          V  d S Nr   ).0args     5tests/unit/test_dashboard_usability_simplification.py	<genexpr>z _visible_text.<locals>.<genexpr>   s(      ..#SXX......    c              3  4   K   | ]}t          |          V  d S r   r   )r   values     r   r   z _visible_text.<locals>.<genexpr>   s(      ==ESZZ======r   
)callsextendvaluesjoin)r   parts_nameargskwargss        r   _visible_textr)      s~    E!x > >tV........==V]]__=======99Ur   Nonec                    t          j                    g dk    sJ dt          j                    vsJ dt          j                    vsJ t          t          d                              d                    g k    sJ d S )N)zCommand Center	PortfolioCryptoWallets   Position hinzufügenReports	WatchlistzEquities/ETFsz"src/jarvis_finance/dashboard/pagesz[0-9][0-9]_*.py)dashboard_mainget_user_navigation_titlessortedr   glob r   r   Mtest_user_mode_navigation_is_radically_reduced_and_streamlit_autopages_absentr7      s    466  ;R  ;R  ;R  R  R  R  RnGIIIIII."K"M"MMMMM$;<<AABSTTUUY[[[[[[[r   c                    t                      } t          |            t                      }t          j        ||            t          |          }d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d|vsJ d	|vsJ d
|vsJ d S )Nr/   u   1. Assetklasse wählenz2. Instrument suchenzLokal suchenzOnline suchenzManuell anlegenzPosition speicherncatalog_entry_idinstrument_id	source_id)r   r   r   r   renderr)   connr   texts      r   Mtest_position_add_page_is_visible_wizard_and_does_not_call_provider_on_renderr@      s    DT	BD)))D!T))))#t++++!T))))T!!!!d""""$$$$4''''T))))$&&&&d""""""r   c                    t                      } t          |            t          dh          }t          j        ||            t          |          }d|v sJ d|v sJ |j                            d          dk    sJ d S )Nr/   button_presseszENoch keine Cash-, Aktien- oder ETF-Positionen im User Mode vorhanden.jarvis_requested_page)r   r   r   r   r<   r)   session_stategetr=   s      r   >test_portfolio_empty_state_has_add_button_and_routes_to_wizardrG   /   s    DT	'=&>	?	?	?B T***DRVZZZZZ!T)))) 788<RRRRRRRr   c                F   |                      dd           |                      dd           |                      dd           |                      dd           |                      dd           |                      dd           |                     d	t          |                     t                      }t	          |           t                      }t          j        ||           t          |          }d
|v sJ d|v sJ d|v sJ d|v sJ d|v sJ d|vsJ d S )NOPENFIGI_API_KEYF)raisingJARVIS_OPENFIGI_API_KEYFINNHUB_API_KEYJARVIS_FINNHUB_API_KEYFMP_API_KEYJARVIS_FMP_API_KEYJARVIS_FINANCE_RUNTIME_DIRzProvider-StatusOpenFIGIzAPI-Key fehltz,~/jarvis_runtime/finance-system/secrets/.envzruntime-file-key)	delenvsetenvr   r   r   r   r   r<   r)   )monkeypatchtmp_pathr>   r   r?   s        r   5test_provider_status_visible_without_secrets_or_crashrV   :   sh   )59990%@@@(%888/???}e444+U;;;3S]]CCCDT	BD)))D$$$$d""""9TAAAA%%%%T))))))r   c                 h   t                      } |                     d           t                      }t          j        ||            t          |          dv sJ d |j        D             }t          |          dk    sJ t          h dz  }t          fd|D                       sJ dv sJ d S )Na9  INSERT INTO alerts(alert_id, priority, category, entity_type, entity_id, rule_id, message, status, created_at, last_seen_at, occurrence_count, dedup_key, fingerprint) VALUES ('a1','warnung','market','crypto_asset','asset-btc','missing_crypto_price','asset_id raw should not leak','active','now','now',1,'d1','f1')zWas ist wichtig?c                    g | ]>\  }}}|d k    |t          |d                                       d          6|d         ?S )markdownr   z**Wichtig:**)r   
startswithr   namer'   _s       r   
<listcomp>zNtest_command_center_is_quiet_and_has_max_three_clean_hints.<locals>.<listcomp>X   sk      I  I  I=4q
@R@RW[@R`cdhijdk`l`l`w`w  yG  aH  aH@RtAw@R@R@Rr      >   	asset-btc)productive initial crypto snapshot importrule_id	entity_idc              3      K   | ]}|vV  	d S r   r6   r   itemr?   s     r   r   zMtest_command_center_is_quiet_and_has_max_three_clean_hints.<locals>.<genexpr>[   s(      66Dt4666666r   zTop 5 Crypto-Positionen)
r   executer   r   r<   r)   r!   lenr   all)r>   r   important_lines	forbiddenr?   s       @r   :test_command_center_is_quiet_and_has_max_three_clean_hintsrl   O   s    )++DLL 	D   
B!"d+++D%%%% I  IBH  I  I  IO1$$$$ #u#u#uuI6666I66666666$,,,,,,r   c                 D   t                      } t                      }t          j        ||            t	          |          }d|v sJ d|v sJ d |j        D             }t          d |D                       }t          |d                   h dk    sJ d|d         vsJ d S )Nu   Position auswählenzCoin Detailc                l    g | ]1\  }}}|d k    |t          |d         t                    )|d         2S 	dataframer   
isinstancelistr[   s       r   r^   zStest_crypto_page_uses_compact_position_columns_and_detail_panel.<locals>.<listcomp>f   J    vvvmdD!4;;N;NSW;N\fgklmgnpt\u\u;N$q';N;N;Nr   c              3  2   K   | ]}|d |d         v |V  dS )gesamtwert_chfr   Nr6   r   rowss     r   r   zRtest_crypto_page_uses_compact_position_columns_and_detail_panel.<locals>.<genexpr>g   s9      \\t\@PTXYZT[@[@[@[@[@[@[\\r   r   >   coinanteilstatussymbolwalletsgesamtmengerv   kurs_chf)r   r   r   r<   r)   r!   nextset)r>   r   r?   
table_rowscompact_rowss        r   ?test_crypto_page_uses_compact_position_columns_and_detail_panelr   _   s    )++D	B"d###D D((((D    vvrxvvvJ\\\\\\\L|A#u#u#uuuuu\!_,,,,,,r   c                    t                      } dddddd}|                                D ][\  }}t          |h          }d|j        d	<   t	          j        ||            |t          |          v sJ d
t          |          vsJ \d S )Nu    Bestand hinzufügen — Formularu   Korrigieren — Formularu   Transfer — Formularu   Auf 0 setzen — Bestätigungu   Verlauf für ausgewählten Coin)   Bestand hinzufügenzBestand korrigierenTransferzBestand auf 0 setzenAudit / Verlauf anzeigenrB   Tjarvis_edit_modeu   Öffnen Sie Admin/Debug)r   itemsr   rE   r   r<   r)   )r>   expectedbuttonmarkerr   s        r   Etest_crypto_detail_actions_open_inline_forms_immediately_in_edit_moder   l   s    )++DA9+ ?$E H #..** B B6(333/3+,b$'''r******(b0A0AAAAAAB Br   c                 ^   t                      } t                      }d|j        d<   t          j        ||            d |j        D             }t          d |D                                           d          du sJ t          d |D                                           d          du sJ d S )NFr   c                :    g | ]\  }}}|d k    ||d         |fS )r   r   r6   )r   r\   r'   r(   s       r   r^   zNtest_read_only_disables_writes_but_keeps_verlauf_available.<locals>.<listcomp>   s8    aaa%7T4txGWGW\`GWQ GWGWGWr   c              3  ,   K   | ]\  }}|d k    |V  dS )r   Nr6   r   labelr(   s      r   r   zMtest_read_only_disables_writes_but_keeps_verlauf_available.<locals>.<genexpr>   s1      VV=5&u@U7U7U7U7U7U7UVVr   disabledTc              3  ,   K   | ]\  }}|d k    |V  dS )r   Nr6   r   s      r   r   zMtest_read_only_disables_writes_but_keeps_verlauf_available.<locals>.<genexpr>   s1      [[=5&u@Z7Z7Z7Z7Z7Z7Z[[r   )r   r   rE   r   r<   r!   r   rF   )r>   r   buttonss      r   :test_read_only_disables_writes_but_keeps_verlauf_availabler   }   s    )++D	B+0B'("d###aa28aaaGVVGVVVVVZZ[effjnnnnn[[G[[[[[__`jkkotttttttr   c                 r   t                      } t                      }t          j        ||            t	          |          dv sJ dv sJ t          fdt          D                       sJ d |j        D             }t          d |D                       }t          |d                   h dk    sJ d S )Nu   Wallet auswählenzCoins in diesem Walletc              3      K   | ]}|vV  	d S r   r6   re   s     r   r   zItest_wallet_page_is_compact_and_hides_technical_fields.<locals>.<genexpr>   s(      ==Dt4======r   c                l    g | ]1\  }}}|d k    |t          |d         t                    )|d         2S ro   rq   r[   s       r   r^   zJtest_wallet_page_is_compact_and_hides_technical_fields.<locals>.<listcomp>   rt   r   c              3  2   K   | ]}|d |d         v |V  dS )wallet_namer   Nr6   rw   s     r   r   zItest_wallet_page_is_compact_and_hides_technical_fields.<locals>.<genexpr>   s8      XXdX}PTUVPW?W?Wt?W?W?W?WXXr   r   >   r{   
coin_countr   wallet_typetotal_value_chf)
r   r   r	   r<   r)   ri   r   r!   r   r   )r>   r   r   wallet_rowsr?   s       @r   6test_wallet_page_is_compact_and_hides_technical_fieldsr      s    )++D	B2t$$$D$&&&&#t++++====,<========vvrxvvvJXX
XXXXXK{1~"k"k"kkkkkkkr   rU   r   c                   t                      }t          dh          }t          |           |j        d<   t	          j        ||           t          |          }d|v sJ d|v sJ t          d |j        D                       sJ d S )NzCrypto-Report erzeugenrB   jarvis_reports_runtime_dirzPortfolio-Report erzeugenc              3  *   K   | ]\  }}}|d k    V  dS )successNr6   )r   r\   _args_kwargss       r   r   zQtest_reports_page_stays_minimal_and_crypto_report_action_works.<locals>.<genexpr>   s.      FF%9T5'ty FFFFFFr   )	r   r   r   rE   r
   r<   r)   anyr!   )rU   r>   r   r?   s       r   >test_reports_page_stays_minimal_and_crypto_report_action_worksr      s    )++D	'?&@	A	A	AB58]]B122t$$$D#t++++&$....FFRXFFFFFFFFFFr   c                     t                      } t          j        |           }t          j        |          dk    sJ t	                      }t          j        ||            t          |          }d|v sJ d S )Nznoch nicht bewertetu$   Aktien/ETF: Bewertung unvollständig)r   dashboard_dataget_command_center_summaryequity_etf_user_labelr   r   r<   r)   )r>   summaryr   r?   s       r   ;test_equity_etf_not_prominently_shown_as_zero_when_unvaluedr      sz    )++D7==G/88<QQQQQ	B!"d+++D1T9999//r   N)r   r   r   r   )r   r*   )rU   r   r   r*   )%
__future__r   pathlibr   jarvis_finance.dashboardr   r   r   r2   jarvis_finance.dashboard.pagesr   r   r	   r
   jarvis_finance.dashboard.viewsr   r   jarvis_finance.storage.databaser   !jarvis_finance.storage.migrationsr   test_dashboard_ux_sprint2r   r   r   r)   r7   r@   rG   rV   rl   r   r   r   r   r   r   r6   r   r   <module>r      s   " " " " " "       ; ; ; ; ; ; ; ; ; ; ; ; s s s s s s s s s s s s V V V V V V V V : : : : : : > > > > > > e e e e e e e e e e   \ \ \ \# # # #$S S S S* * * **- - - - 
- 
- 
- 
-B B B B"u u u u
l 
l 
l 
lG G G G0 0 0 0 0 0r   