from scrape_movies.constants import HACKER_NEWS_FIXTURE_PATH from scrape_movies.domain.story import Story from scrape_movies.infrastructure import hacker_news from scrape_movies.infrastructure.soup_basics import load_html PAGE = """
| One |
| 12 points |
| A job ad |
| no score here |
nothing
") == [] def test_parse_stories_when_fixture_returns_thirty_stories() -> None: assert len(hacker_news.parse_stories(_fixture())) == 30 def test_get_titles_when_fixture_starts_with_first_headline() -> None: assert hacker_news.get_titles(_fixture())[0] == "Joan Feynman 1927-2020" def test_get_links_when_fixture_returns_one_address_per_story() -> None: links = hacker_news.get_links(_fixture()) assert len(links) == 30 assert links[0].startswith("https://www.aps.org/") def test_get_upvotes_when_fixture_returns_integers() -> None: upvotes = hacker_news.get_upvotes(_fixture()) assert upvotes[:2] == [38, 205] assert all(isinstance(points, int) for points in upvotes) def test_first_story_markup_when_page_has_story_shows_title_row() -> None: assert 'class="titleline"' in hacker_news.first_story_markup(PAGE) def test_first_story_markup_when_page_has_no_story_returns_empty() -> None: assert hacker_news.first_story_markup("x
") == ""