public void ApplyEnhancements_DuplicateEnhancementRequestsMade_OnlyUniqueResultsAddedToIdentity( string filePath, TvReleaseIdentity identity, TvDbEnhancement tvDbEnhancement, SubDbFileHashEnhancement subDbFileHashEnhancement, IEpisodeSubtitleDownloader downloader, IEnhancementProvider enhancementProvider ) { var expectedEnhancements = new IEnhancement[] {tvDbEnhancement, subDbFileHashEnhancement}; var downloaders = new[] {downloader}; var enhancementRequests = new IEnhancementRequest[] { new EnhancementRequest<TvDbEnhancement>(), new EnhancementRequest<TvDbEnhancement>(), new EnhancementRequest<SubDbFileHashEnhancement>() }; A.CallTo(() => downloader.EnhancementRequests).Returns(enhancementRequests); A.CallTo( () => enhancementProvider.GetEnhancement(A<Type>.That.IsEqualTo(typeof (TvDbEnhancement)), filePath, identity)) .Returns(tvDbEnhancement); A.CallTo( () => enhancementProvider.GetEnhancement(A<Type>.That.IsEqualTo(typeof (SubDbFileHashEnhancement)), filePath, identity)) .Returns(subDbFileHashEnhancement); var sut = new EnhancementApplicator(downloaders, enhancementProvider); sut.ApplyEnhancements(filePath, identity); Assert.That(identity.Enhancements, Is.EquivalentTo(expectedEnhancements)); }
public void ApplyEnhancements_EnhancementRequestsMade_ResultsAddedToIdentity( string filePath, TvReleaseIdentity identity, IEnumerable<IEnhancementRequest> enhancementRequests, IEnhancement[] enhancements, IEpisodeSubtitleDownloader downloader, IEnhancementProvider enhancementProvider ) { var downloaders = new[] {downloader}; A.CallTo(() => downloader.EnhancementRequests).Returns(enhancementRequests); A.CallTo(() => enhancementProvider.GetEnhancement(A<Type>._, filePath, identity)) .ReturnsNextFromSequence(enhancements); var sut = new EnhancementApplicator(downloaders, enhancementProvider); sut.ApplyEnhancements(filePath, identity); Assert.That(identity.Enhancements, Is.EquivalentTo(enhancements)); }
public void DownloadSubtitle_MatchingSubtitlesDownloaderFails_ShouldReturnFalse( string file, Language[] languages, TvReleaseIdentity identity, Subtitle[] matches, Language language, ISubtitleRanker subtitleRanker, IEnhancementProvider enhancementProvider, [Frozen]IEpisodeSubtitleDownloader fakeDownloader) { A.CallTo(() => fakeDownloader.SearchSubtitle(A<TvReleaseIdentity>._, A<Language[]>._)).Returns(matches); A.CallTo(() => fakeDownloader.TryDownloadSubtitle(A<Subtitle>._, A<string>._)).Returns(false); A.CallTo(() => fakeDownloader.CanHandleAtLeastOneOf(A<Language[]>._)).Returns(true); var downloaders = new[] { fakeDownloader }; var service = new SubtitleDownloadService(downloaders, enhancementProvider, subtitleRanker); bool success = service.DownloadSubtitle(file, identity, languages); Assert.That(success, Is.False); }
public void DownloadSubtitle_MatchingSubtitlesDownloaderSucceeds_DownloaderShouldDownloadFirstLanguage( string file, Subtitle[] matches, TvReleaseIdentity identity, ISubtitleRanker subtitleRanker, IEpisodeSubtitleDownloader fakeDownloader, IEnhancementProvider enhancementProvider ) { var languages = matches.Skip(1).Select(m => m.Language); var expectedLanguage = languages.First(); A.CallTo(() => fakeDownloader.SearchSubtitle(A<TvReleaseIdentity>._, A<Language[]>._)).Returns(matches); A.CallTo(() => fakeDownloader.TryDownloadSubtitle(A<Subtitle>._, A<string>._)).Returns(true); A.CallTo(() => fakeDownloader.CanHandleAtLeastOneOf(A<Language[]>._)).Returns(true); var downloaders = new[] { fakeDownloader }; var service = new SubtitleDownloadService(downloaders, enhancementProvider, subtitleRanker); service.DownloadSubtitle(file, identity, languages); A.CallTo(() => fakeDownloader.TryDownloadSubtitle(A<Subtitle>.That.Matches(s => s.Language == expectedLanguage), A<string>._)) .MustHaveHappened(Repeated.Exactly.Once); }
public SubtitleDownloadService(IEnumerable<IEpisodeSubtitleDownloader> subtitleDownloaders, IEnhancementProvider enhancementProvider, ISubtitleRanker subtitleRanker) { _subtitleDownloaders = subtitleDownloaders; _enhancementProvider = enhancementProvider; _subtitleRanker = subtitleRanker; }
public EnhancementApplicator(IEnumerable<IEpisodeSubtitleDownloader> downloaders, IEnhancementProvider enhancementProvider) { _downloaders = downloaders; _enhancementProvider = enhancementProvider; }