Ejemplo n.º 1
0
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'])
Ejemplo n.º 3
0
    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))
Ejemplo n.º 6
0
 def setUp(self):
     self.logger = MagicMock()
     self.talks = NewTalksRss(self.logger)
Ejemplo n.º 7
0
 def setUp(self):
     self.logged = []
     self.talks = NewTalksRss(self.logged.append)