Mediascan job doesn't scan series that aren't fully added to the db yet

This commit is contained in:
kay.one 2011-05-17 20:52:49 -07:00
parent c01595a9c4
commit 4ac4ba5067
3 changed files with 29 additions and 7 deletions

View File

@ -1,12 +1,17 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq.Expressions;
using System.Linq;
using AutoMoq;
using FizzWare.NBuilder;
using MbUnit.Framework;
using Moq;
using Moq.Linq;
using NzbDrone.Core.Model.Notification;
using NzbDrone.Core.Providers;
using NzbDrone.Core.Providers.Core;
using NzbDrone.Core.Providers.Jobs;
using NzbDrone.Core.Repository;
using NzbDrone.Core.Repository.Quality;
using SubSonic.Repository;
@ -285,5 +290,22 @@ namespace NzbDrone.Core.Test
mocker.VerifyAllMocks();
}
[Test]
public void scan_media_job_should_not_scan_new_series()
{
var mocker = new AutoMoqer();
mocker.GetMock<SeriesProvider>()
.Setup(c => c.GetAllSeries())
.Returns(Builder<Series>.CreateListOfSize(2)
.WhereTheFirst(1).Has(c => c.LastInfoSync = DateTime.Now).Build().AsQueryable());
mocker.GetMock<MediaFileProvider>( MockBehavior.Strict)
.Setup(c=>c.Scan(It.Is<Series>(s=>s.LastInfoSync != null))).Returns(new List<EpisodeFile>()).Verifiable();
mocker.Resolve<MediaFileScanJob>().Start(new ProgressNotification("test"), 0);
mocker.VerifyAllMocks();
}
}
}

View File

@ -40,7 +40,7 @@ namespace NzbDrone.Core.Providers.Jobs
seriesToScan = new List<Series>() { _seriesProvider.GetSeries(targetId) };
}
foreach (var series in seriesToScan)
foreach (var series in seriesToScan.Where(c => c.LastInfoSync != null))
{
notification.CurrentMessage = string.Format("Scanning disk for '{0}'", series.Title);
_mediaFileProvider.Scan(series);

View File

@ -33,7 +33,7 @@ namespace NzbDrone.Core.Providers
/// Scans the specified series folder for media files
/// </summary>
/// <param name = "series">The series to be scanned</param>
public List<EpisodeFile> Scan(Series series)
public virtual List<EpisodeFile> Scan(Series series)
{
var mediaFileList = GetMediaFileList(series.Path);
var fileList = new List<EpisodeFile>();
@ -51,7 +51,7 @@ namespace NzbDrone.Core.Providers
return fileList;
}
public EpisodeFile ImportFile(Series series, string filePath)
public virtual EpisodeFile ImportFile(Series series, string filePath)
{
Logger.Trace("Importing file to database [{0}]", filePath);
@ -150,7 +150,7 @@ namespace NzbDrone.Core.Providers
/// Removes files that no longer exist from the database
/// </summary>
/// <param name = "files">list of files to verify</param>
public void CleanUp(List<EpisodeFile> files)
public virtual void CleanUp(List<EpisodeFile> files)
{
//TODO: remove orphaned files. in files table but not linked to from episode table.
foreach (var episodeFile in files)
@ -165,17 +165,17 @@ namespace NzbDrone.Core.Providers
public void Update(EpisodeFile episodeFile)
public virtual void Update(EpisodeFile episodeFile)
{
_repository.Update(episodeFile);
}
public EpisodeFile GetEpisodeFile(int episodeFileId)
public virtual EpisodeFile GetEpisodeFile(int episodeFileId)
{
return _repository.Single<EpisodeFile>(episodeFileId);
}
public List<EpisodeFile> GetEpisodeFiles()
public virtual List<EpisodeFile> GetEpisodeFiles()
{
return _repository.All<EpisodeFile>().ToList();
}