WIP
This commit is contained in:
parent
dfa6ea48e5
commit
71695c2987
15 changed files with 186 additions and 176 deletions
|
|
@ -38,7 +38,7 @@ def test_has_black_tags() -> None:
|
|||
|
||||
# Test feed without any blacklist tags
|
||||
assert_msg: str = "Feed should not have any blacklist tags"
|
||||
assert feed_has_blacklist_tags(custom_reader=get_reader(), feed=feed) is False, assert_msg
|
||||
assert feed_has_blacklist_tags(reader=get_reader(), feed=feed) is False, assert_msg
|
||||
|
||||
check_if_has_tag(reader, feed, "blacklist_title")
|
||||
check_if_has_tag(reader, feed, "blacklist_summary")
|
||||
|
|
@ -58,11 +58,11 @@ def test_has_black_tags() -> None:
|
|||
def check_if_has_tag(reader: Reader, feed: Feed, blacklist_name: str) -> None:
|
||||
reader.set_tag(feed, blacklist_name, "a") # pyright: ignore[reportArgumentType]
|
||||
assert_msg: str = f"Feed should have blacklist tags: {blacklist_name}"
|
||||
assert feed_has_blacklist_tags(custom_reader=reader, feed=feed) is True, assert_msg
|
||||
assert feed_has_blacklist_tags(reader=reader, feed=feed) is True, assert_msg
|
||||
|
||||
asset_msg: str = f"Feed should not have any blacklist tags: {blacklist_name}"
|
||||
reader.delete_tag(feed, blacklist_name)
|
||||
assert feed_has_blacklist_tags(custom_reader=reader, feed=feed) is False, asset_msg
|
||||
assert feed_has_blacklist_tags(reader=reader, feed=feed) is False, asset_msg
|
||||
|
||||
|
||||
def test_should_be_skipped() -> None:
|
||||
|
|
|
|||
|
|
@ -45,39 +45,39 @@ def test_entry_is_whitelisted() -> None:
|
|||
Path.mkdir(Path(temp_dir), exist_ok=True)
|
||||
|
||||
custom_loc: pathlib.Path = pathlib.Path(temp_dir, "custom_loc_db.sqlite")
|
||||
custom_reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
|
||||
# Add a feed to the database.
|
||||
custom_reader.add_feed("https://lovinator.space/rss_test.xml")
|
||||
custom_reader.update_feed("https://lovinator.space/rss_test.xml")
|
||||
reader.add_feed("https://lovinator.space/rss_test.xml")
|
||||
reader.update_feed("https://lovinator.space/rss_test.xml")
|
||||
|
||||
# whitelist_title
|
||||
custom_reader.set_tag("https://lovinator.space/rss_test.xml", "whitelist_title", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in custom_reader.get_entries():
|
||||
if entry_is_whitelisted(entry) is True:
|
||||
reader.set_tag("https://lovinator.space/rss_test.xml", "whitelist_title", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in reader.get_entries():
|
||||
if entry_is_whitelisted(entry, reader=reader) is True:
|
||||
assert entry.title == "fvnnnfnfdnfdnfd", f"Expected: fvnnnfnfdnfdnfd, Got: {entry.title}"
|
||||
break
|
||||
custom_reader.delete_tag("https://lovinator.space/rss_test.xml", "whitelist_title")
|
||||
reader.delete_tag("https://lovinator.space/rss_test.xml", "whitelist_title")
|
||||
|
||||
# whitelist_summary
|
||||
custom_reader.set_tag("https://lovinator.space/rss_test.xml", "whitelist_summary", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in custom_reader.get_entries():
|
||||
if entry_is_whitelisted(entry) is True:
|
||||
reader.set_tag("https://lovinator.space/rss_test.xml", "whitelist_summary", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in reader.get_entries():
|
||||
if entry_is_whitelisted(entry, reader=reader) is True:
|
||||
assert entry.summary == "fvnnnfnfdnfdnfd", f"Expected: fvnnnfnfdnfdnfd, Got: {entry.summary}"
|
||||
break
|
||||
custom_reader.delete_tag("https://lovinator.space/rss_test.xml", "whitelist_summary")
|
||||
reader.delete_tag("https://lovinator.space/rss_test.xml", "whitelist_summary")
|
||||
|
||||
# whitelist_content
|
||||
custom_reader.set_tag("https://lovinator.space/rss_test.xml", "whitelist_content", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in custom_reader.get_entries():
|
||||
if entry_is_whitelisted(entry) is True:
|
||||
reader.set_tag("https://lovinator.space/rss_test.xml", "whitelist_content", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in reader.get_entries():
|
||||
if entry_is_whitelisted(entry, reader=reader) is True:
|
||||
assert_msg = f"Expected: <p>ffdnfdnfdnfdnfdndfn</p>, Got: {entry.content[0].value}"
|
||||
assert entry.content[0].value == "<p>ffdnfdnfdnfdnfdndfn</p>", assert_msg
|
||||
break
|
||||
custom_reader.delete_tag("https://lovinator.space/rss_test.xml", "whitelist_content")
|
||||
reader.delete_tag("https://lovinator.space/rss_test.xml", "whitelist_content")
|
||||
|
||||
# Close the reader, so we can delete the directory.
|
||||
custom_reader.close()
|
||||
reader.close()
|
||||
|
||||
|
||||
def test_entry_is_blacklisted() -> None:
|
||||
|
|
@ -87,36 +87,36 @@ def test_entry_is_blacklisted() -> None:
|
|||
Path.mkdir(Path(temp_dir), exist_ok=True)
|
||||
|
||||
custom_loc: pathlib.Path = pathlib.Path(temp_dir, "custom_loc_db.sqlite")
|
||||
custom_reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
|
||||
# Add a feed to the database.
|
||||
custom_reader.add_feed("https://lovinator.space/rss_test.xml")
|
||||
custom_reader.update_feed("https://lovinator.space/rss_test.xml")
|
||||
reader.add_feed("https://lovinator.space/rss_test.xml")
|
||||
reader.update_feed("https://lovinator.space/rss_test.xml")
|
||||
|
||||
# blacklist_title
|
||||
custom_reader.set_tag("https://lovinator.space/rss_test.xml", "blacklist_title", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in custom_reader.get_entries():
|
||||
if entry_is_blacklisted(entry) is True:
|
||||
reader.set_tag("https://lovinator.space/rss_test.xml", "blacklist_title", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in reader.get_entries():
|
||||
if entry_is_blacklisted(entry, reader=reader) is True:
|
||||
assert entry.title == "fvnnnfnfdnfdnfd", f"Expected: fvnnnfnfdnfdnfd, Got: {entry.title}"
|
||||
break
|
||||
custom_reader.delete_tag("https://lovinator.space/rss_test.xml", "blacklist_title")
|
||||
reader.delete_tag("https://lovinator.space/rss_test.xml", "blacklist_title")
|
||||
|
||||
# blacklist_summary
|
||||
custom_reader.set_tag("https://lovinator.space/rss_test.xml", "blacklist_summary", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in custom_reader.get_entries():
|
||||
if entry_is_blacklisted(entry) is True:
|
||||
reader.set_tag("https://lovinator.space/rss_test.xml", "blacklist_summary", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in reader.get_entries():
|
||||
if entry_is_blacklisted(entry, reader=reader) is True:
|
||||
assert entry.summary == "fvnnnfnfdnfdnfd", f"Expected: fvnnnfnfdnfdnfd, Got: {entry.summary}"
|
||||
break
|
||||
custom_reader.delete_tag("https://lovinator.space/rss_test.xml", "blacklist_summary")
|
||||
reader.delete_tag("https://lovinator.space/rss_test.xml", "blacklist_summary")
|
||||
|
||||
# blacklist_content
|
||||
custom_reader.set_tag("https://lovinator.space/rss_test.xml", "blacklist_content", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in custom_reader.get_entries():
|
||||
if entry_is_blacklisted(entry) is True:
|
||||
reader.set_tag("https://lovinator.space/rss_test.xml", "blacklist_content", "fvnnnfnfdnfdnfd") # pyright: ignore[reportArgumentType]
|
||||
for entry in reader.get_entries():
|
||||
if entry_is_blacklisted(entry, reader=reader) is True:
|
||||
assert_msg = f"Expected: <p>ffdnfdnfdnfdnfdndfn</p>, Got: {entry.content[0].value}"
|
||||
assert entry.content[0].value == "<p>ffdnfdnfdnfdnfdndfn</p>", assert_msg
|
||||
break
|
||||
custom_reader.delete_tag("https://lovinator.space/rss_test.xml", "blacklist_content")
|
||||
reader.delete_tag("https://lovinator.space/rss_test.xml", "blacklist_content")
|
||||
|
||||
# Close the reader, so we can delete the directory.
|
||||
custom_reader.close()
|
||||
reader.close()
|
||||
|
|
|
|||
|
|
@ -102,12 +102,10 @@ def test_format_entry_html_for_discord_does_not_preserve_invalid_timestamp_style
|
|||
|
||||
|
||||
@patch("discord_rss_bot.custom_message.get_custom_message")
|
||||
@patch("discord_rss_bot.custom_message.get_reader")
|
||||
def test_replace_tags_in_text_message_preserves_timestamp_tags(
|
||||
mock_get_reader: MagicMock,
|
||||
mock_get_custom_message: MagicMock,
|
||||
) -> None:
|
||||
mock_get_reader.return_value = MagicMock()
|
||||
mock_reader = MagicMock()
|
||||
mock_get_custom_message.return_value = "{{entry_summary}}"
|
||||
summary_parts: list[str] = [
|
||||
f"<p>Format {index}: ({timestamp_tag.replace('<', '<').replace('>', '>')})</p>"
|
||||
|
|
@ -116,19 +114,17 @@ def test_replace_tags_in_text_message_preserves_timestamp_tags(
|
|||
entry_ns: SimpleNamespace = make_entry("".join(summary_parts))
|
||||
|
||||
entry: Entry = typing.cast("Entry", entry_ns)
|
||||
rendered: str = replace_tags_in_text_message(entry)
|
||||
rendered: str = replace_tags_in_text_message(entry, reader=mock_reader)
|
||||
|
||||
for timestamp_tag in TIMESTAMP_FORMATS:
|
||||
assert timestamp_tag in rendered
|
||||
|
||||
|
||||
@patch("discord_rss_bot.custom_message.get_embed")
|
||||
@patch("discord_rss_bot.custom_message.get_reader")
|
||||
def test_replace_tags_in_embed_preserves_timestamp_tags(
|
||||
mock_get_reader: MagicMock,
|
||||
mock_get_embed: MagicMock,
|
||||
) -> None:
|
||||
mock_get_reader.return_value = MagicMock()
|
||||
mock_reader = MagicMock()
|
||||
mock_get_embed.return_value = CustomEmbed(description="{{entry_summary}}")
|
||||
summary_parts: list[str] = [
|
||||
f"<p>Format {index}: ({timestamp_tag.replace('<', '<').replace('>', '>')})</p>"
|
||||
|
|
@ -138,7 +134,7 @@ def test_replace_tags_in_embed_preserves_timestamp_tags(
|
|||
|
||||
entry: Entry = typing.cast("Entry", entry_ns)
|
||||
|
||||
embed: CustomEmbed = replace_tags_in_embed(entry_ns.feed, entry)
|
||||
embed: CustomEmbed = replace_tags_in_embed(entry_ns.feed, entry, reader=mock_reader)
|
||||
|
||||
for timestamp_tag in TIMESTAMP_FORMATS:
|
||||
assert timestamp_tag in embed.description
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ def test_send_to_discord() -> None:
|
|||
assert reader.get_tag(feed, "webhook") == webhook_url, f"The webhook URL should be '{webhook_url}'."
|
||||
|
||||
# Send the feed to Discord.
|
||||
send_to_discord(custom_reader=reader, feed=feed, do_once=True)
|
||||
send_to_discord(reader=reader, feed=feed, do_once=True)
|
||||
|
||||
# Close the reader, so we can delete the directory.
|
||||
reader.close()
|
||||
|
|
@ -200,7 +200,7 @@ def test_send_entry_to_discord_youtube_feed(
|
|||
assert webhook_call_kwargs["url"] == "https://discord.com/api/webhooks/123/abc"
|
||||
|
||||
# Verify execute_webhook was called
|
||||
mock_execute_webhook.assert_called_once_with(mock_webhook, mock_entry)
|
||||
mock_execute_webhook.assert_called_once_with(mock_webhook, mock_entry, reader=mock_reader)
|
||||
|
||||
|
||||
def test_extract_domain_youtube_feed() -> None:
|
||||
|
|
|
|||
|
|
@ -718,11 +718,24 @@ def test_create_html_marks_entries_from_another_feed(monkeypatch: pytest.MonkeyP
|
|||
original_feed_url="https://example.com/feed-b.xml",
|
||||
)
|
||||
|
||||
monkeypatch.setattr("discord_rss_bot.main.replace_tags_in_text_message", lambda _entry: "Rendered content")
|
||||
monkeypatch.setattr("discord_rss_bot.main.entry_is_blacklisted", lambda _entry: False)
|
||||
monkeypatch.setattr("discord_rss_bot.main.entry_is_whitelisted", lambda _entry: False)
|
||||
monkeypatch.setattr(
|
||||
"discord_rss_bot.main.replace_tags_in_text_message",
|
||||
lambda _entry, **_kwargs: "Rendered content",
|
||||
)
|
||||
monkeypatch.setattr("discord_rss_bot.main.entry_is_blacklisted", lambda _entry, **_kwargs: False)
|
||||
monkeypatch.setattr("discord_rss_bot.main.entry_is_whitelisted", lambda _entry, **_kwargs: False)
|
||||
|
||||
html = create_html_for_feed(cast("list[Entry]", [same_feed_entry, other_feed_entry]), selected_feed_url)
|
||||
same_feed_entry_typed: Entry = cast("Entry", same_feed_entry)
|
||||
other_feed_entry_typed: Entry = cast("Entry", other_feed_entry)
|
||||
|
||||
html: str = create_html_for_feed(
|
||||
reader=MagicMock(),
|
||||
current_feed_url=selected_feed_url,
|
||||
entries=[
|
||||
same_feed_entry_typed,
|
||||
other_feed_entry_typed,
|
||||
],
|
||||
)
|
||||
|
||||
assert "From another feed: https://example.com/feed-b.xml" in html
|
||||
assert "From another feed: https://example.com/feed-a.xml" not in html
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ def test_create_search_context() -> None:
|
|||
reader.update_search()
|
||||
|
||||
# Create the search context.
|
||||
context: dict = create_search_context("test", custom_reader=reader)
|
||||
context: dict = create_search_context("test", reader=reader)
|
||||
assert context is not None, f"The context should not be None. Got: {context}"
|
||||
|
||||
# Close the reader, so we can delete the directory.
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@ def test_reader() -> None:
|
|||
Path.mkdir(Path(temp_dir), exist_ok=True)
|
||||
|
||||
custom_loc: pathlib.Path = pathlib.Path(temp_dir, "custom_loc_db.sqlite")
|
||||
custom_reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
assert_msg = f"The custom reader should be an instance of Reader. But it was '{type(custom_reader)}'."
|
||||
assert isinstance(custom_reader, Reader), assert_msg
|
||||
reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
assert_msg = f"The custom reader should be an instance of Reader. But it was '{type(reader)}'."
|
||||
assert isinstance(reader, Reader), assert_msg
|
||||
|
||||
# Close the reader, so we can delete the directory.
|
||||
custom_reader.close()
|
||||
reader.close()
|
||||
|
||||
|
||||
def test_data_dir() -> None:
|
||||
|
|
@ -49,16 +49,16 @@ def test_get_webhook_for_entry() -> None:
|
|||
Path.mkdir(Path(temp_dir), exist_ok=True)
|
||||
|
||||
custom_loc: pathlib.Path = pathlib.Path(temp_dir, "custom_loc_db.sqlite")
|
||||
custom_reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
reader: Reader = get_reader(custom_location=str(custom_loc))
|
||||
|
||||
# Add a feed to the database.
|
||||
custom_reader.add_feed("https://www.reddit.com/r/movies.rss")
|
||||
custom_reader.update_feed("https://www.reddit.com/r/movies.rss")
|
||||
reader.add_feed("https://www.reddit.com/r/movies.rss")
|
||||
reader.update_feed("https://www.reddit.com/r/movies.rss")
|
||||
|
||||
# Add a webhook to the database.
|
||||
custom_reader.set_tag("https://www.reddit.com/r/movies.rss", "webhook", "https://example.com") # pyright: ignore[reportArgumentType]
|
||||
our_tag = custom_reader.get_tag("https://www.reddit.com/r/movies.rss", "webhook") # pyright: ignore[reportArgumentType]
|
||||
reader.set_tag("https://www.reddit.com/r/movies.rss", "webhook", "https://example.com") # pyright: ignore[reportArgumentType]
|
||||
our_tag = reader.get_tag("https://www.reddit.com/r/movies.rss", "webhook") # pyright: ignore[reportArgumentType]
|
||||
assert our_tag == "https://example.com", f"The tag should be 'https://example.com'. But it was '{our_tag}'."
|
||||
|
||||
# Close the reader, so we can delete the directory.
|
||||
custom_reader.close()
|
||||
reader.close()
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ def test_has_white_tags() -> None:
|
|||
reader.update_feeds()
|
||||
|
||||
# Test feed without any whitelist tags
|
||||
assert has_white_tags(custom_reader=get_reader(), feed=feed) is False, "Feed should not have any whitelist tags"
|
||||
assert has_white_tags(reader=get_reader(), feed=feed) is False, "Feed should not have any whitelist tags"
|
||||
|
||||
check_if_has_tag(reader, feed, "whitelist_title")
|
||||
check_if_has_tag(reader, feed, "whitelist_summary")
|
||||
|
|
@ -56,9 +56,9 @@ def test_has_white_tags() -> None:
|
|||
|
||||
def check_if_has_tag(reader: Reader, feed: Feed, whitelist_name: str) -> None:
|
||||
reader.set_tag(feed, whitelist_name, "a") # pyright: ignore[reportArgumentType]
|
||||
assert has_white_tags(custom_reader=reader, feed=feed) is True, "Feed should have whitelist tags"
|
||||
assert has_white_tags(reader=reader, feed=feed) is True, "Feed should have whitelist tags"
|
||||
reader.delete_tag(feed, whitelist_name)
|
||||
assert has_white_tags(custom_reader=reader, feed=feed) is False, "Feed should not have any whitelist tags"
|
||||
assert has_white_tags(reader=reader, feed=feed) is False, "Feed should not have any whitelist tags"
|
||||
|
||||
|
||||
def test_should_be_sent() -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue