
    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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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)Iterator)Decimal)
Connection)
TestClient)get_db)
create_app)apply_migrationsreturnr   c                 ~    t          j        dd          } t           j        | _        |                     d           | S )Nz:memory:F)check_same_threadzPRAGMA foreign_keys = ON)sqlite3connectRowrow_factoryexecuteconns    i/home/agent/.hermes/worktrees/FinanceManager-sprint20d/tests/unit/test_fastapi_user_dashboard_skeleton.py_connect_threadsafe_memoryr      s8    ?:???D{DLL+,,,K    r   r   c                h     t                      }d fd}||j        t          <   t          |          S )Nr   Iterator[Connection]c               3     K    V  d S )N r   s   r   override_dbz_client.<locals>.override_db   s      




r   )r   r   )r	   dependency_overridesr   r   )r   appr   s   `  r   _clientr      sE    
,,C      (3CV$c??r   Nonec                    d}|                      d|f           |                      d|f           |                      d|f           |                      d|f           |                      d|f           |                      d|f           |                      d|f           |                      d	|f           |                      d
|f           |                      d||f           |                                  d S )N2099-05-17T12:00:00ZzINSERT INTO platforms(platform_id, name, platform_type, country, default_currency, created_at) VALUES ('p1', 'Demo Bank', 'broker', 'CH', 'CHF', ?)zINSERT INTO accounts(account_id, platform_id, account_name, account_type, currency, created_at) VALUES ('a1', 'p1', 'Trading', 'brokerage', 'CHF', ?)zINSERT INTO instruments(instrument_id, asset_class, name, ticker, isin, currency, created_at) VALUES ('i1', 'stock', 'Demo Equity', 'DEMO', 'CH0000000000', 'CHF', ?)a  
        INSERT INTO transactions(transaction_id, transaction_type, account_id, instrument_id, trade_date, quantity, price_original, gross_amount_original, net_amount_original, currency_original, fx_rate_to_chf, fx_status, gross_amount_chf, net_amount_chf, source_type, is_confirmed, quality_status, created_at)
        VALUES ('t1', 'initial_snapshot', 'a1', 'i1', '2026-05-16', '2', '10', '20', '20', 'CHF', '1', 'ok', '20', '20', 'fixture', 1, 'ok', ?)
        zINSERT INTO market_prices(market_price_id, instrument_id, price_date, close, currency, provider, quality_status, created_at) VALUES ('mp1', 'i1', '2026-05-16', '12.34', 'CHF', 'fixture', 'fresh', ?)zINSERT INTO cash_balances(cash_balance_id, account_id, balance_date, currency, amount_original, fx_rate_to_chf, amount_chf, source_type, quality_status, created_at) VALUES ('c1', 'a1', '2026-05-16', 'CHF', '100.25', '1', '100.25', 'fixture', 'ok', ?)zwINSERT INTO crypto_wallets(wallet_id, wallet_name, wallet_type, created_at) VALUES ('w1', 'Cold Wallet', 'hardware', ?)zINSERT INTO crypto_assets(asset_id, symbol, coin_name, coingecko_id, created_at) VALUES ('btc', 'BTC', 'Bitcoin', 'bitcoin', ?)zINSERT INTO crypto_holdings(crypto_holding_id, wallet_id, asset_id, quantity, verification_status, created_at) VALUES ('h1', 'w1', 'btc', '0.5', 'ok', ?)zINSERT INTO crypto_prices(crypto_price_id, asset_id, coingecko_id, price_currency, price, provider, provider_timestamp, fetched_at, quality_status) VALUES ('cp1', 'btc', 'bitcoin', 'CHF', '80000', 'fixture', ?, ?, 'fresh'))r   commit)r   nows     r   _seed_minimal_read_modelsr%       s   
 CLL  g  jm  io  p  p  pLL  i  lo  kq  r  r  rLL  y  |  {A  B  B  BLL	 
   	LL  Z  ]`  \b  c  c  cLL  N  QT  PV  W  W  WLL  K  NQ  MS  T  T  TLL  S  VY  U[  \  \  \LL  m  ps  ou  v  v  vLL  r  ux  z}  t~      KKMMMMMr   payloaddictc           	        t          d          t          d          z  }t          d          t          d          z  }||z   }| d         }t          |          }||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        |          d	t          j                    v st          j        |          rt          j        |          nd	d
