import pytest import fin_defs VALID_STOCK_TICKERS = ['TEST123', '123', 'TEST.EUR'] BAD_STOCK_TICKERS = ['TEST:EUR', 'EUR:TEST'] @pytest.mark.parametrize('ticker', VALID_STOCK_TICKERS) def test_valid_tickers(ticker: str): asset = fin_defs.Stock(ticker, exchange=fin_defs.EXCHANGES_BY_IDS['NYSE']) assert asset.names() is not None assert asset.to_polygon_id() is not None @pytest.mark.parametrize('ticker', BAD_STOCK_TICKERS) def test_bad_tickers(ticker: str): with pytest.raises(ValueError, match='ticker was not in correct format:.*'): fin_defs.Stock(ticker, exchange=fin_defs.EXCHANGES_BY_IDS['NYSE']) @pytest.mark.parametrize('ticker', BAD_STOCK_TICKERS) def test_crypto_tickers(ticker): asset = fin_defs.CryptoCurrency(ticker, 'not-known') assert asset.names() is not None assert asset.to_polygon_id().startswith('X:') def test_str(): asset = fin_defs.Stock('NVO', fin_defs.EXCHANGES_BY_IDS['NYSE']) assert str(asset) == 'stock:NVO.XNYS'