2023-11-11 14:30:00 +01:00

90 lines
3.0 KiB
Python

"""Testing module for Handelsblatt RSS API."""
from unittest.mock import Mock, patch
from aki_prj23_transparenzregister.models.news import News
from aki_prj23_transparenzregister.utils.data_extraction.news.handelsblatt import (
HandelsblattRSS,
)
def test_init() -> None:
api = HandelsblattRSS()
assert api is not None
assert api.base_url == "https://www.handelsblatt.com/contentexport/feed"
@patch(
"aki_prj23_transparenzregister.utils.data_extraction.news.handelsblatt.requests.get"
)
def test_get_news_for_category_error(mock_requests_get: Mock) -> None:
mock_requests_get.return_value = Mock(ok=False)
api = HandelsblattRSS()
assert api.get_news_for_category() is None
@patch(
"aki_prj23_transparenzregister.utils.data_extraction.news.handelsblatt.requests.get"
)
@patch(
"aki_prj23_transparenzregister.utils.data_extraction.news.handelsblatt.HandelsblattRSS.__get_news_details_text__"
)
def test_get_news_for_category(mock_get_details: Mock, mock_requests_get: Mock) -> None:
mock_get_details.return_value = (
"Es war einmal vor langer Zeit, in einer weit, weit entfernten Galaxis..."
)
mock_response = """<rss version="2.0">
<channel>
<item>
<guid>test</guid>
<title>Test</title>
<pubDate>Fri, 10 Nov 2023 09:10:27 +0100</pubDate>
<link>https://www.handelsblatt.com/test</link>
</item>
<item>
<guid>test</guid>
<title>Test</title>
<pubDate>Fri, 10 Nov 2023 09:10:27 +0100</pubDate>
<link>https://www.handelsblatt.com/test</link>
</item>
</channel>
</rss>
"""
mock_requests_get.return_value = Mock(ok=True, text=mock_response)
api = HandelsblattRSS()
assert api.get_news_for_category() == [
News(
id="test",
title="Test",
date="2023-11-10T09:10:27+0100",
source_url="https://www.handelsblatt.com/test",
text="Es war einmal vor langer Zeit, in einer weit, weit entfernten Galaxis...",
),
News(
id="test",
title="Test",
date="2023-11-10T09:10:27+0100",
source_url="https://www.handelsblatt.com/test",
text="Es war einmal vor langer Zeit, in einer weit, weit entfernten Galaxis...",
),
]
@patch(
"aki_prj23_transparenzregister.utils.data_extraction.news.handelsblatt.webdriver.Chrome"
)
def test_get_news_details_text(mock_driver: Mock) -> None:
mock_response = """
<html>
<body>
<p>Hallo Welt.</p>
<p>Dies ist ein Text.</p>
</body>
</html>
"""
mock_driver.return_value = Mock(page_source=mock_response)
api = HandelsblattRSS()
assert api.__get_news_details_text__("test") == "Hallo Welt. Dies ist ein Text."