from scrape_movies.constants import EMPIRE_FIXTURE_PATH from scrape_movies.infrastructure import empire_movies from scrape_movies.infrastructure.soup_basics import load_html SNAPSHOT_LAYOUT = """

4) The Shawshank Redemption

3) The Dark Knight

not a title

2) The Empire Strikes Back

""" def test_parse_titles_when_snapshot_layout_reads_h3_title_in_page_order() -> None: assert empire_movies.parse_titles(SNAPSHOT_LAYOUT) == [ "4) The Shawshank Redemption", "3) The Dark Knight", "2) The Empire Strikes Back", ] def test_parse_titles_when_live_layout_reads_ranked_h2_headings() -> None: titles = empire_movies.parse_titles(load_html(EMPIRE_FIXTURE_PATH)) assert len(titles) == 100 assert titles[0].startswith("100) ") assert titles[-1].startswith("1) ") def test_parse_titles_when_h2_has_no_rank_ignores_it() -> None: assert empire_movies.parse_titles("

Jump to

2) Two

") == ["2) Two"] def test_parse_titles_when_page_has_no_titles_returns_empty() -> None: assert empire_movies.parse_titles("

nothing

") == [] def test_first_title_markup_when_snapshot_layout_shows_h3() -> None: assert empire_movies.first_title_markup(SNAPSHOT_LAYOUT).startswith( '

' ) def test_first_title_markup_when_live_layout_shows_h2() -> None: markup = empire_movies.first_title_markup(load_html(EMPIRE_FIXTURE_PATH)) assert markup.startswith("

") def test_first_title_markup_when_nothing_found_returns_empty() -> None: assert empire_movies.first_title_markup("

x

") == ""