z  }dd|iz  }t          t          j        |                    d x}x}}| d         }t          |          }||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        |          dt          j                    v st          j        |          rt          j        |          ndd
z  }dd|iz  }t          t          j        |                    d x}x}}| d         }t          |          }d}	t          |	          }
||
k    }|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        |          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}x}	}
| d         }t          |          }d}	t          |	          }
||
k    }|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        |          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}x}	}
| d         }t          |          }||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        |          dt          j                    v st          j        |          rt          j        |          ndd
z  }dd|iz  }t          t          j        |                    d x}x}}d S )N0.580000210crypto_value_chf==)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py6)sr   expected_crypto)py0py2py4py6assert %(py8)spy8postfinance_equity_value_chfexpected_equitytruewealth_value_chf0)zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
})r1   r2   r3   r4   r6   py10zassert %(py12)spy12cash_value_chftotal_value_chfexpected_total)	r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)r&   r0   r8   r?   @py_assert1@py_assert3@py_assert5@py_format7@py_format9@py_assert7@py_assert9@py_format11@py_format13s                r   *_assert_overview_matches_synthetic_fixturerQ   5   sx   ennww'7'77OcllWT]]2O$6N-.B7.//B/?BBBBBBBBBB/?BBBBBBBBBBBB7BBBBB7BBBBBB.BBBB/BBBBBBBBBBB?BBBBB?BBBBBBBBBBBBBBBBBBBBBBBBBBBBB9:N7:;;N;NNNNNNNNNN;NNNNNNNNNNNN7NNNNN7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NNNNNNNNNNNNNNNNNNNN12C7233CsCws||C3|CCCCCCCCCC3|CCCCCCCCCCCC7CCCCC7CCCCCC2CCCC3CCCCCCCCCCCwCCCCCwCCCCCCsCCCC|CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC+,=7,--===-==========-============7=====7======,====-=========================================================,-@7-..@..@@@@@@@@@@..@@@@@@@@@@@@7@@@@@7@@@@@@-@@@@.@@@@@@@@@@@.@@@@@.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@r   c            	        t                      } t          |            t          |           }|                    d          }|j        }d}||k    }|st          j        d|fd||f          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}}|j        } |            }d	d
d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
        |          dz  }dd|iz  }
t          t          j        |
                    d x}x}x}	}|j        }d} ||          }	|	j        }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 )Nz/api/health   r.   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sresponse)r1   r2   py5zassert %(py7)spy7okzjarvis-finance-apir:   z	read-only)statusr   api_versionmode)zC%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.json
}()
} == %(py7)s)r1   r2   r3   rV   zassert %(py9)spy9z/api/crypto/price-updatei  )zl%(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.post
}(%(py4)s)
}.status_code
} == %(py11)sclient)r1   r2   r3   r4   r6   py11zassert %(py13)spy13)r   r
   r   getstatus_coder@   rA   rB   rC   rD   rE   rF   rG   jsonpost)r   r\   rT   rH   @py_assert4rI   @py_format6@py_format8@py_assert6rJ   @py_format10rM   @py_assert10rN   @py_format12@py_format14s                   r   .test_fastapi_v0_health_and_read_only_contractsrk   A   si   %''DTT]]Fzz-((H&3&3&&&&&&&&&&3&&&&&&&&&&&&8&&&&&8&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&&&&&&&&=t==??t6J[^hs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t8ttttt8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tttttttt;E1E;;122E2>E#E>#EEEEEEEEEE>#EEEEEEEEEEEE6EEEEE6EEEEEE;EEEE1EEEE2EEEE>EEEE#EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEr   c                 "   t                      } t          |            t          |            t          |           }|                    d                                          }|                    d                                          }|                    d                                          }|                    d                                          }t          |           |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
         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         }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
         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         }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         }	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         }	g }
|	|
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/api/overview/api/crypto/positions/api/equity/positionsz/api/cash/summaryr>   5assert %(py5)s
{%(py5)s = %(py0)s(%(py2)s, %(py3)s)
}
isinstancestrr1   r2   py3rU   r   quantity_totalr)   r.   z%(py1)s == %(py4)spy1r3   assert %(py6)sr4   market_value_chfnameDemo Equitypricecash_chfz0.00	positions)r   r
   r%   r   r_   ra   rQ   rq   rr   rB   rC   r@   rD   rE   rF   rG   rA   )r   r\   overviewcryptoequitycashrH   rc   rd   @py_assert0rI   @py_assert2@py_format5rK   s                 r   =test_fastapi_v0_overview_and_positions_return_decimal_stringsr   M   s1   %''DTd###T]]Fzz/**//11HZZ/005577FZZ/005577F::)**//11D.x888017:13777777777777777:77777:777777177777777777377777377777777777777777777777777!9%&/%/&%//////////&%/////&////%///////////////////////////Qi 239:3S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399999999999S99999S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!9V------------------------------------------------Qi(.:(#...............:.....:......(...........#.....#..........................
