|
|
@ -28,6 +28,16 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
private readonly long SIZE = 80.Megabytes();
|
|
|
|
private readonly long SIZE = 80.Megabytes();
|
|
|
|
|
|
|
|
private Series _series;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[SetUp]
|
|
|
|
|
|
|
|
public void Setup()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_series = Builder<Series>
|
|
|
|
|
|
|
|
.CreateNew()
|
|
|
|
|
|
|
|
.With(s => s.IsDaily = false)
|
|
|
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void With80MBFile()
|
|
|
|
public void With80MBFile()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -36,6 +46,11 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
.Returns(80.Megabytes());
|
|
|
|
.Returns(80.Megabytes());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void WithDailySeries()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
_series.IsDaily = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
|
public void import_new_file_should_succeed()
|
|
|
|
public void import_new_file_should_succeed()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -403,10 +418,6 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
|
public void should_return_null_if_file_size_is_under_70MB_and_runTime_under_3_minutes()
|
|
|
|
public void should_return_null_if_file_size_is_under_70MB_and_runTime_under_3_minutes()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var series = Builder<Series>
|
|
|
|
|
|
|
|
.CreateNew()
|
|
|
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const string path = @"C:\Test\TV\30.rock.s01e01.pilot.avi";
|
|
|
|
const string path = @"C:\Test\TV\30.rock.s01e01.pilot.avi";
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<MediaFileProvider>()
|
|
|
|
Mocker.GetMock<MediaFileProvider>()
|
|
|
@ -421,14 +432,12 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
.Setup(s => s.GetRunTime(path))
|
|
|
|
.Setup(s => s.GetRunTime(path))
|
|
|
|
.Returns(60);
|
|
|
|
.Returns(60);
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.Resolve<DiskScanProvider>().ImportFile(series, path).Should().BeNull();
|
|
|
|
Mocker.Resolve<DiskScanProvider>().ImportFile(_series, path).Should().BeNull();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
[Test]
|
|
|
|
public void should_import_if_file_size_is_under_70MB_but_runTime_over_3_minutes()
|
|
|
|
public void should_import_if_file_size_is_under_70MB_but_runTime_over_3_minutes()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var fakeSeries = Builder<Series>.CreateNew().Build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fakeEpisode = Builder<Episode>.CreateNew()
|
|
|
|
var fakeEpisode = Builder<Episode>.CreateNew()
|
|
|
|
.With(e => e.EpisodeFileId = 0)
|
|
|
|
.With(e => e.EpisodeFileId = 0)
|
|
|
|
.With(e => e.EpisodeFile = null)
|
|
|
|
.With(e => e.EpisodeFile = null)
|
|
|
@ -451,7 +460,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
Mocker.GetMock<EpisodeProvider>()
|
|
|
|
Mocker.GetMock<EpisodeProvider>()
|
|
|
|
.Setup(e => e.GetEpisodesByParseResult(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
|
|
|
|
.Setup(e => e.GetEpisodesByParseResult(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
|
|
|
|
|
|
|
|
|
|
|
|
var result = Mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, path);
|
|
|
|
var result = Mocker.Resolve<DiskScanProvider>().ImportFile(_series, path);
|
|
|
|
|
|
|
|
|
|
|
|
VerifyFileImport(result, Mocker, fakeEpisode, 20.Megabytes());
|
|
|
|
VerifyFileImport(result, Mocker, fakeEpisode, 20.Megabytes());
|
|
|
|
Mocker.GetMock<DiskProvider>().Verify(p => p.DeleteFile(It.IsAny<string>()), Times.Never());
|
|
|
|
Mocker.GetMock<DiskProvider>().Verify(p => p.DeleteFile(It.IsAny<string>()), Times.Never());
|
|
|
@ -462,8 +471,6 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
{
|
|
|
|
{
|
|
|
|
With80MBFile();
|
|
|
|
With80MBFile();
|
|
|
|
|
|
|
|
|
|
|
|
var fakeSeries = Builder<Series>.CreateNew().Build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fakeEpisode = Builder<Episode>.CreateNew()
|
|
|
|
var fakeEpisode = Builder<Episode>.CreateNew()
|
|
|
|
.With(e => e.EpisodeFileId = 0)
|
|
|
|
.With(e => e.EpisodeFileId = 0)
|
|
|
|
.With(e => e.EpisodeFile = null)
|
|
|
|
.With(e => e.EpisodeFile = null)
|
|
|
@ -482,12 +489,67 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests
|
|
|
|
Mocker.GetMock<EpisodeProvider>()
|
|
|
|
Mocker.GetMock<EpisodeProvider>()
|
|
|
|
.Setup(e => e.GetEpisodesByParseResult(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
|
|
|
|
.Setup(e => e.GetEpisodesByParseResult(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
|
|
|
|
|
|
|
|
|
|
|
|
var result = Mocker.Resolve<DiskScanProvider>().ImportFile(fakeSeries, path);
|
|
|
|
var result = Mocker.Resolve<DiskScanProvider>().ImportFile(_series, path);
|
|
|
|
|
|
|
|
|
|
|
|
VerifyFileImport(result, Mocker, fakeEpisode, SIZE);
|
|
|
|
VerifyFileImport(result, Mocker, fakeEpisode, SIZE);
|
|
|
|
Mocker.GetMock<DiskProvider>().Verify(p => p.DeleteFile(It.IsAny<string>()), Times.Never());
|
|
|
|
Mocker.GetMock<DiskProvider>().Verify(p => p.DeleteFile(It.IsAny<string>()), Times.Never());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
|
|
public void should_import_special_even_if_file_size_is_under_70MB_and_runTime_under_3_minutes()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
With80MBFile();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var fakeEpisode = Builder<Episode>.CreateNew()
|
|
|
|
|
|
|
|
.With(e => e.EpisodeFileId = 0)
|
|
|
|
|
|
|
|
.With(e => e.EpisodeFile = null)
|
|
|
|
|
|
|
|
.Build();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const string path = @"C:\Test\TV\30.rock.s00e01.pre-pilot.avi";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<MediaFileProvider>()
|
|
|
|
|
|
|
|
.Setup(m => m.Exists(path))
|
|
|
|
|
|
|
|
.Returns(false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<DiskProvider>()
|
|
|
|
|
|
|
|
.Setup(d => d.GetSize(path))
|
|
|
|
|
|
|
|
.Returns(20.Megabytes());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<MediaInfoProvider>()
|
|
|
|
|
|
|
|
.Setup(s => s.GetRunTime(path))
|
|
|
|
|
|
|
|
.Returns(60);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<EpisodeProvider>()
|
|
|
|
|
|
|
|
.Setup(e => e.GetEpisodesByParseResult(It.IsAny<EpisodeParseResult>())).Returns(new List<Episode> { fakeEpisode });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = Mocker.Resolve<DiskScanProvider>().ImportFile(_series, path);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VerifyFileImport(result, Mocker, fakeEpisode, 20.Megabytes());
|
|
|
|
|
|
|
|
Mocker.GetMock<DiskProvider>().Verify(p => p.DeleteFile(It.IsAny<string>()), Times.Never());
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
|
|
|
public void should_return_null_if_daily_series_with_file_size_is_under_70MB_and_runTime_under_3_minutes()
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
WithDailySeries();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const string path = @"C:\Test\TV\30.rock.s01e01.pilot.avi";
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<MediaFileProvider>()
|
|
|
|
|
|
|
|
.Setup(m => m.Exists(path))
|
|
|
|
|
|
|
|
.Returns(false);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<DiskProvider>()
|
|
|
|
|
|
|
|
.Setup(d => d.GetSize(path))
|
|
|
|
|
|
|
|
.Returns(20.Megabytes());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<MediaInfoProvider>()
|
|
|
|
|
|
|
|
.Setup(s => s.GetRunTime(path))
|
|
|
|
|
|
|
|
.Returns(60);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Mocker.Resolve<DiskScanProvider>().ImportFile(_series, path).Should().BeNull();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private static void VerifyFileImport(EpisodeFile result, AutoMoqer Mocker, Episode fakeEpisode, long size)
|
|
|
|
private static void VerifyFileImport(EpisodeFile result, AutoMoqer Mocker, Episode fakeEpisode, long size)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
result.Should().NotBeNull();
|
|
|
|
result.Should().NotBeNull();
|
|
|
|