fix async
This commit is contained in:
parent
540364926d
commit
7ac91a3c4d
8 changed files with 155 additions and 21 deletions
|
|
@ -129,3 +129,71 @@ def test_scrape_contests_network_error(mocker):
|
|||
result = scrape_contests()
|
||||
|
||||
assert result == []
|
||||
|
||||
|
||||
def test_scrape_contests_filters_ahc(mocker):
|
||||
def mock_get_side_effect(url, **kwargs):
|
||||
if url == "https://atcoder.jp/contests/archive":
|
||||
mock_response = Mock()
|
||||
mock_response.raise_for_status.return_value = None
|
||||
mock_response.text = """
|
||||
<html>
|
||||
<ul class="pagination">
|
||||
<li>1</li>
|
||||
</ul>
|
||||
</html>
|
||||
"""
|
||||
return mock_response
|
||||
elif "page=1" in url:
|
||||
mock_response = Mock()
|
||||
mock_response.raise_for_status.return_value = None
|
||||
mock_response.text = """
|
||||
<table class="table">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>2025-01-15 21:00:00+0900</td>
|
||||
<td><a href="/contests/abc350">AtCoder Beginner Contest 350</a></td>
|
||||
<td>01:40</td>
|
||||
<td> - 1999</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2025-01-14 21:00:00+0900</td>
|
||||
<td><a href="/contests/ahc044">AtCoder Heuristic Contest 044</a></td>
|
||||
<td>05:00</td>
|
||||
<td>-</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>2025-01-13 21:00:00+0900</td>
|
||||
<td><a href="/contests/arc170">AtCoder Regular Contest 170</a></td>
|
||||
<td>02:00</td>
|
||||
<td>1000 - 2799</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
"""
|
||||
return mock_response
|
||||
else:
|
||||
mock_response = Mock()
|
||||
mock_response.raise_for_status.return_value = None
|
||||
mock_response.text = "<html></html>"
|
||||
return mock_response
|
||||
|
||||
mocker.patch("scrapers.atcoder.requests.get", side_effect=mock_get_side_effect)
|
||||
|
||||
result = scrape_contests()
|
||||
|
||||
assert len(result) == 2
|
||||
assert result[0] == ContestSummary(
|
||||
id="abc350",
|
||||
name="AtCoder Beginner Contest 350",
|
||||
display_name="AtCoder Beginner Contest 350",
|
||||
)
|
||||
assert result[1] == ContestSummary(
|
||||
id="arc170",
|
||||
name="AtCoder Regular Contest 170",
|
||||
display_name="AtCoder Regular Contest 170",
|
||||
)
|
||||
|
||||
# Ensure ahc044 is filtered out
|
||||
contest_ids = [contest.id for contest in result]
|
||||
assert "ahc044" not in contest_ids
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ from scrapers.base import BaseScraper
|
|||
from scrapers.models import ContestListResult, MetadataResult, TestsResult
|
||||
|
||||
SCRAPERS = [
|
||||
cls
|
||||
for name, cls in inspect.getmembers(scrapers, inspect.isclass)
|
||||
if issubclass(cls, BaseScraper) and cls != BaseScraper
|
||||
scrapers.AtCoderScraper,
|
||||
scrapers.CodeforcesScraper,
|
||||
scrapers.CSESScraper,
|
||||
]
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue