1
0
Fork 0
mirror of https://github.com/Radarr/Radarr synced 2024-12-24 08:52:38 +00:00

Removed Series.Episodes and Series.EpisodeFiles list.

This commit is contained in:
kay.one 2011-06-17 21:08:17 -07:00
parent aa836f6a88
commit 17d084cdf3
9 changed files with 58 additions and 147 deletions

View file

@ -22,7 +22,6 @@ public void series_specific_scan_should_scan_series()
{
var series = Builder<Series>.CreateNew()
.With(s => s.SeriesId = 12)
.With(s => s.Episodes = Builder<Episode>.CreateListOfSize(10).Build())
.Build();
var mocker = new AutoMoqer(MockBehavior.Strict);
@ -44,26 +43,6 @@ public void series_specific_scan_should_scan_series()
}
[Test]
public void series_with_no_episodes_should_skip_scan()
{
var series = Builder<Series>.CreateNew()
.With(s => s.SeriesId = 12)
.With(s => s.Episodes = new List<Episode>())
.Build();
var mocker = new AutoMoqer(MockBehavior.Strict);
mocker.GetMock<SeriesProvider>()
.Setup(p => p.GetSeries(series.SeriesId))
.Returns(series);
//Act
mocker.Resolve<DiskScanJob>().Start(new ProgressNotification("Test"), series.SeriesId);
//Assert
mocker.VerifyAllMocks();
}
[Test]
public void job_with_no_target_should_scan_all_series()
@ -71,7 +50,6 @@ public void job_with_no_target_should_scan_all_series()
var series = Builder<Series>.CreateListOfSize(2)
.WhereTheFirst(1).Has(s => s.SeriesId = 12)
.AndTheNext(1).Has(s => s.SeriesId = 15)
.WhereAll().Have(s => s.Episodes = Builder<Episode>.CreateListOfSize(10).Build())
.Build();
var mocker = new AutoMoqer(MockBehavior.Strict);
@ -100,7 +78,6 @@ public void failed_scan_should_not_terminated_job()
var series = Builder<Series>.CreateListOfSize(2)
.WhereTheFirst(1).Has(s => s.SeriesId = 12)
.AndTheNext(1).Has(s => s.SeriesId = 15)
.WhereAll().Have(s => s.Episodes = Builder<Episode>.CreateListOfSize(10).Build())
.Build();
var mocker = new AutoMoqer(MockBehavior.Strict);
@ -129,9 +106,7 @@ public void job_with_no_target_should_scan_series_with_episodes()
{
var series = Builder<Series>.CreateListOfSize(2)
.WhereTheFirst(1).Has(s => s.SeriesId = 12)
.And(s => s.Episodes = Builder<Episode>.CreateListOfSize(10).Build())
.AndTheNext(1).Has(s => s.SeriesId = 15)
.And(s => s.Episodes = new List<Episode>())
.Build();
var mocker = new AutoMoqer(MockBehavior.Strict);
@ -144,10 +119,16 @@ public void job_with_no_target_should_scan_series_with_episodes()
.Setup(s => s.Scan(series[0]))
.Returns(new List<EpisodeFile>());
mocker.GetMock<MediaFileProvider>()
.Setup(s => s.Scan(series[1]))
.Returns(new List<EpisodeFile>());
mocker.Resolve<DiskScanJob>().Start(new ProgressNotification("Test"), 0);
mocker.VerifyAllMocks();
mocker.GetMock<MediaFileProvider>().Verify(s => s.Scan(It.IsAny<Series>()), Times.Exactly(2));
}
}

View file

