From 17d084cdf3c38bc191e7b39645a092907fbfc0e9 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Fri, 17 Jun 2011 21:08:17 -0700 Subject: [PATCH] Removed Series.Episodes and Series.EpisodeFiles list. --- NzbDrone.Core.Test/DiskScanJobTest.cs | 31 ++------ NzbDrone.Core.Test/ImportNewSeriesJobTest.cs | 15 +++- NzbDrone.Core.Test/MediaFileProviderTests.cs | 49 +++++++----- NzbDrone.Core/NzbDrone.Core.csproj | 1 - NzbDrone.Core/Providers/Jobs/DiskScanJob.cs | 2 +- .../Providers/Jobs/ImportNewSeriesJob.cs | 17 +--- NzbDrone.Core/Providers/MediaFileProvider.cs | 6 ++ NzbDrone.Core/Providers/StatsProvider.cs | 78 ------------------- NzbDrone.Core/Repository/Series.cs | 6 -- 9 files changed, 58 insertions(+), 147 deletions(-) delete mode 100644 NzbDrone.Core/Providers/StatsProvider.cs diff --git a/NzbDrone.Core.Test/DiskScanJobTest.cs b/NzbDrone.Core.Test/DiskScanJobTest.cs index bd1e82e44..f653e9624 100644 --- a/NzbDrone.Core.Test/DiskScanJobTest.cs +++ b/NzbDrone.Core.Test/DiskScanJobTest.cs @@ -22,7 +22,6 @@ namespace NzbDrone.Core.Test { var series = Builder.CreateNew() .With(s => s.SeriesId = 12) - .With(s => s.Episodes = Builder.CreateListOfSize(10).Build()) .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -44,26 +43,6 @@ namespace NzbDrone.Core.Test } - [Test] - public void series_with_no_episodes_should_skip_scan() - { - var series = Builder.CreateNew() - .With(s => s.SeriesId = 12) - .With(s => s.Episodes = new List()) - .Build(); - - var mocker = new AutoMoqer(MockBehavior.Strict); - - mocker.GetMock() - .Setup(p => p.GetSeries(series.SeriesId)) - .Returns(series); - - //Act - mocker.Resolve().Start(new ProgressNotification("Test"), series.SeriesId); - - //Assert - mocker.VerifyAllMocks(); - } [Test] public void job_with_no_target_should_scan_all_series() @@ -71,7 +50,6 @@ namespace NzbDrone.Core.Test var series = Builder.CreateListOfSize(2) .WhereTheFirst(1).Has(s => s.SeriesId = 12) .AndTheNext(1).Has(s => s.SeriesId = 15) - .WhereAll().Have(s => s.Episodes = Builder.CreateListOfSize(10).Build()) .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -100,7 +78,6 @@ namespace NzbDrone.Core.Test var series = Builder.CreateListOfSize(2) .WhereTheFirst(1).Has(s => s.SeriesId = 12) .AndTheNext(1).Has(s => s.SeriesId = 15) - .WhereAll().Have(s => s.Episodes = Builder.CreateListOfSize(10).Build()) .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -129,9 +106,7 @@ namespace NzbDrone.Core.Test { var series = Builder.CreateListOfSize(2) .WhereTheFirst(1).Has(s => s.SeriesId = 12) - .And(s => s.Episodes = Builder.CreateListOfSize(10).Build()) .AndTheNext(1).Has(s => s.SeriesId = 15) - .And(s => s.Episodes = new List()) .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -144,10 +119,16 @@ namespace NzbDrone.Core.Test .Setup(s => s.Scan(series[0])) .Returns(new List()); + mocker.GetMock() + .Setup(s => s.Scan(series[1])) + .Returns(new List()); + mocker.Resolve().Start(new ProgressNotification("Test"), 0); + mocker.VerifyAllMocks(); + mocker.GetMock().Verify(s => s.Scan(It.IsAny()), Times.Exactly(2)); } } diff --git a/NzbDrone.Core.Test/ImportNewSeriesJobTest.cs b/NzbDrone.Core.Test/ImportNewSeriesJobTest.cs index 30e96b40f..488a3a0c9 100644 --- a/NzbDrone.Core.Test/ImportNewSeriesJobTest.cs +++ b/NzbDrone.Core.Test/ImportNewSeriesJobTest.cs @@ -21,12 +21,13 @@ namespace NzbDrone.Core.Test public void import_new_series_succesfull() { var series = Builder.CreateListOfSize(2) - .WhereAll().Have(s => s.Episodes = Builder.CreateListOfSize(10).Build()) .WhereAll().Have(s => s.LastInfoSync = null) .WhereTheFirst(1).Has(s => s.SeriesId = 12) .AndTheNext(1).Has(s => s.SeriesId = 15) .Build(); + var episodes = Builder.CreateListOfSize(10).Build(); + var notification = new ProgressNotification("Test"); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -63,6 +64,12 @@ namespace NzbDrone.Core.Test .Setup(s => s.GetSeries(series[1].SeriesId)).Returns(series[1]); + mocker.GetMock() + .Setup(s => s.GetEpisodeBySeries(series[0].SeriesId)).Returns(episodes); + + mocker.GetMock() + .Setup(s => s.GetEpisodeBySeries(series[1].SeriesId)).Returns(episodes); + mocker.GetMock() .Setup(s => s.GetSeriesFiles(It.IsAny())).Returns(new List()); @@ -81,12 +88,13 @@ namespace NzbDrone.Core.Test public void failed_import_should_not_be_stuck_in_loop() { var series = Builder.CreateListOfSize(2) - .WhereAll().Have(s => s.Episodes = Builder.CreateListOfSize(10).Build()) .WhereAll().Have(s => s.LastInfoSync = null) .WhereTheFirst(1).Has(s => s.SeriesId = 12) .AndTheNext(1).Has(s => s.SeriesId = 15) .Build(); + var episodes = Builder.CreateListOfSize(10).Build(); + var notification = new ProgressNotification("Test"); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -117,6 +125,9 @@ namespace NzbDrone.Core.Test mocker.GetMock() .Setup(s => s.GetSeriesFiles(It.IsAny())).Returns(new List()); + mocker.GetMock() + .Setup(s => s.GetEpisodeBySeries(It.IsAny())).Returns(episodes); + //Act mocker.Resolve().Start(notification, 0); diff --git a/NzbDrone.Core.Test/MediaFileProviderTests.cs b/NzbDrone.Core.Test/MediaFileProviderTests.cs index 97af1d265..e784982ca 100644 --- a/NzbDrone.Core.Test/MediaFileProviderTests.cs +++ b/NzbDrone.Core.Test/MediaFileProviderTests.cs @@ -310,31 +310,17 @@ namespace NzbDrone.Core.Test mocker.GetMock() .Setup(c => c.UpdateSeries(It.Is(s => s.LastDiskSync != null))).Verifiable(); + mocker.GetMock() + .Setup(c => c.GetEpisodeBySeries(It.IsAny())) + .Returns(new List{new Episode()}); + mocker.Resolve().Scan(new Series()); mocker.VerifyAllMocks(); } - [Test] - public void scan_media_job_should_not_scan_new_series() - { - var mocker = new AutoMoqer(); - var fakeSeries = Builder.CreateListOfSize(2) - .WhereTheFirst(1).Has(c => c.Episodes = new List()) - .AndTheNext(1).Has(c => c.Episodes = Builder.CreateListOfSize(10).Build()) - .Build(); - mocker.GetMock() - .Setup(c => c.GetAllSeries()).Returns(fakeSeries); - - mocker.GetMock(MockBehavior.Strict) - .Setup(c => c.Scan(fakeSeries.ToList()[1])).Returns(new List()).Verifiable(); - - mocker.Resolve().Start(new ProgressNotification("test"), 0); - - mocker.VerifyAllMocks(); - } - + [Test] public void get_series_files() { @@ -390,7 +376,7 @@ namespace NzbDrone.Core.Test diskProvider.Setup(d => d.GetExtension(It.IsAny())).Returns(".avi"); var episodeProvider = mocker.GetMock(); - episodeProvider.Setup(e => e.GetEpisodes(It.IsAny())).Returns(new List {fakeEpisode}); + episodeProvider.Setup(e => e.GetEpisodes(It.IsAny())).Returns(new List { fakeEpisode }); episodeProvider.Setup(e => e.GetEpisode(fakeSeries.SeriesId, 1, 5)).Returns(fakeEpisode); var configProvider = mocker.GetMock(); @@ -436,7 +422,7 @@ namespace NzbDrone.Core.Test .With(e => e.SeriesId = fakeSeries.SeriesId) .With(e => e.EpisodeFileId = 1) .With(e => e.Quality = QualityTypes.SDTV) - .With(e => e.Episodes = new List{ fakeEpisode }) + .With(e => e.Episodes = new List { fakeEpisode }) .Build(); fakeEpisode.EpisodeFile = fakeEpisodeFile; @@ -477,5 +463,26 @@ namespace NzbDrone.Core.Test mocker.VerifyAllMocks(); Assert.AreEqual(1, result.Count); } + + + [Test] + public void Scan_series_should_skip_series_with_no_episodes() + { + var mocker = new AutoMoqer(MockBehavior.Strict); + mocker.GetMock() + .Setup(c => c.GetEpisodeBySeries(12)) + .Returns(new List()); + + var series = Builder.CreateNew() + .With(s => s.SeriesId = 12).Build(); + + //Act + mocker.Resolve().Scan(series); + + //Assert + mocker.VerifyAllMocks(); + + } + } } \ No newline at end of file diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 34f5c2b9c..0dfca7e39 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -203,7 +203,6 @@ - diff --git a/NzbDrone.Core/Providers/Jobs/DiskScanJob.cs b/NzbDrone.Core/Providers/Jobs/DiskScanJob.cs index 2e82491a5..58bdcf0c2 100644 --- a/NzbDrone.Core/Providers/Jobs/DiskScanJob.cs +++ b/NzbDrone.Core/Providers/Jobs/DiskScanJob.cs @@ -47,7 +47,7 @@ namespace NzbDrone.Core.Providers.Jobs seriesToScan = new List() { _seriesProvider.GetSeries(targetId) }; } - foreach (var series in seriesToScan.Where(c => c.Episodes.Count != 0)) + foreach (var series in seriesToScan) { try { diff --git a/NzbDrone.Core/Providers/Jobs/ImportNewSeriesJob.cs b/NzbDrone.Core/Providers/Jobs/ImportNewSeriesJob.cs index 6e90fcdbf..8374f3a62 100644 --- a/NzbDrone.Core/Providers/Jobs/ImportNewSeriesJob.cs +++ b/NzbDrone.Core/Providers/Jobs/ImportNewSeriesJob.cs @@ -16,6 +16,7 @@ namespace NzbDrone.Core.Providers.Jobs public class ImportNewSeriesJob : IJob { private readonly SeriesProvider _seriesProvider; + private readonly EpisodeProvider _episodeProvider; private readonly MediaFileProvider _mediaFileProvider; private readonly UpdateInfoJob _updateInfoJob; private readonly DiskScanJob _diskScanJob; @@ -25,10 +26,11 @@ namespace NzbDrone.Core.Providers.Jobs private List _attemptedSeries; [Inject] - public ImportNewSeriesJob(SeriesProvider seriesProvider, + public ImportNewSeriesJob(SeriesProvider seriesProvider, EpisodeProvider episodeProvider, MediaFileProvider mediaFileProvider, UpdateInfoJob updateInfoJob, DiskScanJob diskScanJob) { _seriesProvider = seriesProvider; + _episodeProvider = episodeProvider; _mediaFileProvider = mediaFileProvider; _updateInfoJob = updateInfoJob; _diskScanJob = diskScanJob; @@ -85,7 +87,7 @@ namespace NzbDrone.Core.Providers.Jobs private void AutoIgnoreSeasons(Series updatedSeries) { var episodeFiles = _mediaFileProvider.GetSeriesFiles(updatedSeries.SeriesId); - var episodes = updatedSeries.Episodes; + var episodes = _episodeProvider.GetEpisodeBySeries(updatedSeries.SeriesId); if (episodeFiles.Count() != 0) { var seasons = episodes.Select(c => c.SeasonNumber).Distinct(); @@ -98,17 +100,6 @@ namespace NzbDrone.Core.Providers.Jobs } } - - /* Logger.Debug("Looking for seasons to ignore"); - foreach (var season in updatedSeries.Seasons) - { - if (season.SeasonNumber != updatedSeries.Seasons.Max(s => s.SeasonNumber) && _mediaFileProvider.GetSeasonFiles(season.SeasonId).Count() == 0) - { - Logger.Info("Season {0} of {1} doesn't have any files on disk. season will not be monitored.", season.SeasonNumber, updatedSeries.Title); - season.Monitored = false; - _seasonProvider.SaveSeason(season); - } - }*/ } } } diff --git a/NzbDrone.Core/Providers/MediaFileProvider.cs b/NzbDrone.Core/Providers/MediaFileProvider.cs index b5b041fdf..8b2c39aad 100644 --- a/NzbDrone.Core/Providers/MediaFileProvider.cs +++ b/NzbDrone.Core/Providers/MediaFileProvider.cs @@ -43,6 +43,12 @@ namespace NzbDrone.Core.Providers /// The series to be scanned public virtual List Scan(Series series) { + if (_episodeProvider.GetEpisodeBySeries(series.SeriesId).Count == 0) + { + Logger.Debug("Series {0} has no episodes. skipping", series.Title); + return new List(); + } + var mediaFileList = GetMediaFileList(series.Path); var fileList = new List(); diff --git a/NzbDrone.Core/Providers/StatsProvider.cs b/NzbDrone.Core/Providers/StatsProvider.cs deleted file mode 100644 index e93367aae..000000000 --- a/NzbDrone.Core/Providers/StatsProvider.cs +++ /dev/null @@ -1,78 +0,0 @@ -using System; -using System.Linq; -using Ninject; - -namespace NzbDrone.Core.Providers -{ - public class StatsProvider - { - private readonly SeriesProvider _seriesProvider; - - [Inject] - public StatsProvider(SeriesProvider seriesProvider) - { - _seriesProvider = seriesProvider; - } - - public virtual int SeriesCount() - { - return _seriesProvider.GetAllSeries().Count(); - } - - public virtual int ActiveSeriesCount() - { - return _seriesProvider.GetAllSeries().Where(s => s.Status == "Continuing").Count(); - } - - public virtual int EndedSeriesCount() - { - return _seriesProvider.GetAllSeries().Where(s => s.Status == "Ended").Count(); - } - - public virtual int TotalEpisodesCount() - { - var count = 0; - var series = _seriesProvider.GetAllSeries(); - foreach (var s in series) - { - count += s.Episodes.Count; - } - return count; - } - - public virtual int TotalAiredEpisodesCount() - { - var count = 0; - var series = _seriesProvider.GetAllSeries(); - foreach (var s in series) - { - count += s.Episodes.Where(e => e.AirDate.Date <= DateTime.Today).Count(); - } - return count; - } - - public virtual int TotalUnairedEpisodesCount() - { - var count = 0; - var series = _seriesProvider.GetAllSeries(); - foreach (var s in series) - { - count += s.Episodes.Where(e => e.AirDate.Date > DateTime.Today).Count(); - } - return count; - } - - public virtual int TotalEpisodesOnDisk() - { - var count = 0; - var series = _seriesProvider.GetAllSeries(); - foreach (var s in series) - { - count += s.Episodes.Where(e => e.EpisodeFileId != 0).Count(); - } - return count; - } - - - } -} diff --git a/NzbDrone.Core/Repository/Series.cs b/NzbDrone.Core/Repository/Series.cs index 55ade2a84..1f13ba34d 100644 --- a/NzbDrone.Core/Repository/Series.cs +++ b/NzbDrone.Core/Repository/Series.cs @@ -57,11 +57,5 @@ namespace NzbDrone.Core.Repository [Ignore] public virtual QualityProfile QualityProfile { get; set; } - - [Ignore] - public virtual IList Episodes { get; set; } - - [Ignore] - public virtual IList EpisodeFiles { get; protected set; } } } \ No newline at end of file