Refactored MediaFileProvider

This commit is contained in:
kay.one
2011-06-19 20:04:08 -07:00
parent cfcb9e61d7
commit 63bd972af9
10 changed files with 158 additions and 1159 deletions
+9 -126
View File
@@ -60,7 +60,7 @@ namespace NzbDrone.Core.Test
.Setup(e => e.GetEpisode(fakeSeries.SeriesId, seasonNumber, episodeNumner)).Returns(fakeEpisode);
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
Assert.IsNotNull(result);
@@ -107,7 +107,7 @@ namespace NzbDrone.Core.Test
.Setup(e => e.GetSize(fileName)).Returns(size).Verifiable();
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
Assert.IsNotNull(result);
@@ -147,7 +147,7 @@ namespace NzbDrone.Core.Test
.Setup(r => r.Exists<EpisodeFile>(It.IsAny<string>(), It.IsAny<object>())).Returns(true).Verifiable();
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
mocker.VerifyAllMocks();
@@ -178,7 +178,7 @@ namespace NzbDrone.Core.Test
.Setup(e => e.GetSize(fileName)).Returns(size).Verifiable();
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
mocker.VerifyAllMocks();
@@ -218,7 +218,7 @@ namespace NzbDrone.Core.Test
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
Assert.IsNull(result);
@@ -238,7 +238,7 @@ namespace NzbDrone.Core.Test
mocker.GetMock<EpisodeProvider>(MockBehavior.Strict);
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
result.Should().BeNull();
@@ -275,7 +275,7 @@ namespace NzbDrone.Core.Test
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportFile(fakeSeries, fileName);
var result = mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, fileName);
//Assert
mocker.VerifyAllMocks();
@@ -296,7 +296,7 @@ namespace NzbDrone.Core.Test
.Setup(c => c.GetEpisodeBySeries(It.IsAny<long>()))
.Returns(new List<Episode> { new Episode() });
mocker.Resolve<MediaFileProvider>().Scan(new Series());
mocker.Resolve<DiskScanProvider>().Scan(new Series());
mocker.VerifyAllMocks();
@@ -330,123 +330,6 @@ namespace NzbDrone.Core.Test
result.Should().HaveSameCount(firstSeriesFiles);
}
[Test]
[Description("Verifies that a new download will import successfully")]
public void import_new_download_success()
{
//Fakes
var fakeSeries = Builder<Series>.CreateNew()
.With(s => s.Title = "30 Rock")
.With(s => s.Path = @"C:\Test\TV\30 Rock")
.Build();
var fakeEpisode = Builder<Episode>.CreateNew()
.With(e => e.SeriesId = fakeSeries.SeriesId)
.With(e => e.EpisodeFileId = 0)
.With(e => e.SeasonNumber = 1)
.With(e => e.EpisodeNumber = 5)
.Build();
//Mocks
var mocker = new AutoMoqer();
var diskProvider = mocker.GetMock<DiskProvider>();
diskProvider.Setup(d => d.GetFiles(It.IsAny<string>(), "*.*", SearchOption.AllDirectories)).Returns(new string[] { @"C:\Test\30 Rock - 1x05 - Episode Title\30.Rock.S01E05.Gibberish.XviD.avi" });
diskProvider.Setup(d => d.GetSize(It.IsAny<string>())).Returns(90000000000);
diskProvider.Setup(d => d.CreateDirectory(It.IsAny<string>())).Returns("ok");
diskProvider.Setup(d => d.RenameFile(It.IsAny<string>(), It.IsAny<string>()));
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.GetEpisode(fakeSeries.SeriesId, 1, 5)).Returns(fakeEpisode);
var configProvider = mocker.GetMock<ConfigProvider>();
configProvider.SetupGet(c => c.UseSeasonFolder).Returns(true);
configProvider.SetupGet(c => c.SeasonFolderFormat).Returns(@"Season %0s");
configProvider.SetupGet(c => c.SeriesName).Returns(true);
configProvider.SetupGet(c => c.EpisodeName).Returns(true);
configProvider.SetupGet(c => c.AppendQuality).Returns(true);
configProvider.SetupGet(c => c.SeparatorStyle).Returns(0);
configProvider.SetupGet(c => c.NumberStyle).Returns(2);
configProvider.SetupGet(c => c.ReplaceSpaces).Returns(false);
var database = mocker.GetMock<IDatabase>(MockBehavior.Strict);
database.Setup(r => r.Exists<EpisodeFile>(It.IsAny<string>(), It.IsAny<object>())).Returns(false).Verifiable();
database.Setup(r => r.Insert(It.IsAny<EpisodeFile>())).Returns(1).Verifiable();
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportNewFiles(@"C:\Test\30 Rock - 1x05 - Episode Title", fakeSeries);
//Assert
mocker.VerifyAllMocks();
Assert.AreEqual(1, result.Count);
}
[Test]
[Description("Verifies that a new download will import successfully, deletes previous episode")]
public void import_new_download_success_delete_equal_quality()
{
//Fakes
var fakeSeries = Builder<Series>.CreateNew()
.With(s => s.Title = "30 Rock")
.With(s => s.Path = @"C:\Test\TV\30 Rock")
.Build();
var fakeEpisode = Builder<Episode>.CreateNew()
.With(e => e.SeriesId = fakeSeries.SeriesId)
.With(e => e.SeasonNumber = 1)
.With(e => e.EpisodeNumber = 5)
.With(e => e.EpisodeFileId = 1)
.Build();
var fakeEpisodeFile = Builder<EpisodeFile>.CreateNew()
.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 })
.Build();
fakeEpisode.EpisodeFile = fakeEpisodeFile;
//Mocks
var mocker = new AutoMoqer();
var diskProvider = mocker.GetMock<DiskProvider>();
diskProvider.Setup(d => d.GetFiles(It.IsAny<string>(), "*.*", SearchOption.AllDirectories)).Returns(new string[] { @"C:\Test\30 Rock - 1x05 - Episode Title\30.Rock.S01E05.Gibberish.XviD.avi" });
diskProvider.Setup(d => d.GetSize(It.IsAny<string>())).Returns(90000000000);
diskProvider.Setup(d => d.CreateDirectory(It.IsAny<string>())).Returns("ok");
diskProvider.Setup(d => d.RenameFile(It.IsAny<string>(), It.IsAny<string>()));
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.GetEpisode(fakeSeries.SeriesId, 1, 5)).Returns(fakeEpisode);
var configProvider = mocker.GetMock<ConfigProvider>();
configProvider.SetupGet(c => c.UseSeasonFolder).Returns(true);
configProvider.SetupGet(c => c.SeasonFolderFormat).Returns(@"Season %0s");
configProvider.SetupGet(c => c.SeriesName).Returns(true);
configProvider.SetupGet(c => c.EpisodeName).Returns(true);
configProvider.SetupGet(c => c.AppendQuality).Returns(true);
configProvider.SetupGet(c => c.SeparatorStyle).Returns(0);
configProvider.SetupGet(c => c.NumberStyle).Returns(2);
configProvider.SetupGet(c => c.ReplaceSpaces).Returns(false);
var database = mocker.GetMock<IDatabase>(MockBehavior.Strict);
database.Setup(r => r.Exists<EpisodeFile>(It.IsAny<string>(), It.IsAny<object>())).Returns(false).Verifiable();
database.Setup(r => r.Insert(It.IsAny<EpisodeFile>())).Returns(1);
database.Setup(r => r.Delete<EpisodeFile>(It.IsAny<int>())).Returns(1);
//Act
var result = mocker.Resolve<MediaFileProvider>().ImportNewFiles(@"C:\Test\30 Rock - 1x05 - Episode Title", fakeSeries);
//Assert
mocker.VerifyAllMocks();
Assert.AreEqual(1, result.Count);
}
[Test]
public void Scan_series_should_skip_series_with_no_episodes()
{
@@ -459,7 +342,7 @@ namespace NzbDrone.Core.Test
.With(s => s.SeriesId = 12).Build();
//Act
mocker.Resolve<MediaFileProvider>().Scan(series);
mocker.Resolve<DiskScanProvider>().Scan(series);
//Assert
mocker.VerifyAllMocks();