
    Yaj:                       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 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 )!    )annotationsN)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     p/home/agent/.hermes/worktrees/FinanceManager-test-baseline/tests/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    }|st          j        d|fd||f          dt	          j                    v st          j        t                     rt          j        t                     ndt          j        |           t          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x} x}x}}d}t           j        } |            }||v}|st          j        d	|fd
||f          t          j        |          dt	          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}x}}d}t           j        } |            }||v}|st          j        d	|fd
||f          t          j        |          dt	          j                    v st          j        t                     rt          j        t                     ndt          j        |          t          j        |          dz  }dd|iz  }t          t          j	        |                    d x}x}x}}d}t          |          }|j        }d}	 ||	          }
t          |
          }g }||k    }|s[t          j        d|fd||f          dt	          j                    v st          j        t                    rt          j        t                    nddt	          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          t          j        |          t          j        |	          t          j        |
          t          j        |          t          j        |          d	z  }dd|iz  }t          t          j	        |                    d x}x}x}x}	x}
x}x}}d S )N)zCommand Center	PortfolioCryptoWallets   Position hinzufügenReports==)zY%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.get_user_navigation_titles
}()
} == %(py7)sdashboard_mainpy0py2py4py7assert %(py9)spy9	Watchlistnot in)z]%(py1)s not in %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.get_user_navigation_titles
}()
})py1py3py5r8   zEquities/ETFsz"src/jarvis_finance/dashboard/pagesz[0-9][0-9]_*.py)z%(py13)s
{%(py13)s = %(py0)s(%(py11)s
{%(py11)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py1)s(%(py3)s)
}.glob
}(%(py9)s)
})
} == %(py16)ssortedr   )	r5   r>   r?   r@   r8   r:   py11py13py16zassert %(py18)spy18)r3   get_user_navigation_titles
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   globrA   )@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10@py_assert0@py_assert4@py_assert2@py_assert8@py_assert10@py_assert12@py_assert15@py_assert14@py_format17@py_format19s                   r   Mtest_user_mode_navigation_is_radically_reduced_and_streamlit_autopages_absentr`      s   4  R4466  R  ;R  ;R  ;R  R6  ;R  R  R  R  R  R  R  R  R  R  R6  ;R  R  R  R  R  R  R  R  R  R  R  R  R>  R  R  R  R  R>  R  R  R  R  R  R4  R  R  R  R6  R  R  R  R  ;R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  R  RInGIGGIII;IIIIIIIIIII;IIIIII;IIIIIIIIIIInIIIIInIIIIIIGIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIM."KM"K"K"M"MM?"MMMMMMMMMMM?"MMMMMM?MMMMMMMMMMM.MMMMM.MMMMMM"KMMMM"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM;[$;<<[<A[BS[AABSTT[6TUU[Y[[UY[[[[[[[[[[[UY[[[[[[[[[[[[[6[[[[[6[[[[[[[[[[[[[$[[[[[$[[[[[[;[[[[<[[[[A[[[[BS[[[[T[[[[U[[[[Y[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[r   c                 `   t                      } t          |            t                      }t          j        ||            t          |          }d}||v }|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}||v }|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	}||v }|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
}||v }|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}||v }|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}||v }|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}||v }|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}||v}|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}||v}|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}||v}|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 S )Nr/   inz%(py1)s in %(py3)stextr>   r?   assert %(py5)sr@   u   1. Assetklasse wählenz2. Instrument suchenzLokal suchenzOnline suchenzManuell anlegenzPosition speicherncatalog_entry_idr<   z%(py1)s not in %(py3)sinstrument_id	source_id)r   r   r   r   renderr)   rG   rH   rL   rI   rJ   rK   rM   rN   )connr   re   rV   rX   @py_format4@py_format6s          r   Mtest_position_add_page_is_visible_wizard_and_does_not_call_provider_on_renderrp      s   DT	BD)))D!)!T))))))))))!T)))))!)))))))))))T)))))T)))))))))))))))))))))))))))#+#t++++++++++#t+++++#+++++++++++t+++++t+++++++++++++++++++++++++++!)!T))))))))))!T)))))!)))))))))))T)))))T)))))))))))))))))))))))))))!>T!!!!!!!!!!>T!!!!!>!!!!!!!!!!!T!!!!!T!!!!!!!!!!!!!!!!!!!!!!!!!!!"?d""""""""""?d"""""?"""""""""""d"""""d"""""""""""""""""""""""""""$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'4''''''''''4''''''''''''''''4'''''4''''''''''''''''''''''''''')T))))))))))T))))))))))))))))T)))))T)))))))))))))))))))))))))))&?$&&&&&&&&&&?$&&&&&?&&&&&&&&&&&$&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&";d"""""""""";d""""";"""""""""""d"""""d"""""""""""""""""""""""""""""r   c            	     ^   t                      } t          |            t          dh          }t          j        ||            t          |          }d}||v }|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}||v }|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}}|j        }|j        }d
}	 ||	          }
d}|
|k    }|st          j        d|fd|
|f          dt          j
                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          t          j        |	          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}x}	x}
