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
|
"""Test for HomeWizard Energy Models."""
import json
import pytest
from syrupy.assertion import SnapshotAssertion
from homewizard_energy.models import (
Device,
Measurement,
)
from . import load_fixtures
pytestmark = [pytest.mark.asyncio]
@pytest.mark.parametrize(
("model", "fixtures"),
[
("HWE-P1", ["device"]),
("HWE-KWH1", ["device"]),
("HWE-KWH3", ["device"]),
("HWE-BAT", ["device"]),
],
)
async def test_device(model: str, fixtures: str, snapshot: SnapshotAssertion):
"""Test Device model."""
for fixture in fixtures:
data = Device.from_dict(json.loads(load_fixtures(f"{model}/{fixture}.json")))
assert data
assert snapshot == data
@pytest.mark.parametrize(
("model", "fixtures"),
[
(
"HWE-P1",
[
"measurement_1_phase_no_gas",
"measurement_3_phase_with_gas_with_watermeter",
"measurement_invalid_ean",
"measurement_invalid_external",
],
),
(
"HWE-KWH1",
[
"measurement",
],
),
(
"HWE-KWH3",
[
"measurement",
],
),
(
"HWE-BAT",
[
"measurement",
],
),
],
)
async def test_measurement(model: str, fixtures: str, snapshot: SnapshotAssertion):
"""Test Measurement model."""
for fixture in fixtures:
data = Measurement.from_dict(
json.loads(load_fixtures(f"{model}/{fixture}.json"))
)
assert data
assert snapshot == data
async def test_measurement_ignores_invalid_tariff():
"""Test Measurement model ignores invalid tariff."""
measurement = Measurement.from_dict({"tariff": 5432})
assert measurement.tariff is None
|