mirror of
https://github.com/fhswf/aki_prj23_transparenzregister.git
synced 2025-05-13 13:08: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"],
|
source_url=article["link"],
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
break
|
|
||||||
return news
|
return news
|
||||||
|
|
||||||
def __get_news_details_text__(self, url: str) -> str:
|
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