def test_default_options_for_full_game_clip_type(self): today_kst = datetime.datetime.now(KST_TZINFO).replace(hour=0, minute=0, second=0, microsecond=0) two_days_ago_kst = today_kst - datetime.timedelta(days=2) with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: with tempfile.NamedTemporaryFile( dir=tmp_dir_path) as full_game_feed_path_file: spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_CONDENSED_GAME, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path, full_game_feed_path=full_game_feed_path_file.name) self.assertEqual(NAVER_TV_CLIP_TYPE_CONDENSED_GAME, spider.clip_type) self.assertIsNone(spider.team_name) self.assertEqual(today_kst, spider.end_date) self.assertEqual(two_days_ago_kst, spider.start_date) self.assertIsNone(spider.min_clip_length) self.assertEqual(3600, spider.max_clip_length) self.assertEqual(1, spider.max_num_pages) self.assertEqual(output_dir_path, spider.output_dir_path) self.assertEqual(tmp_dir_path, spider.tmp_dir_path) self.assertEqual(full_game_feed_path_file.name, spider.full_game_feed_path) self.assertFalse(spider.do_dry_run)
def test_skips_move_on_dry_run(self): item = NaverTvClip( clip_id=13820293, clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, url='https://tv.naver.com/v/13820293', length=15813, channel_path='/wyvernsvod', home_team_name='SK Wyverns', away_team_name='NC Dinos', year=2020, month=5, day=16 ) with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-16', end_date='2020-05-16', do_dry_run=True, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path ) pipeline = ClipMovePipeline() with patch('shutil.move') as move_mock: result = pipeline.process_item(item, spider) self.assertEqual(item, result) move_mock.assert_not_called()
def test_skips_download_on_dry_run(self): item = NaverTvClip( clip_id=13820293, clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, url='https://tv.naver.com/v/13820293', length=15813, channel_path='/wyvernsvod', home_team_name='SK Wyverns', away_team_name='NC Dinos', year=2020, month=5, day=16 ) spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-16', end_date='2020-05-16', do_dry_run=True ) pipeline = ClipDownloadPipeline() with patch('youtube_dl.YoutubeDL') as youtube_dl_mock: result = pipeline.process_item(item, spider) self.assertEqual(item, result) youtube_dl_mock.assert_not_called()
def test_sets_team_name(self): with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: spider = NaverTvSpider(clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, team_name='KT Wiz', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) self.assertEqual('KT Wiz', spider.team_name)
def test_sets_max_num_pages(self): with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: spider = NaverTvSpider(clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, max_num_pages=1234, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) self.assertEqual(1234, spider.max_num_pages)
def test_sets_start_date(self): with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: spider = NaverTvSpider(clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020/05/16', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) self.assertEqual(datetime.datetime(2020, 5, 16, tzinfo=KST_TZINFO), spider.start_date)
def test_sets_do_dry_run(self): with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: first_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run=True, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) second_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run='true', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) third_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run=1, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) fourth_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run='1', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) fifth_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run=0, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) sixth_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run='0', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) seventh_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run=False, output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) eighth_spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, do_dry_run='false', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path) self.assertTrue(first_spider.do_dry_run) self.assertTrue(second_spider.do_dry_run) self.assertTrue(third_spider.do_dry_run) self.assertTrue(fourth_spider.do_dry_run) self.assertFalse(fifth_spider.do_dry_run) self.assertFalse(sixth_spider.do_dry_run) self.assertFalse(seventh_spider.do_dry_run) self.assertFalse(eighth_spider.do_dry_run)
def test_raises_drop_item_when_clip_type_does_not_match_target(self): item = NaverTvClip( clip_id=13875922, clip_type=NAVER_TV_CLIP_TYPE_CONDENSED_GAME, url='https://tv.naver.com/v/13875922', length=620, channel_path='/bearsvod', home_team_name='Doosan Bears', away_team_name='NC Dinos', year=2020, month=5, day=19 ) spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-19', end_date='2020-05-19', do_dry_run=True ) pipeline = ClipValidationPipeline() with self.assertRaisesRegex(scrapy.exceptions.DropItem, '^Clip type'): pipeline.process_item(item, spider)
def test_raises_drop_item_when_away_team_name_unknown(self): item = NaverTvClip( clip_id=13820293, clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, url='https://tv.naver.com/v/13820293', length=15813, channel_path='/wyvernsvod', home_team_name='SK Wyverns', away_team_name=KBO_LEAGUE_TEAM_NAME_UNKNOWN, year=2020, month=5, day=16 ) spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-16', end_date='2020-05-16', do_dry_run=True ) pipeline = ClipValidationPipeline() with self.assertRaisesRegex(scrapy.exceptions.DropItem, '^Away team name'): pipeline.process_item(item, spider)
def test_raises_drop_item_when_channel_path_is_invalid(self): item = NaverTvClip( clip_id=13820293, clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, url='https://tv.naver.com/v/13820293', length=15813, channel_path='/kbofanpage', home_team_name='SK Wyverns', away_team_name='NC Dinos', year=2020, month=5, day=16 ) spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-16', end_date='2020-05-16', do_dry_run=True ) pipeline = ClipValidationPipeline() with self.assertRaises(scrapy.exceptions.DropItem): pipeline.process_item(item, spider)
def test_returns_item_when_processed(self): item = NaverTvClip( clip_id=13820293, clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, url='https://tv.naver.com/v/13820293', length=15813, channel_path='/wyvernsvod', home_team_name='SK Wyverns', away_team_name='NC Dinos', year=2020, month=5, day=16 ) with tempfile.TemporaryDirectory() as output_dir_path: with tempfile.TemporaryDirectory() as tmp_dir_path: spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-16', end_date='2020-05-16', output_dir_path=output_dir_path, tmp_dir_path=tmp_dir_path ) pipeline = ClipDownloadPipeline() with patch('youtube_dl.YoutubeDL') as youtube_dl_mock: result = pipeline.process_item(item, spider) args, _ = youtube_dl_mock.call_args self.assertEqual(item, result) self.assertEqual( os.path.join( tmp_dir_path, 'KBO League - S2020E13820293 - 2020.05.16 - NC Dinos at SK Wyverns.mp4' ), args[0]['outtmpl'] )
def test_returns_item_when_processed(self): item = NaverTvClip( clip_id=13820293, clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, url='https://tv.naver.com/v/13820293', length=15813, channel_path='/wyvernsvod', home_team_name='SK Wyverns', away_team_name='NC Dinos', year=2020, month=5, day=16 ) spider = NaverTvSpider( clip_type=NAVER_TV_CLIP_TYPE_FULL_GAME, start_date='2020-05-16', end_date='2020-05-16', do_dry_run=True ) pipeline = ClipValidationPipeline() result = pipeline.process_item(item, spider) self.assertEqual(item, result)