mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-05-13 06:58:46 +02:00
test: Add unit test for news api wrapper
This commit is contained in:
parent
ae41cf61bc
commit
ac6ca3547b
@ -47,7 +47,6 @@ class HandelsblattRSS(BaseNewsExtractor):
|
||||
source_url=article["link"],
|
||||
)
|
||||
)
|
||||
break
|
||||
return news
|
||||
|
||||
def __get_news_details_text__(self, url: str) -> str:
|
||||
|
89
tests/utils/data_extraction/news/handelsblatt_test.py
Normal file
89
tests/utils/data_extraction/news/handelsblatt_test.py
Normal file
@ -0,0 +1,89 @@
|
||||
"""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."
|
76
tests/utils/data_extraction/news/tagesschau_test.py
Normal file
76
tests/utils/data_extraction/news/tagesschau_test.py
Normal file
@ -0,0 +1,76 @@
|
||||
"""Testing module for Tagesschau API."""
|
||||
from unittest.mock import Mock, patch
|
||||
|
||||
from aki_prj23_transparenzregister.models.news import News
|
||||
from aki_prj23_transparenzregister.utils.data_extraction.news.tagesschau import (
|
||||
TagesschauAPI,
|
||||
)
|
||||
|
||||
|
||||
def test_init() -> None:
|
||||
api = TagesschauAPI()
|
||||
assert api is not None
|
||||
assert api.base_url == "https://www.tagesschau.de/api2"
|
||||
|
||||
|
||||
@patch(
|
||||
"aki_prj23_transparenzregister.utils.data_extraction.news.tagesschau.requests.get"
|
||||
)
|
||||
def test_get_news_for_category_error(mock_requests_get: Mock) -> None:
|
||||
mock_requests_get.return_value = Mock(ok=False)
|
||||
api = TagesschauAPI()
|
||||
assert api.get_news_for_category() is None
|
||||
|
||||
|
||||
@patch(
|
||||
"aki_prj23_transparenzregister.utils.data_extraction.news.tagesschau.requests.get"
|
||||
)
|
||||
@patch(
|
||||
"aki_prj23_transparenzregister.utils.data_extraction.news.tagesschau.TagesschauAPI.__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 = {
|
||||
"news": [
|
||||
{
|
||||
"externalId": "test",
|
||||
"title": "Test",
|
||||
"date": "2021-07-05",
|
||||
"detailsweb": "https://www.tagesschau.de/test",
|
||||
}
|
||||
]
|
||||
}
|
||||
mock_requests_get.return_value = Mock(ok=True, json=lambda: mock_response)
|
||||
|
||||
api = TagesschauAPI()
|
||||
assert api.get_news_for_category() == [
|
||||
News(
|
||||
id="test",
|
||||
title="Test",
|
||||
date="2021-07-05",
|
||||
source_url="https://www.tagesschau.de/test",
|
||||
text="Es war einmal vor langer Zeit, in einer weit, weit entfernten Galaxis...",
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
@patch(
|
||||
"aki_prj23_transparenzregister.utils.data_extraction.news.tagesschau.requests.get"
|
||||
)
|
||||
def test_get_news_details_text(mock_requests_get: Mock) -> None:
|
||||
mock_response = """
|
||||
<html>
|
||||
<body>
|
||||
<p>Title to be ignored</p>
|
||||
<p>Hallo Welt.</p>
|
||||
<p>Dies ist ein Text.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
"""
|
||||
mock_requests_get.return_value = Mock(ok=True, text=mock_response)
|
||||
|
||||
api = TagesschauAPI()
|
||||
assert api.__get_news_details_text__("test") == "Hallo Welt. Dies ist ein Text."
|
Loading…
x
Reference in New Issue
Block a user