2024-08-02 05:27:17 +00:00
|
|
|
import pytest
|
|
|
|
|
|
|
|
import fin_defs
|
|
|
|
|
2024-08-09 14:56:28 +00:00
|
|
|
|
2024-09-01 17:35:44 +00:00
|
|
|
def test_parse_attr():
|
|
|
|
assert fin_defs.parse_attr_data('') == {}
|
|
|
|
assert fin_defs.parse_attr_data(' ') == {}
|
2024-09-01 17:37:28 +00:00
|
|
|
assert fin_defs.parse_attr_data('abc=abc') == {'abc': 'abc'}
|
|
|
|
assert fin_defs.parse_attr_data('abc=123') == {'abc': 123}
|
|
|
|
assert fin_defs.parse_attr_data('abc=123,xyz=abc') == {'abc': 123, 'xyz': 'abc'}
|
|
|
|
assert fin_defs.parse_attr_data(' abc=123 , xyz=abc ') == {
|
|
|
|
'abc': 123,
|
|
|
|
'xyz': 'abc',
|
|
|
|
}
|
|
|
|
|
2024-09-01 17:35:44 +00:00
|
|
|
|
|
|
|
def test_from_nordnet():
|
|
|
|
derp = fin_defs.Asset.from_string_id('stock:NVO.NYSE{nordnet_id=123}')
|
|
|
|
assert isinstance(derp, fin_defs.Stock)
|
|
|
|
assert derp.ticker == 'NVO'
|
|
|
|
assert derp.nordnet_id == 123
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize('asset', fin_defs.WELL_KNOWN_SYMBOLS.values())
|
|
|
|
def test_to_from_string_id_shortcut(asset: fin_defs.Asset):
|
2024-09-01 17:37:28 +00:00
|
|
|
assert (
|
|
|
|
fin_defs.Asset.from_string_id(asset.to_string_id(), shortcut_well_known=True)
|
|
|
|
== asset
|
|
|
|
)
|
2024-09-01 17:35:44 +00:00
|
|
|
|
|
|
|
|
2024-08-02 05:27:17 +00:00
|
|
|
@pytest.mark.parametrize('asset', fin_defs.WELL_KNOWN_SYMBOLS.values())
|
|
|
|
def test_to_from_string_id(asset: fin_defs.Asset):
|
2024-09-01 17:37:28 +00:00
|
|
|
assert (
|
|
|
|
fin_defs.Asset.from_string_id(asset.to_string_id(), shortcut_well_known=False)
|
|
|
|
== asset
|
|
|
|
)
|
2024-08-09 14:56:28 +00:00
|
|
|
|
|
|
|
|
2024-08-02 05:27:17 +00:00
|
|
|
@pytest.mark.parametrize('asset', fin_defs.WELL_KNOWN_SYMBOLS.values())
|
|
|
|
def test_to_from_polygon_id(asset: fin_defs.Asset):
|
2024-09-01 17:35:44 +00:00
|
|
|
if isinstance(asset, fin_defs.CryptoCurrency):
|
|
|
|
return
|
2024-08-02 05:27:17 +00:00
|
|
|
assert fin_defs.Asset.from_polygon_id(asset.to_polygon_id()) == asset
|