%v%v%%%%%%%%%%v%%%%%%%%%v%%%%%%%%%%%%%%%%%%%%%%%%%%%""""""""""""""""""""""""""""""""""""""""""""""""""r   c                    t                      } t          |            t          |           }|                    d                                          }t          |                                          }|sedddt          j                    v st          j
        |          rt          j        |          ndiz  }t          t          j        |                    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 )Nz/api/provider/statuszassert %(py0)sr1   r&   api_keynot inz%(py1)s not in %(py3)srenderedrx   rt   assert %(py5)srU   tokensecret)r   r
   r   r_   ra   rr   lowerrB   rC   r@   rD   rE   rF   rG   rA   )	r   r\   r&   r   @py_format1r   r   @py_format4rd   s	            r   ,test_fastapi_v0_provider_status_is_sanitizedr   b   s   %''DTT]]Fjj/005577G7||!!##HNNNNNNNNNNNN7NNNNN7NNNNNNNNNNNNNNNN$9H$$$$$$$$$$9H$$$$$9$$$$$$$$$$$H$$$$$H$$$$$$$$$$$$$$$$$$$$$$$$$$$"7(""""""""""7("""""7"""""""""""("""""("""""""""""""""""""""""""""#88##########88#####8###########8#####8#############################r   c                    t                      } t          |            t          |            t          |           }|                    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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          |           |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         }
h 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 )Nrm   >
   r=   r>   r-   equity_value_chflast_price_updatedata_quality_statusr9   critical_alerts_countunpriced_positions_countr7   r.   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ssetr&   )r1   rx   rt   r4   r5   r6   r-   rp   rq   rr   rs   r   >   rW   warningcritical)in)z%(py1)s in %(py4)srw   ry   r4   )r   r
   r%   r   r_   ra   r   r@   rA   rB   rC   rD   rE   rF   rG   rQ   rq   rr   )r   r\   r&   r   rJ   rc   rK   rL   rH   rd   r   rI   r   s                r   :test_vue_slice_overview_contract_uses_flat_decimal_stringsr   q   s   %''DTd###T]]Fjj))..00Gw<<     <         <                                                                   /w777017:13777777777777777:77777:777777177777777777377777377777777777777777777777777()J-J-J-JJ)-JJJJJJJJJJJ)-JJJJJJ)JJJJ-JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJr   c                 x   t                      } t          |            t          |            t          |           }|                    d                                          }|                    d                                          }|d         }dddddd	d
d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}||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         }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         }	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 )Nrn   z/api/crypto/positions/btcr   btcBitcoinBTCr)   r*   40000.00z100.00   Aktuellr"   z*https://www.coingecko.com/en/coins/bitcoin)asset_idr{   symbolru   	price_chfrz   portfolio_share_pctwallet_countprice_statusr   coingecko_urlr.   rv   rw   ry   r4   r   wallet_allocationswalletCold Walletquantityrp   rq   rr   rs   )r   r
   r%   r   r_   ra   r@   rA   rE   rF   rG   rq   rr   rB   rC   rD   )r   r\   r   detailr   rI   r   r   rK   rH   rc   rd   s               r   2test_vue_slice_crypto_contract_and_detail_endpointr      s   %''DTd###T]]F

23388::IZZ34499;;FQ< &'!3E  <         <                                   *&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'*84EE4EEEEEEEEEE4EEEEE4EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE1215jAG:A3GGGGGGGGGGGGGGG:GGGGG:GGGGGGAGGGGGGGGGGG3GGGGG3GGGGGGGGGGGGGGGGGGGGGGGGGGGGr   c                    t                      } t          |            t          |            t          |           }|                    d                                          |                    d                                          }ddddddd	d
dd dd}f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         }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 }||u }|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 S )"Nro   z/api/equity/positions/a1:i1za1:i1r|   DEMOCH0000000000TradingAktier:   CHFz12.34u   Einstand unvollständig)position_idr{   tickerisinaccountasset_classr   currencyr}   rz   rX   c                .    i | ]}|d          |         S )r   r   ).0keyr   s     r   
<dictcomp>zFtest_vue_slice_equity_contract_and_detail_endpoint.<locals>.<dictcomp>   s$    777sC1c"777r   r.   )z%(py1)s == %(py3)sexpectedr   r   rU   r   data_statusmissingrv   rw   ry   r4   r`   price_missingr   )is)z%(py1)s is %(py4)sr   )r   r
   r%   r   r_   ra   r@   rA   rE   rB   rC   rD   rF   rG   )r   r\   r   r   r   r   r   rd   rI   r   rK   r   s              @r   2test_vue_slice_equity_contract_and_detail_endpointr      s2   %''DTd###T]]F

