예제 #1
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))
예제 #2
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)
예제 #3
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])
예제 #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_getBackgrounds_When_program_is_not_movie_Then_returns_backgrounds(self):
     # Setup
     program = TVProgram({'title':'Seinfeld', 'category_type':'series'}, translator=Mock())
     provider = TvdbFanartProvider(self.platform, nextProvider=None)
     
     # Test
     urls = provider.getBackgrounds(program)
     
     # Verify
     [log.debug('Background = %s' % url) for url in urls]
     self.assertTrue(len(urls) > 0)
     for url in urls:
         self.assertEqual("http", url[0:4])
예제 #6
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])
예제 #7
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)
예제 #8
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])
예제 #9
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)
예제 #10
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)
예제 #11
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])
예제 #12
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)
예제 #13
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)
예제 #14
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()
예제 #15
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))
예제 #16
0
 def getProvider(self):
     return TvdbFanartProvider(self.platform)
예제 #17
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)
예제 #18
0
 def getProvider(self):
     return TvdbFanartProvider(self.platform, nextProvider=None)