Allow current empty feeds to be configured in Feedreader (#121421)

This commit is contained in:
Michael 2024-07-07 15:11:28 +02:00 committed by GitHub
parent 1c2e6ab3db
commit 846528131e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 7 additions and 64 deletions

View File

@ -107,13 +107,6 @@ class FeedReaderConfigFlow(ConfigFlow, domain=DOMAIN):
return self.abort_on_import_error(user_input[CONF_URL], "url_error")
return self.show_user_form(user_input, {"base": "url_error"})
if not feed.entries:
if self.context["source"] == SOURCE_IMPORT:
return self.abort_on_import_error(
user_input[CONF_URL], "no_feed_entries"
)
return self.show_user_form(user_input, {"base": "no_feed_entries"})
feed_title = feed["feed"]["title"]
return self.async_create_entry(
@ -161,13 +154,6 @@ class FeedReaderConfigFlow(ConfigFlow, domain=DOMAIN):
step_id="reconfigure_confirm",
errors={"base": "url_error"},
)
if not feed.entries:
return self.show_user_form(
user_input=user_input,
description_placeholders={"name": self._config_entry.title},
step_id="reconfigure_confirm",
errors={"base": "no_feed_entries"},
)
self.hass.config_entries.async_update_entry(self._config_entry, data=user_input)
return self.async_abort(reason="reconfigure_successful")

View File

@ -18,8 +18,7 @@
"reconfigure_successful": "[%key:common::config_flow::abort::reconfigure_successful%]"
},
"error": {
"url_error": "The URL could not be opened.",
"no_feed_entries": "The URL seems not to serve any feed entries."
"url_error": "The URL could not be opened."
}
},
"options": {
@ -38,10 +37,6 @@
"import_yaml_error_url_error": {
"title": "The Feedreader YAML configuration import failed",
"description": "Configuring the Feedreader using YAML is being removed but there was a connection error when trying to import the YAML configuration for `{url}`.\n\nPlease verify that url is reachable and accessable for Home Assistant and restart Home Assistant to try again or remove the Feedreader YAML configuration from your configuration.yaml file and continue to set up the integration manually."
},
"import_yaml_error_no_feed_entries": {
"title": "[%key:component::feedreader::issues::import_yaml_error_url_error::title%]",
"description": "Configuring the Feedreader using YAML is being removed but when trying to import the YAML configuration for `{url}` no feed entries were found.\n\nPlease verify that url serves any feed entries and restart Home Assistant to try again or remove the Feedreader YAML configuration from your configuration.yaml file and continue to set up the integration manually."
}
}
}

View File

@ -83,16 +83,6 @@ async def test_user_errors(
assert result["step_id"] == "user"
assert result["errors"] == {"base": "url_error"}
# no feed entries returned
feedparser.side_effect = None
feedparser.return_value = None
result = await hass.config_entries.flow.async_configure(
result["flow_id"], user_input={CONF_URL: URL}
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "user"
assert result["errors"] == {"base": "no_feed_entries"}
# success
feedparser.side_effect = None
feedparser.return_value = feed_one_event
@ -141,40 +131,25 @@ async def test_import(
assert issue_registry.async_get_issue(HA_DOMAIN, "deprecated_yaml_feedreader")
@pytest.mark.parametrize(
("side_effect", "return_value", "expected_issue_id"),
[
(
urllib.error.URLError("Test"),
None,
"import_yaml_error_feedreader_url_error_http_some_rss_local_rss_feed_xml",
),
(
None,
None,
"import_yaml_error_feedreader_no_feed_entries_http_some_rss_local_rss_feed_xml",
),
],
)
async def test_import_errors(
hass: HomeAssistant,
issue_registry: ir.IssueRegistry,
feedparser,
setup_entry,
feed_one_event,
side_effect,
return_value,
expected_issue_id,
) -> None:
"""Test starting an import flow which results in an URL error."""
config_entries = hass.config_entries.async_entries(DOMAIN)
assert not config_entries
# raise URLError
feedparser.side_effect = side_effect
feedparser.return_value = return_value
feedparser.side_effect = urllib.error.URLError("Test")
feedparser.return_value = None
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_URLS: [URL]}})
assert issue_registry.async_get_issue(DOMAIN, expected_issue_id)
assert issue_registry.async_get_issue(
DOMAIN,
"import_yaml_error_feedreader_url_error_http_some_rss_local_rss_feed_xml",
)
async def test_reconfigure(hass: HomeAssistant, feedparser) -> None:
@ -248,19 +223,6 @@ async def test_reconfigure_errors(
assert result["step_id"] == "reconfigure_confirm"
assert result["errors"] == {"base": "url_error"}
# no feed entries returned
feedparser.side_effect = None
feedparser.return_value = None
result = await hass.config_entries.flow.async_configure(
result["flow_id"],
user_input={
CONF_URL: "http://other.rss.local/rss_feed.xml",
},
)
assert result["type"] is FlowResultType.FORM
assert result["step_id"] == "reconfigure_confirm"
assert result["errors"] == {"base": "no_feed_entries"}
# success
feedparser.side_effect = None
feedparser.return_value = feed_one_event