Пример #1
0
    def test_getPosters_When_pounded_by_many_threads_looking_up_same_program_Then_doesnt_fail_miserably(
            self):

        programs = []
        for i in xrange(10):  #@UnusedVariable
            programs.append(
                TVProgram({
                    'title': 'Seinfeld',
                    'category_type': 'series'
                },
                          translator=Mock()))
        provider = TvdbFanartProvider(self.platform, nextProvider=None)

        @run_async
        def work(p):
            posters = provider.getPosters(p)
            if len(posters) == 0:
                self.fail = True
            for poster in posters:
                log.debug('%s - %s' % (p.title(), poster))

        self.fail = False
        threads = []
        for p in programs:
            threads.append(work(p))
        for t in threads:
            t.join()

        self.assertFalse(self.fail)
Пример #2
0
 def test_getPosters_When_program_is_movie_Then_returns_empty_list(self):
     program = TVProgram({
         'title': 'Departed',
         'category_type': 'movie'
     },
                         translator=Mock())
     provider = TvdbFanartProvider(self.platform, nextProvider=None)
     self.assertListEqual([], provider.getPosters(program))
Пример #3
0
 def test_getPosters_When_title_has_override_Then_returns_posters_for_override(
         self):
     # 'Conan' is mapped to 'Conan (2010)' as TVDB's official title
     program = TVProgram({
         'title': u'Conan',
         'category_type': u'series'
     },
                         translator=Mock())
     provider = TvdbFanartProvider(self.platform, nextProvider=None)
     urls = provider.getPosters(program)
     self.assertTrue(len(urls) > 0)
Пример #4
0
    def test_getPosters_When_program_is_not_movie_Then_returns_posters(self):
        # Setup
        program = TVProgram({
            'title': 'Seinfeld',
            'category_type': 'series'
        },
                            translator=Mock())
        provider = TvdbFanartProvider(self.platform, nextProvider=None)

        # Test
        posterUrls = provider.getPosters(program)

        # Verify
        log.debug('Poster URLs = %s' % posterUrls)
        for posterUrl in posterUrls:
            self.assertEqual("http", posterUrl[0:4])
Пример #5
0
    def test_getBanners_When_program_is_not_movie_Then_returns_banners(self):
        # Setup
        program = TVProgram({
            'title': 'Seinfeld',
            'category_type': 'series'
        },
                            translator=Mock())
        provider = TvdbFanartProvider(self.platform, nextProvider=None)

        # Test
        bannerUrls = provider.getBanners(program)

        # Verify
        [log.debug('Banner = %s' % banner) for banner in bannerUrls]
        self.assertTrue(len(bannerUrls) > 0)
        for bannerUrl in bannerUrls:
            self.assertEqual("http", bannerUrl[0:4])
Пример #6
0
    def test_getPosters_When_title_has_funny_chars_Then_dont_fail_miserably(
            self):
        # Setup
        program = TVProgram(
            {
                'title': u'Königreich der Himmel',
                'category_type': 'series'
            },
            translator=Mock())
        provider = TvdbFanartProvider(self.platform, nextProvider=None)

        # Test
        posters = provider.getPosters(program)

        # Verify
        log.debug('Posters = %s' % posters)
        for p in posters:
            self.assertEqual('http', p[0:4])
Пример #7
0
    def test_end_to_end_tvdb_flow(self):
        no_op = NoOpFanartProvider()
        tvdb = TvdbFanartProvider(self.platform)
        fileCache = FileCache(os.path.join(self.sandbox, 'http'),
                              HttpResolver())
        http = HttpCachingFanartProvider(fileCache, tvdb)
        superfast = SuperFastFanartProvider(self.platform,
                                            http,
                                            filename='tvdb')
        strike = OneStrikeAndYoureOutFanartProvider(self.platform,
                                                    superfast,
                                                    no_op,
                                                    filename='tvdb')

        fields = {
            'title': u'The Real World',
            'subtitle': u'',
            'starttime': socketDateTime(2008, 11, 4, 22, 45, 00),
            'endtime': socketDateTime(2008, 11, 4, 23, 50, 00),
            'airdate': u'2010-07-14'
        }
        #self.assertSeasonAndEpisode(RecordedProgram(data=pdata(fields), **self.deps), u'24', u'3')

        program = RecordedProgram(data=pdata(fields), **self.deps)
        season, episode = strike.getSeasonAndEpisode(program)

        log.info(season)
        log.info(episode)

        self.assertEqual(('24', '3'), (season, episode))

        method = 'getSeasonAndEpisode'

        # verify strikeout provider
        strikeKey = strike.createKey(method, program)
        self.assertFalse(strike.hasStruckOut(strikeKey))

        # verify superfast provider
        superfastKey = superfast.createEpisodeKey(method, program)
        self.assertEqual(superfast.pcache[superfastKey], ('24', '3'))

        strike.close()
Пример #8
0
    def test_getSeasonAndEpisode_When_show_not_found_Then_returns_none(self):
        # Setup
        fields = {
            'title': u'This Show Does Not Exist',
            'starttime': socketDateTime(2008, 11, 4, 22, 45, 00),
            'endtime': socketDateTime(2008, 11, 4, 23, 45, 00),
            'hasairdate': 1,
            'airdate': u'2010-08-03'
        }
        program = RecordedProgram(data=pdata(fields, P.version()),
                                  settings=Mock(),
                                  translator=Mock(),
                                  platform=Mock(),
                                  protocol=P,
                                  conn=Mock())
        provider = TvdbFanartProvider(self.platform, nextProvider=None)

        # When
        season, episode = provider.getSeasonAndEpisode(program)

        # Then
        self.assertIsNone(season)
        self.assertIsNone(episode)
Пример #9
0
    def test_getSeasonAndEpisode_Success(self):
        # Given
        fields = {
            'title': u'The Real World',
            'starttime': socketDateTime(2008, 11, 4, 22, 45, 00),
            'endtime': socketDateTime(2008, 11, 4, 23, 50, 00),
            'hasairdate': 1,
            'airdate': u'2010-07-14'
        }
        program = RecordedProgram(data=pdata(fields, P.version()),
                                  settings=Mock(),
                                  translator=Mock(),
                                  platform=Mock(),
                                  protocol=P,
                                  conn=Mock())
        provider = TvdbFanartProvider(self.platform, nextProvider=None)

        # When
        season, episode = provider.getSeasonAndEpisode(program)

        # Then
        self.assertEqual('24', season)
        self.assertEqual('3', episode)
Пример #10
0
 def getProvider(self):
     return TvdbFanartProvider(self.platform)
Пример #11
0
 def getProvider(self):
     return TvdbFanartProvider(self.platform, nextProvider=None)