From 6c4f19b365668349e13ca94c37d602eb8402328a Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Tue, 17 May 2011 21:21:13 -0700 Subject: [PATCH] Added GetSeasonFiles to MediaFileProvider --- NzbDrone.Core.Test/MediaFileProviderTests.cs | 30 +++++++++++++++++-- .../Providers/Jobs/NewSeriesUpdate.cs | 9 ++++-- NzbDrone.Core/Providers/MediaFileProvider.cs | 11 ++++++- NzbDrone.Core/Repository/Season.cs | 4 +-- 4 files changed, 46 insertions(+), 8 deletions(-) diff --git a/NzbDrone.Core.Test/MediaFileProviderTests.cs b/NzbDrone.Core.Test/MediaFileProviderTests.cs index 9e0e2b453..dbb363255 100644 --- a/NzbDrone.Core.Test/MediaFileProviderTests.cs +++ b/NzbDrone.Core.Test/MediaFileProviderTests.cs @@ -300,12 +300,38 @@ namespace NzbDrone.Core.Test .Setup(c => c.GetAllSeries()) .Returns(Builder.CreateListOfSize(2) .WhereTheFirst(1).Has(c => c.LastInfoSync = DateTime.Now).Build().AsQueryable()); - mocker.GetMock( MockBehavior.Strict) - .Setup(c=>c.Scan(It.Is(s=>s.LastInfoSync != null))).Returns(new List()).Verifiable(); + mocker.GetMock(MockBehavior.Strict) + .Setup(c => c.Scan(It.Is(s => s.LastInfoSync != null))).Returns(new List()).Verifiable(); mocker.Resolve().Start(new ProgressNotification("test"), 0); mocker.VerifyAllMocks(); } + + [Test] + public void get_season_files() + { + var episodes = Builder.CreateListOfSize(20) + .WhereTheFirst(8) + .Has(c => c.EpisodeFile = new EpisodeFile()) + .AndTheRemaining() + .Has(c => c.EpisodeFile = null) + .Build().ToList(); + + var mocker = new AutoMoqer(); + mocker.GetMock() + .Setup(c => c.GetSeason(12)) + .Returns(Builder.CreateNew().With(c => c.Episodes = episodes).Build()) + .Verifiable(); + + + var result = mocker.Resolve().GetSeasonFiles(12); + + Assert.Count(8, result); + Assert.DoesNotContain(result, null); + mocker.VerifyAllMocks(); + + + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/Jobs/NewSeriesUpdate.cs b/NzbDrone.Core/Providers/Jobs/NewSeriesUpdate.cs index 70190f52e..ae78b62db 100644 --- a/NzbDrone.Core/Providers/Jobs/NewSeriesUpdate.cs +++ b/NzbDrone.Core/Providers/Jobs/NewSeriesUpdate.cs @@ -11,14 +11,16 @@ namespace NzbDrone.Core.Providers.Jobs private readonly SeriesProvider _seriesProvider; private readonly EpisodeProvider _episodeProvider; private readonly MediaFileProvider _mediaFileProvider; + private readonly SeasonProvider _seasonProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); - public NewSeriesUpdate(SeriesProvider seriesProvider, EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider) + public NewSeriesUpdate(SeriesProvider seriesProvider, EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider, SeasonProvider seasonProvider) { _seriesProvider = seriesProvider; _episodeProvider = episodeProvider; _mediaFileProvider = mediaFileProvider; + _seasonProvider = seasonProvider; } public string Name @@ -48,11 +50,12 @@ namespace NzbDrone.Core.Providers.Jobs { try { - notification.CurrentMessage = String.Format("Searching for '{0}'", new DirectoryInfo(currentSeries.Path).Name); + notification.CurrentMessage = String.Format("Searching for '{0}'", + new DirectoryInfo(currentSeries.Path).Name); var updatedSeries = _seriesProvider.UpdateSeriesInfo(currentSeries.SeriesId); notification.CurrentMessage = String.Format("Downloading episode info for '{0}'", - updatedSeries.Title); + updatedSeries.Title); _episodeProvider.RefreshEpisodeInfo(updatedSeries.SeriesId); notification.CurrentMessage = String.Format("Scanning disk for '{0}' files", updatedSeries.Title); diff --git a/NzbDrone.Core/Providers/MediaFileProvider.cs b/NzbDrone.Core/Providers/MediaFileProvider.cs index 75d9fbc28..32956d4e4 100644 --- a/NzbDrone.Core/Providers/MediaFileProvider.cs +++ b/NzbDrone.Core/Providers/MediaFileProvider.cs @@ -16,15 +16,17 @@ namespace NzbDrone.Core.Providers private readonly DiskProvider _diskProvider; private readonly EpisodeProvider _episodeProvider; private readonly SeriesProvider _seriesProvider; + private readonly SeasonProvider _seasonProvider; private readonly IRepository _repository; public MediaFileProvider(IRepository repository, DiskProvider diskProvider, - EpisodeProvider episodeProvider, SeriesProvider seriesProvider) + EpisodeProvider episodeProvider, SeriesProvider seriesProvider, SeasonProvider seasonProvider) { _repository = repository; _diskProvider = diskProvider; _episodeProvider = episodeProvider; _seriesProvider = seriesProvider; + _seasonProvider = seasonProvider; } public MediaFileProvider() { } @@ -180,6 +182,13 @@ namespace NzbDrone.Core.Providers return _repository.All().ToList(); } + public virtual List GetSeasonFiles(int seasonId) + { + var res = _seasonProvider.GetSeason(seasonId).Episodes.Where(c => c.EpisodeFile != null).Select(c => c.EpisodeFile); + + return res.ToList(); + } + private List GetMediaFileList(string path) { Logger.Debug("Scanning '{0}' for episodes", path); diff --git a/NzbDrone.Core/Repository/Season.cs b/NzbDrone.Core/Repository/Season.cs index f75dff0dd..35baf9bf8 100644 --- a/NzbDrone.Core/Repository/Season.cs +++ b/NzbDrone.Core/Repository/Season.cs @@ -18,9 +18,9 @@ namespace NzbDrone.Core.Repository public DayOfWeek? LastDiskSync { get; set; } [SubSonicToManyRelation] - public virtual List Episodes { get; protected set; } + public virtual List Episodes { get; set; } [SubSonicToOneRelation(ThisClassContainsJoinKey = true)] - public virtual Series Series { get; protected set; } + public virtual Series Series { get; set; } } } \ No newline at end of file