File: test_real_api_calls.py

package info (click to toggle)
python-aiopvpc 4.3.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 592 kB
  • sloc: python: 1,415; makefile: 7
file content (64 lines) | stat: -rw-r--r-- 1,843 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""Tests for aiopvpc."""

import os
from datetime import datetime
from typing import cast
from zoneinfo import ZoneInfo

import pytest
from aiohttp import ClientSession
from dotenv import load_dotenv

from aiopvpc import PVPCData
from aiopvpc.const import ALL_SENSORS, DataSource, KEY_PVPC, REFERENCE_TZ
from tests.conftest import TZ_TEST

load_dotenv()


async def _get_real_data(
    timezone: ZoneInfo, data_source: str, indicators: tuple[str, ...], ts: datetime
):
    async with ClientSession() as session:
        pvpc_data = PVPCData(
            session=session,
            tariff="2.0TD",
            local_timezone=timezone,
            api_token=os.getenv("ESIOS_TOKEN") if data_source == "esios" else None,
            data_source=cast(DataSource, data_source),
            sensor_keys=indicators,
        )
        return await pvpc_data.async_update_all(None, ts)


@pytest.mark.real_api_call
@pytest.mark.asyncio
@pytest.mark.parametrize(
    "data_source, timezone, num_sensors",
    (
        ("esios", REFERENCE_TZ, 6),
        ("esios", TZ_TEST, 6),
        ("esios_public", REFERENCE_TZ, 1),
        ("esios_public", TZ_TEST, 1),
    ),
)
async def test_real_download_today_async(data_source, timezone, num_sensors):
    sensor_keys = ALL_SENSORS if data_source == "esios" else (KEY_PVPC,)
    api_data = await _get_real_data(
        timezone, data_source, sensor_keys, datetime.utcnow()
    )
    assert 22 < len(api_data.sensors[KEY_PVPC]) < 49
    assert len(api_data.sensors) == num_sensors


if __name__ == "__main__":
    import asyncio
    from dataclasses import asdict
    from pprint import pprint

    # timestamp = datetime(2021, 10, 30, 21)
    timestamp = datetime.utcnow()
    api_data = asyncio.run(
        _get_real_data(REFERENCE_TZ, "esios", ALL_SENSORS, timestamp)
    )
    pprint(asdict(api_data))