File: test_display.py

package info (click to toggle)
python-demetriek 1.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 544 kB
  • sloc: python: 1,400; makefile: 3
file content (83 lines) | stat: -rw-r--r-- 2,809 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
"""Asynchronous Python client for LaMetric TIME devices."""

# pylint: disable=protected-access
import aiohttp
from aresponses import Response, ResponsesMockServer

from demetriek import LaMetricDevice
from demetriek.const import BrightnessMode, DisplayType

from . import load_fixture


async def test_get_display(aresponses: ResponsesMockServer) -> None:
    """Test getting display information."""
    aresponses.add(
        "127.0.0.2:4343",
        "/api/v2/device/display",
        "GET",
        aresponses.Response(
            status=200,
            headers={"Content-Type": "application/json"},
            text=load_fixture("display.json"),
        ),
    )
    async with aiohttp.ClientSession() as session:
        demetriek = LaMetricDevice(host="127.0.0.2", api_key="abc", session=session)
        display = await demetriek.display()

    assert display
    assert display.brightness == 100
    assert display.brightness_limit
    assert display.brightness_limit.range_min == 2
    assert display.brightness_limit.range_max == 100
    assert display.brightness_range
    assert display.brightness_range.range_min == 0
    assert display.brightness_range.range_max == 100
    assert display.brightness_mode is BrightnessMode.AUTO
    assert display.width == 37
    assert display.height == 8
    assert display.display_type is DisplayType.MIXED
    assert display.on is True


async def test_set_display(aresponses: ResponsesMockServer) -> None:
    """Test setting display properties."""

    async def response_handler(request: aiohttp.ClientResponse) -> Response:
        """Response handler for this test."""
        data = await request.json()
        assert data == {
            "brightness": 99,
            "brightness_mode": "manual",
            "screensaver": {
                "enabled": False,
            },
            "on": True,
        }
        return aresponses.Response(
            status=200,
            headers={"Content-Type": "application/json"},
            text=load_fixture("display_set.json"),
        )

    aresponses.add("127.0.0.2:4343", "/api/v2/device/display", "PUT", response_handler)

    async with aiohttp.ClientSession() as session:
        demetriek = LaMetricDevice(host="127.0.0.2", api_key="abc", session=session)
        display = await demetriek.display(
            brightness=99,
            brightness_mode=BrightnessMode.MANUAL,
            screensaver_enabled=False,
            on=True,
        )

    assert display
    assert display.brightness == 99
    assert display.brightness_mode is BrightnessMode.MANUAL
    assert display.width == 37
    assert display.height == 8
    assert display.display_type is DisplayType.MIXED
    assert display.screensaver
    assert display.screensaver.enabled is False
    assert display.on is True