@ -21,12 +21,13 @@ public class ImportNewSeriesJobTest : TestBase
public void import_new_series_succesfull()
{
var series = Builder<Series>.CreateListOfSize(2)
.WhereAll().Have(s => s.Episodes = Builder<Episode>.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<Episode>.CreateListOfSize(10).Build();
var notification = new ProgressNotification("Test");
var mocker = new AutoMoqer(MockBehavior.Strict);
@ -63,6 +64,12 @@ public void import_new_series_succesfull()
.Setup(s => s.GetSeries(series[1].SeriesId)).Returns(series[1]);
mocker.GetMock<EpisodeProvider>()
.Setup(s => s.GetEpisodeBySeries(series[0].SeriesId)).Returns(episodes);
mocker.GetMock<EpisodeProvider>()
.Setup(s => s.GetEpisodeBySeries(series[1].SeriesId)).Returns(episodes);
mocker.GetMock<MediaFileProvider>()
.Setup(s => s.GetSeriesFiles(It.IsAny<int>())).Returns(new List<EpisodeFile>());
@ -81,12 +88,13 @@ public void import_new_series_succesfull()
public void failed_import_should_not_be_stuck_in_loop()
{
var series = Builder<Series>.CreateListOfSize(2)
.WhereAll().Have(s => s.Episodes = Builder<Episode>.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<Episode>.CreateListOfSize(10).Build();
var notification = new ProgressNotification("Test");
var mocker = new AutoMoqer(MockBehavior.Strict);
@ -117,6 +125,9 @@ public void failed_import_should_not_be_stuck_in_loop()
mocker.GetMock<MediaFileProvider>()
.Setup(s => s.GetSeriesFiles(It.IsAny<int>())).Returns(new List<EpisodeFile>());
mocker.GetMock<EpisodeProvider>()
.Setup(s => s.GetEpisodeBySeries(It.IsAny<long>())).Returns(episodes);
//Act
mocker.Resolve<ImportNewSeriesJob>().Start(notification, 0);

View file

@ -310,31 +310,17 @@ public void scan_series_should_update_last_scan_date()
mocker.GetMock<SeriesProvider>()
.Setup(c => c.UpdateSeries(It.Is<Series>(s => s.LastDiskSync != null))).Verifiable();
mocker.GetMock<EpisodeProvider>()
.Setup(c => c.GetEpisodeBySeries(It.IsAny<long>()))
.Returns(new List<Episode>{new Episode()});
mocker.Resolve<MediaFileProvider>().Scan(new Series());
mocker.VerifyAllMocks();
}
[Test]
public void scan_media_job_should_not_scan_new_series()
{
var mocker = new AutoMoqer();
var fakeSeries = Builder<Series>.CreateListOfSize(2)
.WhereTheFirst(1).Has(c => c.Episodes = new List<Episode>())
.AndTheNext(1).Has(c => c.Episodes = Builder<Episode>.CreateListOfSize(10).Build())
.Build();
mocker.GetMock<SeriesProvider>()
.Setup(c => c.GetAllSeries()).Returns(fakeSeries);
mocker.GetMock<MediaFileProvider>(MockBehavior.Strict)
.Setup(c => c.Scan(fakeSeries.ToList()[1])).Returns(new List<EpisodeFile>()).Verifiable();
mocker.Resolve<DiskScanJob>().Start(new ProgressNotification("test"), 0);
mocker.VerifyAllMocks();
}
[Test]
public void get_series_files()
{
@ -390,7 +376,7 @@ public void import_new_download_success()
diskProvider.Setup(d => d.GetExtension(It.IsAny<string>())).Returns(".avi");
var episodeProvider = mocker.GetMock<EpisodeProvider>();
episodeProvider.Setup(e => e.GetEpisodes(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> {fakeEpisode});
episodeProvider.Setup(e => e.GetEpisodes(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
episodeProvider.Setup(e => e.GetEpisode(fakeSeries.SeriesId, 1, 5)).Returns(fakeEpisode);
var configProvider = mocker.GetMock<ConfigProvider>();
@ -436,7 +422,7 @@ public void import_new_download_success_delete_equal_quality()
.With(e => e.SeriesId = fakeSeries.SeriesId)
.With(e => e.EpisodeFileId = 1)
.With(e => e.Quality = QualityTypes.SDTV)
.With(e => e.Episodes = new List<Episode>{ fakeEpisode })
.With(e => e.Episodes = new List<Episode> { fakeEpisode })
.Build();
fakeEpisode.EpisodeFile = fakeEpisodeFile;
@ -477,5 +463,26 @@ public void import_new_download_success_delete_equal_quality()
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<EpisodeProvider>()
.Setup(c => c.GetEpisodeBySeries(12))
.Returns(new List<Episode>());
var series = Builder<Series>.CreateNew()
.With(s => s.SeriesId = 12).Build();
//Act
mocker.Resolve<MediaFileProvider>().Scan(series);
//Assert
mocker.VerifyAllMocks();
}
}
}

View file

@ -203,7 +203,6 @@
<Compile Include="Providers\Jobs\RssSyncJob.cs" />
<Compile Include="Providers\Jobs\UpdateInfoJob.cs" />
<Compile Include="Providers\SceneMappingProvider.cs" />
<Compile Include="Providers\StatsProvider.cs" />
<Compile Include="Repository\ExternalNotificationSetting.cs" />
<Compile Include="Repository\JobSetting.cs" />
<Compile Include="Repository\IndexerSetting.cs" />

View file

@ -47,7 +47,7 @@ public virtual void Start(ProgressNotification notification, int targetId)
seriesToScan = new List<Series>() { _seriesProvider.GetSeries(targetId) };
}
foreach (var series in seriesToScan.Where(c => c.Episodes.Count != 0))
foreach (var series in seriesToScan)
{
try
{

View file

@ -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 @@ public class ImportNewSeriesJob : IJob
private List<int> _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 @@ private void ScanSeries(ProgressNotification notification)
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 @@ private void AutoIgnoreSeasons(Series updatedSeries)
}
}
/* 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);
}
}*/
}
}
}

View file

@ -43,6 +43,12 @@ public MediaFileProvider() { }
/// <param name = "series">The series to be scanned</param>
public virtual List<EpisodeFile> Scan(Series series)
{
if (_episodeProvider.GetEpisodeBySeries(series.SeriesId).Count == 0)
{
Logger.Debug("Series {0} has no episodes. skipping", series.Title);
return new List<EpisodeFile>();
}
var mediaFileList = GetMediaFileList(series.Path);
var fileList = new List<EpisodeFile>();

View file

@ -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;
}
}
}

View file

@ -57,11 +57,5 @@ public class Series
[Ignore]
public virtual QualityProfile QualityProfile { get; set; }
[Ignore]
public virtual IList<Episode> Episodes { get; set; }
[Ignore]
public virtual IList<EpisodeFile> EpisodeFiles { get; protected set; }
}
}