Fix Tami4 device name is None (#123156)

Co-authored-by: Robert Resch <robert@resch.dev>
This commit is contained in:
Yehazkel 2024-08-06 17:21:34 +03:00 committed by GitHub
parent 9414e6d472
commit 2000db57c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 62 additions and 1 deletions

View File

@ -82,8 +82,11 @@ class Tami4ConfigFlow(ConfigFlow, domain=DOMAIN):
_LOGGER.exception("Unexpected exception")
errors["base"] = "unknown"
else:
device_name = api.device_metadata.name
if device_name is None:
device_name = "Tami4"
return self.async_create_entry(
title=api.device_metadata.name,
title=device_name,
data={CONF_REFRESH_TOKEN: refresh_token},
)

View File

@ -60,6 +60,31 @@ def mock__get_devices_metadata(request: pytest.FixtureRequest) -> Generator[None
yield
@pytest.fixture
def mock__get_devices_metadata_no_name(
request: pytest.FixtureRequest,
) -> Generator[None]:
"""Fixture to mock _get_devices which makes a call to the API."""
side_effect = getattr(request, "param", None)
device_metadata = DeviceMetadata(
id=1,
name=None,
connected=True,
psn="psn",
type="type",
device_firmware="v1.1",
)
with patch(
"Tami4EdgeAPI.Tami4EdgeAPI.Tami4EdgeAPI._get_devices_metadata",
return_value=[device_metadata],
side_effect=side_effect,
):
yield
@pytest.fixture
def mock_get_device(
request: pytest.FixtureRequest,

View File

@ -120,6 +120,39 @@ async def test_step_otp_valid(
assert "refresh_token" in result["data"]
@pytest.mark.usefixtures(
"mock_setup_entry",
"mock_request_otp",
"mock_submit_otp",
"mock__get_devices_metadata_no_name",
)
async def test_step_otp_valid_device_no_name(hass: HomeAssistant) -> None:
"""Test user step with valid phone number."""
result = await hass.config_entries.flow.async_init(
DOMAIN, context={"source": config_entries.SOURCE_USER}
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "user"
assert result["errors"] == {}
result = await hass.config_entries.flow.async_configure(
result["flow_id"],
user_input={CONF_PHONE: "+972555555555"},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "otp"
assert result["errors"] == {}
result = await hass.config_entries.flow.async_configure(
result["flow_id"],
user_input={"otp": "123456"},
)
assert result["type"] is FlowResultType.CREATE_ENTRY
assert result["title"] == "Tami4"
assert "refresh_token" in result["data"]
@pytest.mark.parametrize(
("mock_submit_otp", "expected_error"),
[