KNX: use async_load_json_object_fixture in tests (#147991)

This commit is contained in:
Matthias Alphart 2025-07-03 08:00:34 +02:00 committed by GitHub
parent f0e0c954e7
commit c137c96cfd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 17 deletions

View File

@ -40,15 +40,9 @@ from homeassistant.setup import async_setup_component
from . import KnxEntityGenerator from . import KnxEntityGenerator
from tests.common import ( from tests.common import MockConfigEntry, async_load_json_object_fixture
MockConfigEntry,
async_load_json_object_fixture,
load_json_object_fixture,
)
from tests.typing import WebSocketGenerator from tests.typing import WebSocketGenerator
FIXTURE_PROJECT_DATA = load_json_object_fixture("project.json", DOMAIN)
class KNXTestKit: class KNXTestKit:
"""Test helper for the KNX integration.""" """Test helper for the KNX integration."""
@ -338,11 +332,19 @@ async def knx(
@pytest.fixture @pytest.fixture
def load_knxproj(hass_storage: dict[str, Any]) -> None: async def project_data(hass: HomeAssistant) -> dict[str, Any]:
"""Return the fixture project data."""
return await async_load_json_object_fixture(hass, "project.json", DOMAIN)
@pytest.fixture
async def load_knxproj(
project_data: dict[str, Any], hass_storage: dict[str, Any]
) -> None:
"""Mock KNX project data.""" """Mock KNX project data."""
hass_storage[KNX_PROJECT_STORAGE_KEY] = { hass_storage[KNX_PROJECT_STORAGE_KEY] = {
"version": 1, "version": 1,
"data": FIXTURE_PROJECT_DATA, "data": project_data,
} }

View File

@ -11,7 +11,7 @@ from homeassistant.components.knx.schema import SwitchSchema
from homeassistant.const import CONF_NAME from homeassistant.const import CONF_NAME
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from .conftest import FIXTURE_PROJECT_DATA, KNXTestKit from .conftest import KNXTestKit
from tests.typing import WebSocketGenerator from tests.typing import WebSocketGenerator
@ -32,11 +32,11 @@ async def test_knx_info_command(
assert res["result"]["project"] is None assert res["result"]["project"] is None
@pytest.mark.usefixtures("load_knxproj")
async def test_knx_info_command_with_project( async def test_knx_info_command_with_project(
hass: HomeAssistant, hass: HomeAssistant,
knx: KNXTestKit, knx: KNXTestKit,
hass_ws_client: WebSocketGenerator, hass_ws_client: WebSocketGenerator,
load_knxproj: None,
) -> None: ) -> None:
"""Test knx/info command with loaded project.""" """Test knx/info command with loaded project."""
await knx.setup_integration() await knx.setup_integration()
@ -59,11 +59,11 @@ async def test_knx_project_file_process(
knx: KNXTestKit, knx: KNXTestKit,
hass_ws_client: WebSocketGenerator, hass_ws_client: WebSocketGenerator,
hass_storage: dict[str, Any], hass_storage: dict[str, Any],
project_data: dict[str, Any],
) -> None: ) -> None:
"""Test knx/project_file_process command for storing and loading new data.""" """Test knx/project_file_process command for storing and loading new data."""
_file_id = "1234" _file_id = "1234"
_password = "pw-test" _password = "pw-test"
_parse_result = FIXTURE_PROJECT_DATA
await knx.setup_integration() await knx.setup_integration()
client = await hass_ws_client(hass) client = await hass_ws_client(hass)
@ -80,7 +80,7 @@ async def test_knx_project_file_process(
patch( patch(
"homeassistant.components.knx.project.process_uploaded_file", "homeassistant.components.knx.project.process_uploaded_file",
) as file_upload_mock, ) as file_upload_mock,
patch("xknxproject.XKNXProj.parse", return_value=_parse_result) as parse_mock, patch("xknxproject.XKNXProj.parse", return_value=project_data) as parse_mock,
): ):
file_upload_mock.return_value.__enter__.return_value = "" file_upload_mock.return_value.__enter__.return_value = ""
res = await client.receive_json() res = await client.receive_json()
@ -90,7 +90,7 @@ async def test_knx_project_file_process(
assert res["success"], res assert res["success"], res
assert hass.data[KNX_MODULE_KEY].project.loaded assert hass.data[KNX_MODULE_KEY].project.loaded
assert hass_storage[KNX_PROJECT_STORAGE_KEY]["data"] == _parse_result assert hass_storage[KNX_PROJECT_STORAGE_KEY]["data"] == project_data
async def test_knx_project_file_process_error( async def test_knx_project_file_process_error(
@ -124,11 +124,11 @@ async def test_knx_project_file_process_error(
assert not hass.data[KNX_MODULE_KEY].project.loaded assert not hass.data[KNX_MODULE_KEY].project.loaded
@pytest.mark.usefixtures("load_knxproj")
async def test_knx_project_file_remove( async def test_knx_project_file_remove(
hass: HomeAssistant, hass: HomeAssistant,
knx: KNXTestKit, knx: KNXTestKit,
hass_ws_client: WebSocketGenerator, hass_ws_client: WebSocketGenerator,
load_knxproj: None,
hass_storage: dict[str, Any], hass_storage: dict[str, Any],
) -> None: ) -> None:
"""Test knx/project_file_remove command.""" """Test knx/project_file_remove command."""
@ -145,11 +145,12 @@ async def test_knx_project_file_remove(
assert not hass_storage.get(KNX_PROJECT_STORAGE_KEY) assert not hass_storage.get(KNX_PROJECT_STORAGE_KEY)
@pytest.mark.usefixtures("load_knxproj")
async def test_knx_get_project( async def test_knx_get_project(
hass: HomeAssistant, hass: HomeAssistant,
knx: KNXTestKit, knx: KNXTestKit,
hass_ws_client: WebSocketGenerator, hass_ws_client: WebSocketGenerator,
load_knxproj: None, project_data: dict[str, Any],
) -> None: ) -> None:
"""Test retrieval of kxnproject from store.""" """Test retrieval of kxnproject from store."""
await knx.setup_integration() await knx.setup_integration()
@ -160,7 +161,7 @@ async def test_knx_get_project(
res = await client.receive_json() res = await client.receive_json()
assert res["success"], res assert res["success"], res
assert res["result"]["project_loaded"] is True assert res["result"]["project_loaded"] is True
assert res["result"]["knxproject"] == FIXTURE_PROJECT_DATA assert res["result"]["knxproject"] == project_data
async def test_knx_group_monitor_info_command( async def test_knx_group_monitor_info_command(