23388::IZZ566;;==F  + H 8777h777C78CCCCCCCCCC78CCCCC7CCCCCCCCCCC8CCCCC8CCCCCCCCCCCCCCCCCCCCCCCCCCCQ<&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Q<&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999999999999999999999Q<-.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66666666666666666- +G+ G++++++++++ G+++++ ++++G+++++++++++++++++++++++++++++r   c                    t                      } t          |            t          |            t          |           }|                    d                                          }ddddddddg}||k    }|st          j        d	|fd
||f          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                                          }|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         }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 )Nz/api/walletsw1r   hardwarer   r   r   )	wallet_idr{   wallet_typeprovider
coin_countrz   rX   r.   )z%(py0)s == %(py3)swallets)r1   rt   r   rU   z/api/wallets/w1coinsr   r   r   rv   rw   ry   r4   r   rp   rq   rr   rs   )r   r
   r%   r   r_   ra   r@   rA   rB   rC   rD   rE   rF   rG   rq   rr   )r   r\   r   r   rH   r   rd   r   r   rI   r   rK   rc   s                r   test_vue_slice_wallets_contractr      ss   %''DTd###T]]Fjj((--//G !%" *	
 	

 
7 
 
 
 
 
 

 
 
 
7 
 
 
 
 
 

 
 
 
 
  
 
 
 
  
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 ZZ)**//11F'?1h'050'50000000000'500000'00005000000000000000000000000000Woa(4::4c::::::::::::::::::::::::::::4:::::::::::c:::::c::::::::::::::::::::::::::::r   c                "   | dz  }|dz  }|                     d           |dz                      dd           |                    d	t          |                     |                    d
d           |                    |            t                      }t          |           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}
}	|d         d         }|j        }
d} |
|          }|ssdt          j        |          t          j        |
          t          j        |          t          j        |          dz  }t          t          j        |                    d x}x}
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runtimereportsT)parentszportfolio_report.htmlz<html>ok</html>zutf-8)encodingJARVIS_FINANCE_RUNTIME_DIR(JARVIS_FINANCE_BLOCK_RUNTIME_INSIDE_REPOr:   z/api/reportsr   formathtmlr.   rv   rw   ry   r4   path_displayzJassert %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.endswith
}(%(py5)s)
})rx   rt   rU   rV   r   r   r   r   r   r   rU   r   r   )mkdir
write_textsetenvrr   chdirr   r
   r   r_   ra   r   r@   rA   rE   rF   rG   endswithrB   rC   rD   )tmp_pathmonkeypatchr   r   r   r\   r&   r   r   rI   r   r   rK   rc   rf   re   r   rd   s                     r   .test_vue_slice_reports_contract_and_no_secretsr      s   "G	!GMM$M&&223Dw2WWW3S\\BBBA3GGGh%''DTT]]Fjj((--//G7||!!##H1:h)6)6))))))))))6)))))))))6)))))))))))))))))))))))))))1:n%G%.G/FG../FGGGGGGGG%GGGG.GGGG/FGGGGGGGGGGGGGGGGGGGGGGGGGGGG$9H$$$$$$$$$$9H$$$$$9$$$$$$$$$$$H$$$$$H$$$$$$$$$$$$$$$$$$$$$$$$$$$"7(""""""""""7("""""7"""""""""""("""""("""""""""""""""""""""""""""#88##########88#####8###########8#####8#############################r   )r   r   )r   r   r   r   )r   r   r   r    )r&   r'   r   r    )r   r    )"
__future__r   builtinsrB   _pytest.assertion.rewrite	assertionrewriter@   collections.abcr   decimalr   r   r   fastapi.testclientr   jarvis_finance.api.dependenciesr   jarvis_finance.api.mainr	   !jarvis_finance.storage.migrationsr
   r   r   r%   rQ   rk   r   r   r   r   r   r   r   r   r   r   <module>r      s   " " " " " "               $ $ $ $ $ $              ) ) ) ) ) ) 2 2 2 2 2 2 . . . . . . > > > > > >         *	A 	A 	A 	A	F 	F 	F 	F# # # #*$ $ $ $K K K K2H H H H6, , , ,:; ; ; ;0$ $ $ $ $ $r   