x}}d S )Nr/   button_presseszENoch keine Cash-, Aktien- oder ETF-Positionen im User Mode vorhanden.rb   rd   re   rf   rg   r@   jarvis_requested_pager1   )zm%(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.session_state
}.get
}(%(py6)s)
} == %(py11)sr   )r5   r6   r7   py6py8rB   zassert %(py13)srC   )r   r   r   r   rl   r)   rG   rH   rL   rI   rJ   rK   rM   rN   session_stateget)rm   r   re   rV   rX   rn   ro   rP   rQ   rS   @py_assert7rZ   @py_assert9@py_format12@py_format14s                  r   >test_portfolio_empty_state_has_add_button_and_routes_to_wizardr}   /   s(   DT	'=&>	?	?	?B T***DRZRVZZZZZZZZZZZRVZZZZZZRZZZZZZZZZZZVZZZZZZVZZZZZZZZZZZZZZZZZZZZZZZZZZZZ!)!T))))))))))!T)))))!)))))))))))T)))))T)))))))))))))))))))))))))))RR 7R 788R<RR8<RRRRRRRRRRR8<RRRRRRRRRRRRR2RRRRR2RRRRRRRRRRRRRR 7RRRR8RRRR<RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRr   c                	   |                      dd           |                      dd           |                      dd           |                      dd           |                      dd           |                      dd           |                     d	t          |                     t                      }t	          |           t                      }t          j        ||           t          |          }d
}||v }|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}||v }|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}||v }|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}||v }|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}||v }|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}||v}|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 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-Statusrb   rd   re   rf   rg   r@   OpenFIGIzAPI-Key fehltz,~/jarvis_runtime/finance-system/secrets/.envzruntime-file-keyr<   ri   )delenvsetenvr   r   r   r   r   rl   r)   rG   rH   rL   rI   rJ   rK   rM   rN   )	monkeypatchtmp_pathrm   r   re   rV   rX   rn   ro   s	            r   5test_provider_status_visible_without_secrets_or_crashr   :   s   )59990%@@@(%888/???}e444+U;;;3S]]CCCDT	BD)))D$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$:::"?d""""""""""?d"""""?"""""""""""d"""""d"""""""""""""""""""""""""""9A9TAAAAAAAAAA9TAAAAA9AAAAAAAAAAATAAAAATAAAAAAAAAAAAAAAAAAAAAAAAAAA%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%)T))))))))))T))))))))))))))))T)))))T)))))))))))))))))))))))))))))r   c                 
   t                      } |                     d           t                      }t          j        ||            t          |          d}|v }|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	 |j        D             }t          |          }d
}||k    }|st          j        d|fd||f          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |          rt          j        |          ndt          j        |          t          j        |          dz  }	dd|	iz  }
t          t          j        |
                    d x}x}}t           h dz  }fd|D             }t#          |          }|sddt          j
                    v st          j        t"                    rt          j        t"                    ndt          j        |          t          j        |          dz  }t          t          j        |                    d x}}d}|v }|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 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?rb   rd   re   rf   rg   r@   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      )<=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} <= %(py6)slenimportant_lines)r5   r>   r?   ru   assert %(py8)srv   >   	asset-btc)productive initial crypto snapshot importrule_id	entity_idc              3      K   | ]}|vV  	d S r    r   itemre   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   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}allr5   r6   r7   zTop 5 Crypto-Positionen)r   executer   r   rl   r)   rG   rH   rL   rI   rJ   rK   rM   rN   r!   r   r   r   )rm   r   rV   rX   rn   ro   r   rS   rW   @py_format7@py_format9	forbiddenrP   rQ   @py_format5re   s                  @r   :test_command_center_is_quiet_and_has_max_three_clean_hintsr   O   s   )++DLL 	D   
B!"d+++D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% I  IBH  I  I  IO$1$1$$$$$$$$$$1$$$$$$$$$$$$3$$$$$3$$$$$$$$$$$$$$$$$$$$$$$$$$$$1$$$$$$$$$$$$$$$$$$$$$$$$$$$ #u#u#uuI6666I66663666666666666666636666636666666666666666666666666666666$,$,,,,,,,,,,$,,,,,$,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,r   c                 N   t                      } t                      }t          j        ||            t	          |          }d}||v }|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}||v }|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	 |j        D             }t          d
 |D                       }|d         }	t          |	          }
h d}|
|k    }|st          j        d|fd|
|f          dt          j	                    v st          j
        t                    rt          j        t                    ndt          j        |	          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}	x}
x}}d}|d         }
||
v}|slt          j        d|fd||
f          t          j        |          t          j        |
          dz  }dd|iz  }t          t          j        |                    d x}x}}
d S )Nu   Position auswählenrb   rd   re   rf   rg   r@   z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   Nr   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gesamtmenger   r1   z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)ssetr4   r9   r:   kurs_chfr<   )z%(py1)s not in %(py4)s)r>   r7   zassert %(py6)sru   )r   r   r   rl   r)   rG   rH   rL   rI   rJ   rK   rM   rN   r!   nextr   )rm   r   re   rV   rX   rn   ro   
table_rowscompact_rowsrP   rQ   rR   rS   rT   rU   r   r   s                    r   ?test_crypto_page_uses_compact_position_columns_and_detail_panelr   _   s   )++D	B"d###D ( D(((((((((( D((((( (((((((((((D(((((D((((((((((((((((((((((((((( =D          =D     =           D     D                           vvrxvvvJ\\\\\\\LAu3u#u#u#uu#uuuuuuuuuuu#uuuuuuuuuuuuu3uuuuu3uuuuuuuuuuuuuu#uuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,\!_,:_,,,,,,,,,,:_,,,,,:,,,,_,,,,,,,,,,,,,,,,,,,,,,,,,,,,,r   c                 V   t                      } dddddd}|                                D ]|\  }}t          |h          }d|j        d	<   t	          j        ||            t          |          }||v }|st          j        d
|fd||f          dt          j
                    v st          j        |          rt          j        |          nddt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |          rt          j        |          ndt          j        |          dz  }dd|iz  }t          t          j        |                    d x}}d}	t          |          }
|	|
v}|st          j        d|fd|	|
f          t          j        |	          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |          rt          j        |          ndt          j        |
          dz  }dd|iz  }t          t          j        |                    d x}	x}}
~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 anzeigenrr   Tjarvis_edit_moderb   )z0%(py0)s in %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}markerr)   r   )r5   r6   r?   r@   zassert %(py7)sr8   u   Öffnen Sie Admin/Debugr<   )z4%(py1)s not in %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
})r>   r?   r7   ru   r   rv   )r   itemsr   rw   r   rl   r)   rG   rH   rI   rJ   rK   rL   rM   rN   )rm   expectedbuttonr   r   rW   rP   ro   rT   rV   rS   rX   r   r   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***v***********v*************v*****v*******************************r*****r********************************(Ab0A0AA(0AAAAAAAAAAA(0AAAAAA(AAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAAAAAbAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAB Br   c            
        t                      } t                      }d|j        d<   t          j        ||            d |j        D             }d |D             }t          |          }|j        }d} ||          }d}||u }	|	s t          j	        d|	fd||f          d	t          j                    v st          j        t                    rt          j        t                    nd	t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d
z  }
dd|
iz  }t          t          j        |                    d x}x}x}x}x}x}	}d |D             }t          |          }|j        }d} ||          }d}||u }	|	s t          j	        d|	fd||f          d	t          j                    v st          j        t                    rt          j        t                    nd	t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          t          j        |          d
z  }
dd|
iz  }t          t          j        |                    d x}x}x}x}x}x}	}d S )NFr   c                :    g | ]\  }}}|d k    ||d         |fS )r   r   r   )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   Nr   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   disabledT)is)zj%(py10)s
{%(py10)s = %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}.get
}(%(py8)s)
} is %(py13)sr   )r5   r6   r7   ru   rv   py10rC   zassert %(py15)spy15c              3  ,   K   | ]\  }}|d k    |V  dS )r   Nr   r   s      r   r   zMtest_read_only_disables_writes_but_keeps_verlauf_available.<locals>.<genexpr>   s1      [[=5&u@Z7Z7Z7Z7Z7Z7Z[[r   )r   r   rw   r   rl   r!   r   rx   rG   rH   rI   rJ   rK   rL   rM   rN   )rm   r   buttonsrP   rQ   rS   ry   rz   r[   @py_assert11r|   @py_format16s               r   :test_read_only_disables_writes_but_keeps_verlauf_availabler   }   s8   )++D	B+0B'("d###aa28aaaGVVGVVVn4VVVnVZn[enZZ[effnjnnfjnnnnnnnnnnnfjnnnnnnnnnnnnn4nnnnn4nnnnnnVnnnnVnnnnZnnnn[ennnnfnnnnjnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn[[G[[[t4[[[t[_t`jt__`jkktottkotttttttttttkottttttttttttt4ttttt4tttttt[tttt[tttt_tttt`jttttkttttottttttttttttttttttttttttttttttttttttttr   c                    t                      } t                      }t          j        ||            t	          |          d}|v }|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}|v }|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}}fd	t          D             }t          |          }|sd
dt          j	                    v st          j
        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }t          t          j        |                    d x}}d |j        D             }	t!          d |	D                       }
|
d         }t#          |          }h d}||k    }|st          j        d|fd||f          dt          j	                    v st          j
        t"                    rt          j        t"                    ndt          j        |          t          j        |          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}x}}d S )Nu   Wallet auswählenrb   rd   re   rf   rg   r@   zCoins in diesem Walletc              3      K   | ]}|vV  	d S r   r   r   s     r   r   zItest_wallet_page_is_compact_and_hides_technical_fields.<locals>.<genexpr>   s(      ==Dt4======r   r   r   r   c                l    g | ]1\  }}}|d k    |t          |d         t                    )|d         2S r   r   r   s       r   r   zJtest_wallet_page_is_compact_and_hides_technical_fields.<locals>.<listcomp>   r   r   c              3  2   K   | ]}|d |d         v |V  dS )wallet_namer   Nr   r   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_chfr1   r   r   r4   r9   r:   )r   r   r	   rl   r)   rG   rH   rL   rI   rJ   rK   rM   rN   r   r   r!   r   r   )rm   r   rV   rX   rn   ro   rP   rQ   r   r   wallet_rowsrR   rS   rT   rU   re   s                  @r   6test_wallet_page_is_compact_and_hides_technical_fieldsr      s   )++D	B2t$$$D&$&&&&&&&&&&$&&&&&&&&&&&&&&&&$&&&&&$&&&&&&&&&&&&&&&&&&&&&&&&&&&#+#t++++++++++#t+++++#+++++++++++t+++++t+++++++++++++++++++++++++++====,<====3================3=====3===============================vvrxvvvJXX
XXXXXK1~k3~k"k"k"kk"kkkkkkkkkkk"kkkkkkkkkkkkk3kkkkk3kkkkkk~kkkkkkkk"kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkr   r   r   c                   t                      }t          dh          }t          |           |j        d<   t	          j        ||           t          |          }d}||v }|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
}||v }|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 |j        D             }t!          |          }	|	sddt          j                    v st          j        t                     rt          j	        t                     ndt          j	        |          t          j	        |	          dz  }
t          t          j        |
                    d x}}	d S )NzCrypto-Report erzeugenrr   jarvis_reports_runtime_dirrb   rd   re   rf   rg   r@   zPortfolio-Report erzeugenc              3  *   K   | ]\  }}}|d k    V  dS )successNr   )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   anyr   )r   r   r   rw   r
   rl   r)   rG   rH   rL   rI   rJ   rK   rM   rN   r!   r   )r   rm   r   re   rV   rX   rn   ro   rP   rQ   r   s              r   >test_reports_page_stays_minimal_and_crypto_report_action_worksr      s   )++D	'?&@	A	A	AB58]]B122t$$$D#+#t++++++++++#t+++++#+++++++++++t+++++t+++++++++++++++++++++++++++&.&$..........&$.....&...........$.....$...........................FFRXFFFF3FFFFFFFFFFFFFFFF3FFFFF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFr   c                     t                      } t          j        |           }t          j        } ||          }d}||k    }|st	          j        d|fd||f          dt          j                    v st	          j        t                    rt	          j	        t                    ndt	          j	        |          dt          j                    v st	          j        |          rt	          j	        |          ndt	          j	        |          t	          j	        |          dz  }dd|iz  }t          t	          j        |                    d x}x}x}}t                      }t          j        ||            t          |          }	d	}
|
|	v }|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}
|
sQt	          j        d|	v          dz   dt	          j	        |
          iz  }t          t	          j        |                    d }
d S )Nznoch nicht bewertetr1   )z[%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.equity_etf_user_label
}(%(py3)s)
} == %(py8)sdashboard_datasummary)r5   r6   r?   r@   rv   zassert %(py10)sr   u$   Aktien/ETF: Bewertung unvollständigrb   rd   re   rf   rg   r@   z
Aktien/ETFzCHF 0.00z
>assert %(py1)sr>   )r   r   get_command_center_summaryequity_etf_user_labelrG   rH   rI   rJ   rK   rL   rM   rN   r   r   rl   r)   _format_assertmsg)rm   r   rP   rW   ry   rR   r   @py_format11r   re   rV   rX   rn   ro   @py_format2s                  r   ;test_equity_etf_not_prominently_shown_as_zero_when_unvaluedr      s   )++D7==G/Q//88Q<QQ8<QQQQQQQQQQQ8<QQQQQQQQQQQQQ>QQQQQ>QQQQQQ/QQQQQQQQQQQQQQQQQQQQQQ8QQQQ<QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ	B!"d+++D191T99999999991T99999199999999999T99999T999999999999999999999999999/<///4////////<//////////////////r   )r   r   r   r   )r   r*   )r   r   r   r*   )+
__future__r   builtinsrI   _pytest.assertion.rewrite	assertionrewriterG   pathlibr   jarvis_finance.dashboardr   r   r   r3   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)   r`   rp   r}   r   r   r   r   r   r   r   r   r   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   