Example #1
0
async def test_get_error(http_session):
    url = "https://iss.moex.com/iss/securities1.json"
    iss = client.ISSClient(http_session, url)
    with pytest.raises(client.ISSMoexError) as error:
        await iss.get()
    assert "Неверный url" in str(error.value)
    assert "url" in str(error.value)
Example #2
0
def test_make_query_empty(http_session):
    iss = client.ISSClient(http_session, "test_url")
    # noinspection PyProtectedMember
    query = iss._make_query()
    assert isinstance(query, typing.Mapping)
    assert len(query) == 2
    assert query["iss.json"] == "extended"
    assert query["iss.meta"] == "off"
Example #3
0
def test_make_query_not_empty():
    iss = client.ISSClient("test_url", dict(test_param="test_value"))
    # noinspection PyProtectedMember
    query = iss._make_query()
    assert isinstance(query, typing.Mapping)
    assert len(query) == 3
    assert query["iss.json"] == "extended"
    assert query["iss.meta"] == "off"
    assert query["test_param"] == "test_value"
Example #4
0
def test_make_query_not_empty_with_start(http_session):
    iss = client.ISSClient(http_session, "test_url", dict(test_param="test_value"))
    # noinspection PyProtectedMember
    query = iss._make_query(100)
    assert isinstance(query, typing.Mapping)
    assert len(query) == 4
    assert query["iss.json"] == "extended"
    assert query["iss.meta"] == "off"
    assert query["test_param"] == "test_value"
    assert query["start"] == 100
Example #5
0
async def test_get_with_start(http_session):
    url = "https://iss.moex.com/iss/securities.json"
    query = dict(q="1-02-65104-D")
    iss = client.ISSClient(http_session, url, query)
    raw = await iss.get(1)
    data = raw["securities"]
    assert isinstance(data, list)
    assert len(data) == 3
    assert isinstance(data[0], dict)
    assert data[1]["regnumber"] == "1-02-65104-D"
    assert "Юнипро" in data[2]["emitent_title"]
Example #6
0
async def test_get_all_error(monkeypatch):
    iss = client.ISSClient("")
    data = {"history.cursor": [0, 1]}

    async def fake_get(_):
        return data

    monkeypatch.setattr(iss, "get", fake_get)
    with pytest.raises(client.ISSMoexError) as error:
        await iss.get_all()
    assert f'Некорректные данные history.cursor: {data["history.cursor"]}' in str(
        error.value)
Example #7
0
async def test_get_all_with_cursor(http_session):
    url = "https://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SNGSP.json"
    query = {"from": "2018-01-01", "till": "2018-03-01"}
    iss = client.ISSClient(http_session, url, query)
    raw = await iss.get_all()
    data = raw["history"]
    assert isinstance(data, list)
    assert len(data) > 100
    assert data[0]["TRADEDATE"] == "2018-01-03"
    assert data[-1]["TRADEDATE"] == "2018-03-01"
    for row in data:
        for column in ["TRADEDATE", "OPEN", "LOW", "HIGH", "CLOSE", "VOLUME"]:
            assert column in row
Example #8
0
async def get_short_data(
    session: aiohttp.ClientSession,
    url: str,
    table_name: str,
    query: Optional[client.WebQuery] = None,
) -> client.Table:
    """Получить данные для запроса с выдачей всей информации за раз.

    :param session:
        Сессия http соединения.
    :param url:
        URL запроса.
    :param query:
        Дополнительные параметры запроса - None, если нет параметров.
    :param table_name:
        Таблица, которую нужно выбрать.

    :return:
        Конкретная таблица из запроса.
    """
    iss = client.ISSClient(session, url, query)
    table_dict = await iss.get()
    return get_table(table_dict, table_name)
Example #9
0
def test_iss_client_async_iterable(http_session):
    iss = client.ISSClient(http_session, "test_url")
    assert isinstance(iss, typing.AsyncIterable)
    assert str(iss) == "ISSClient(url=test_url, query={})"