def test_get_html_bad_schema(): """ Gracefully fail on bad schema """ url = 'https://bad.url' html = TVScraper._get_html(url=url) assert html is None
def test_create_season_url(): imdb_id = 'garbage' series_url = f'https://www.imdb.com/title/{imdb_id}' season_number = '666' url = TVScraper._create_season_url(series_url=series_url, season_number=season_number) assert url == f'{series_url}/episodes?season={season_number}'
def main(title_id): """Console script for imdb_tv_scraper. TITLE_ID is the IMDB title identifier like ttXXXXXXX""" data = TVScraper.scrape_imdb_id(imdb_id=title_id) json_data = json.dumps(data) click.echo(json_data) return 0
def test_scrape_series_success(path): with open(path) as f: html = f.read() data = TVScraper._scrape_series(html=html) assert data['title'] assert type(data['title']) is str assert data['seasons'] assert type(data['seasons']) is int
def test_scrape_season_success(path): with open(path) as f: html = f.read() season_data = TVScraper._scrape_season(html=html) for episode in season_data: assert episode['title'] assert type(episode['title']) is str assert episode['rating'] assert type(episode['rating']) is float
def test_scrape_imdb_id_success(): imdb_id = 'tt0412142' series_data = TVScraper.scrape_imdb_id(imdb_id=imdb_id) assert type(series_data) is dict assert series_data['title'] assert series_data['seasons'] for season in series_data['seasons']: assert season for episode in season: assert episode['title'] assert type(episode['title']) is str assert episode['rating'] assert type(episode['rating']) is float
def test_scrape_season_failure(): season_data = TVScraper._scrape_season(html=None) assert season_data == []
def test_create_series_url(): imdb_id = 'garbage' url = TVScraper._create_series_url(imdb_id=imdb_id) assert url == f'https://www.imdb.com/title/{imdb_id}'
def test_scrape_series_failure(): data = TVScraper._scrape_series(html=None) assert data is None
def test_get_html_success(): url = 'https://www.imdb.com/title/tt0412142' html = TVScraper._get_html(url=url) assert html
def test_scrape_imdb_id_bad_id(): imdb_id = '' series_data = TVScraper.scrape_imdb_id(imdb_id=imdb_id) assert series_data is None
def test_get_html_not_found(): url = 'https://www.imdb.com/title/123' html = TVScraper._get_html(url=url) assert html is None