class TestNewTalksRss(unittest.TestCase): def setUp(self): self.logged = [] self.talks = NewTalksRss(self.logged.append) def tearDown(self): self.assertFalse(self.logged) def test_get_talk_details_minimal(self): details = self.talks.get_talk_details(fromstring(minimal_item)) expected_details = { 'author': 'Dovahkiin', 'date': '04.02.2012', 'link': 'invalid://nowhere/nothing.html', 'mediatype': 'video', 'thumb': 'invalid://nowhere/nothing.jpg', 'title': 'fus ro dah', 'plot': 'Unrelenting Force', 'duration': 3723.0 } self.assertEqual(expected_details, details) def test_get_talk_details_broken_date(self): """ It just seems likely this will break sooner or later, check that we handle gracefully. """ document = fromstring(minimal_item) document.find( './pubDate' ).text = "Sat, 04 02 2012 08:14:00" # Same date, different formatting details = self.talks.get_talk_details(document) date_now = datetime.strftime(datetime.now(), '%d.%m.%Y') self.assertEqual(date_now, details['date']) self.assertEqual(1, len(self.logged)) self.assertTrue( "Could not parse date 'Sat, 04 02 2012 08'" in self.logged.pop()) def test_smoke(self): talks = list(self.talks.get_new_talks()) self.assertTrue( len(talks) > 10) # If there are less then this than worry? talk = talks[0] # Sanity check on most recent talk self.assertEqual(8, len(talk)) self.assertIsNotNone(talk['author']) self.assertIsNotNone(talk['date']) self.assertIsNotNone(talk['link']) self.assertIsNotNone(talk['thumb']) self.assertIsNotNone(talk['title']) self.assertIsNotNone(talk['mediatype']) self.assertIsNotNone(talk['plot']) self.assertIsNotNone(talk['duration'])
class TestNewTalksRss(unittest.TestCase): def setUp(self): self.talks = NewTalksRss(lambda x: x) def test_get_talk_details_minimal(self): details = self.talks.get_talk_details(fromstring(minimal_item)) expected_details = { 'author':'Dovahkiin', 'date':'04.02.2012', 'link':'invalid://nowhere/nothing.mp4', 'thumb':'invalid://nowhere/nothing.jpg', 'title':'fus ro dah', 'plot':'Unrelenting Force', 'duration':'00:30', 'id':'830' } self.assertEqual(expected_details, details) def test_get_talk_details_broken_date(self): """ It just seems likely this will break sooner or later, check that we handle gracefully. """ document = fromstring(minimal_item) document.find('./pubDate').text = "Sat, 04 02 2012 08:14:00" # Same date, different formatting details = self.talks.get_talk_details(document) date_now = datetime.strftime(datetime.now(), "%d.%m.%Y") self.assertEqual(date_now, details['date']) def test_smoke(self): talks = list(self.talks.get_new_talks()) self.assertTrue(len(talks) > 10) # If there are less then this than worry? talk = talks[0] # Sanity check on most recent talk self.assertTrue(len(talk) == 8) self.assertIsNotNone(talk['author']) self.assertIsNotNone(talk['date']) self.assertIsNotNone(talk['link']) self.assertIsNotNone(talk['thumb']) self.assertIsNotNone(talk['title']) self.assertIsNotNone(talk['plot']) self.assertIsNotNone(talk['duration']) self.assertIsNotNone(talk['id'])
def test_get_subtitles_for_newest_talk(self): ''' Newest talk often won't have subtitles when first made available. When this is the case we must return None and not throw. ''' from rss_scraper import NewTalksRss newest_talk = sorted( NewTalksRss(None).get_new_talks(), key=lambda t: time.strptime(t['date'], "%d.%m.%Y"), reverse=True)[0] talk_json = self.__get_talk_json__(newest_talk['link']) subs = subtitles_scraper.get_subtitles_for_talk( talk_json, ['en'], lambda m1, m2: sys.stdout.write('%s\n%s' % (m1, m2))) if subs: print "Newest Talk (%s) has subtitles: test ineffective" % ( newest_talk['title'])
def setUp(self): self.talks = NewTalksRss(lambda x: x)
def setUp(self): self.talks = NewTalksRss(lambda x: sys.stdout.write(x))
def setUp(self): self.logger = MagicMock() self.talks = NewTalksRss(self.logger)
def setUp(self): self.logged = [] self.talks = NewTalksRss(self.logged.append)