mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-04-25 01:22:34 +02:00
90 lines
3.0 KiB
Python
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."
|