File: test_energy_production.py

package info (click to toggle)
zwave-js-server-python 0.67.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,820 kB
  • sloc: python: 15,886; sh: 21; javascript: 16; makefile: 2
file content (96 lines) | stat: -rw-r--r-- 3,046 bytes parent folder | download | duplicates (2)
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
84
85
86
87
88
89
90
91
92
93
94
95
96
"""Test Energy Production command class utility functions."""

import pytest

from zwave_js_server.const import CommandClass
from zwave_js_server.const.command_class.energy_production import (
    CC_SPECIFIC_PARAMETER,
    CC_SPECIFIC_SCALE,
    EnergyProductionParameter,
    PowerScale,
)
from zwave_js_server.exceptions import InvalidCommandClass, UnknownValueData
from zwave_js_server.model.node import Node
from zwave_js_server.model.value import (
    MetaDataType,
    Value,
    ValueDataType,
    get_value_id_str,
)
from zwave_js_server.util.command_class.energy_production import (
    get_energy_production_parameter,
    get_energy_production_scale_type,
)


async def test_get_energy_production_parameter(energy_production: Node):
    """Test get_energy_production_parameter function."""
    node = energy_production

    value_id = get_value_id_str(node, CommandClass.VERSION, "protocolVersion")
    with pytest.raises(InvalidCommandClass):
        get_energy_production_parameter(node.values.get(value_id))

    value_id = get_value_id_str(
        node, CommandClass.ENERGY_PRODUCTION, "value", property_key=0
    )
    assert (
        get_energy_production_parameter(node.values.get(value_id))
        == EnergyProductionParameter.POWER
    )


async def test_invalid_get_energy_production_parameter(
    invalid_multilevel_sensor_type: Node,
):
    """Test receiving an invalid energy production parameter."""
    node = invalid_multilevel_sensor_type

    # Create value with an invalid parameter ID
    metadata = MetaDataType(ccSpecific={CC_SPECIFIC_PARAMETER: -1})
    value_data = ValueDataType(
        commandClass=CommandClass.ENERGY_PRODUCTION,
        commandClassName="EnergyProduction",
        endpoint=0,
        property="value",
        propertyKey=0,
        metadata=metadata,
    )
    value = Value(node, value_data)
    with pytest.raises(UnknownValueData):
        get_energy_production_parameter(value)


async def test_get_energy_production_scale_type(energy_production: Node):
    """Test get_energy_production_scale_type function."""
    node = energy_production

    value_id = get_value_id_str(
        node, CommandClass.ENERGY_PRODUCTION, "value", property_key=0
    )
    assert (
        get_energy_production_scale_type(node.values.get(value_id)) == PowerScale.WATTS
    )


async def test_invalid_get_energy_production_scale_type(
    invalid_multilevel_sensor_type: Node,
):
    """Test receiving an invalid energy production scale type."""
    node = invalid_multilevel_sensor_type

    # Create value with an invalid scale ID
    metadata = MetaDataType(
        ccSpecific={CC_SPECIFIC_PARAMETER: 0, CC_SPECIFIC_SCALE: -1}
    )
    value_data = ValueDataType(
        commandClass=CommandClass.ENERGY_PRODUCTION,
        commandClassName="EnergyProduction",
        endpoint=0,
        property="value",
        propertyKey=0,
        metadata=metadata,
    )
    value = Value(node, value_data)
    with pytest.raises(UnknownValueData):
        get_energy_production_scale_type(value)