File: test_methods.py

package info (click to toggle)
pytrydan 0.8.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 436 kB
  • sloc: python: 690; makefile: 22; javascript: 8; sh: 5
file content (40 lines) | stat: -rw-r--r-- 1,130 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
import pytest
import respx
from httpx import Response

from pytrydan import TrydanInvalidValue

from .conftest import _get_mock_trydan, _load_json_fixture


@pytest.mark.asyncio
@respx.mock
async def test_binary_sensors():
    respx.get("/RealTimeData").mock(
        return_value=Response(200, json=_load_json_fixture("RealTimeData"))
    )

    envoy = await _get_mock_trydan()

    envoy_data = await envoy.get_data()

    assert envoy_data is not None

    assert envoy.firmware_version == "1.6.18"

    assert envoy.connected is True
    assert envoy.charging is False
    assert envoy.ready is True

    respx.get("/write/Paused=1").mock(return_value=Response(200, text="OK"))
    assert await envoy.pause() is None

    respx.get("/write/Paused=0").mock(return_value=Response(200, text="OK"))
    assert await envoy.resume() is None

    respx.get("/write/Intensity=10").mock(return_value=Response(200, text="OK"))
    assert await envoy.intensity(10) is None

    with pytest.raises(TrydanInvalidValue) as e_info:
        await envoy.intensity(100)
        assert "Intensity must be between 6 and 32" == str(e_info.value)