diff --git a/NzbDrone.Common/DiskProvider.cs b/NzbDrone.Common/DiskProvider.cs index a56e72b1f..8eccf98f9 100644 --- a/NzbDrone.Common/DiskProvider.cs +++ b/NzbDrone.Common/DiskProvider.cs @@ -77,9 +77,11 @@ namespace NzbDrone.Common public virtual long GetSize(string path) { + if (!FileExists(path)) + throw new FileNotFoundException("File doesn't exist: " + path); + var fi = new FileInfo(path); return fi.Length; - //return new FileInfo(path).Length; } public virtual String CreateDirectory(string path) @@ -218,14 +220,6 @@ namespace NzbDrone.Common return String.Equals(firstPath.NormalizePath(), secondPath.NormalizePath(), StringComparison.InvariantCultureIgnoreCase); } - public virtual long GetFileSize(string path) - { - if (!FileExists(path)) - throw new FileNotFoundException("File doesn't exist: " + path); - - return new FileInfo(path).Length; - } - public virtual void FileSetLastWriteTimeUtc(string path, DateTime dateTime) { File.SetLastWriteTimeUtc(path, dateTime); diff --git a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/ImportFileFixture.cs b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/ImportFileFixture.cs index 046a9a95c..4eab31abf 100644 --- a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/ImportFileFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTests/ImportFileFixture.cs @@ -22,11 +22,20 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests { public static object[] ImportTestCases = { - new object[] { QualityTypes.SDTV }, - new object[] { QualityTypes.DVD }, - new object[] { QualityTypes.HDTV } + new object[] { QualityTypes.SDTV, false }, + new object[] { QualityTypes.DVD, true }, + new object[] { QualityTypes.HDTV, false } }; + private readonly long SIZE = 50.Megabytes(); + + public void With50MBFile() + { + Mocker.GetMock() + .Setup(d => d.GetSize(It.IsAny())) + .Returns(50.Megabytes()); + } + [Test] public void import_new_file_should_succeed() { @@ -36,10 +45,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var fakeEpisode = Builder.CreateNew().Build(); //Mocks - - - Mocker.GetMock() - .Setup(e => e.GetSize(newFile)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -52,7 +58,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var result = Mocker.Resolve().ImportFile(fakeSeries, newFile); //Assert - VerifyFileImport(result, Mocker, fakeEpisode, 12345); + VerifyFileImport(result, Mocker, fakeEpisode, SIZE); } @@ -60,7 +66,6 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests public void import_new_file_with_better_same_quality_should_succeed(QualityTypes currentFileQuality, bool currentFileProper) { const string newFile = @"WEEDS.S03E01.DUAL.1080p.HELLYWOOD.mkv"; - const int size = 12345; //Fakes var fakeSeries = Builder.CreateNew().Build(); @@ -69,13 +74,9 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .With(g => g.Quality = (QualityTypes)currentFileQuality) .And(g => g.Proper = currentFileProper).Build() ).Build(); - - Mocker.GetMock() - .Setup(e => e.GetSize(newFile)).Returns(12345).Verifiable(); - - + With50MBFile(); Mocker.GetMock() .Setup(e => e.GetEpisodesByParseResult(It.IsAny())).Returns(new List { fakeEpisode }); @@ -84,7 +85,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var result = Mocker.Resolve().ImportFile(fakeSeries, newFile); //Assert - VerifyFileImport(result, Mocker, fakeEpisode, size); + VerifyFileImport(result, Mocker, fakeEpisode, SIZE); } [TestCase("WEEDS.S03E01.DUAL.DVD.XviD.AC3.-HELLYWOOD.avi")] @@ -101,10 +102,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Build(); //Mocks - - - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -123,19 +121,14 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests [Test] public void import_unparsable_file_should_skip() { - const string fileName = @"WEEDS.avi"; - const int size = 12345; + const string fileName = @"C:\Test\WEEDS.avi"; var fakeSeries = Builder.CreateNew().Build(); - - - Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())).Returns(false); - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(size).Verifiable(); + With50MBFile(); //Act var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); @@ -145,30 +138,6 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests ExceptionVerification.ExpectedWarns(1); } - [Test] - public void import_sample_file_should_skip() - { - const string fileName = @"2011.01.10 - Denis Leary - sample - HD TV.mkv"; - const int size = 12345; - //Fakes - var fakeSeries = Builder.CreateNew().Build(); - - //Mocks - - - Mocker.GetMock() - .Setup(p => p.Exists(It.IsAny())).Returns(false); - - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(size).Verifiable(); - - //Act - var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); - - //Assert - VerifySkipImport(result, Mocker); - } - [Test] public void import_existing_file_should_skip() { @@ -181,6 +150,8 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Setup(p => p.Exists(It.IsAny())) .Returns(true); + With50MBFile(); + //Act var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); @@ -198,14 +169,12 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var fakeSeries = Builder.CreateNew().Build(); //Mocks - + With50MBFile(); + Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) .Returns(false); - Mocker.GetMock(MockBehavior.Strict) - .Setup(e => e.GetSize(fileName)).Returns(90000000000); - Mocker.GetMock() .Setup(c => c.GetEpisodesByParseResult(It.IsAny())) .Returns(new List()); @@ -222,7 +191,6 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests [TestCase("WEEDS.S03E01.DUAL.bluray.x264.AC3.-HELLYWOOD.mkv")] public void import_new_file_episode_has_better_quality_than_existing(string fileName) { - //Fakes var fakeSeries = Builder.CreateNew().Build(); var fakeEpisode = Builder.CreateNew() @@ -232,10 +200,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Build(); //Mocks - - - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -248,7 +213,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); //Assert - VerifyFileImport(result, Mocker, fakeEpisode, 12345); + VerifyFileImport(result, Mocker, fakeEpisode, SIZE); Mocker.GetMock().Verify(p => p.DeleteFile(It.IsAny()), Times.Once()); } @@ -267,8 +232,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Build()) .Build(); - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -281,7 +245,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); //Assert - VerifyFileImport(result, Mocker, fakeEpisodes[0], 12345); + VerifyFileImport(result, Mocker, fakeEpisodes[0], SIZE); Mocker.GetMock().Verify(p => p.DeleteFile(It.IsAny()), Times.Once()); } @@ -301,9 +265,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests //Mocks - - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -341,10 +303,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Build(); //Mocks - - - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -357,7 +316,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); //Assert - VerifyFileImport(result, Mocker, fakeEpisode1, 12345); + VerifyFileImport(result, Mocker, fakeEpisode1, SIZE); Mocker.GetMock().Verify(p => p.DeleteFile(It.IsAny()), Times.Exactly(2)); } @@ -375,10 +334,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Build(); //Mocks - - - Mocker.GetMock() - .Setup(e => e.GetSize(fileName)).Returns(12345).Verifiable(); + With50MBFile(); Mocker.GetMock() .Setup(p => p.Exists(It.IsAny())) @@ -391,7 +347,7 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests var result = Mocker.Resolve().ImportFile(fakeSeries, fileName); //Assert - VerifyFileImport(result, Mocker, fakeEpisode, 12345); + VerifyFileImport(result, Mocker, fakeEpisode, SIZE); Mocker.GetMock().Verify(p => p.DeleteFile(It.IsAny()), Times.Never()); } @@ -409,15 +365,14 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests .Returns(false); Mocker.GetMock() - .Setup(d => d.GetFileSize(path)) + .Setup(d => d.GetSize(path)) .Returns(20.Megabytes()); Mocker.Resolve().ImportFile(series, path).Should().BeNull(); } - private static void VerifyFileImport(EpisodeFile result, AutoMoqer Mocker, Episode fakeEpisode, int size) + private static void VerifyFileImport(EpisodeFile result, AutoMoqer Mocker, Episode fakeEpisode, long size) { - Mocker.VerifyAllMocks(); result.Should().NotBeNull(); result.SeriesId.Should().Be(fakeEpisode.SeriesId); result.Size.Should().Be(size); @@ -432,7 +387,6 @@ namespace NzbDrone.Core.Test.ProviderTests.DiskScanProviderTests private static void VerifySkipImport(EpisodeFile result, AutoMoqer Mocker) { - Mocker.VerifyAllMocks(); result.Should().BeNull(); Mocker.GetMock().Verify(p => p.Add(It.IsAny()), Times.Never()); Mocker.GetMock().Verify(p => p.UpdateEpisode(It.IsAny()), Times.Never()); diff --git a/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTests/ProcessVideoFileFixture.cs b/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTests/ProcessVideoFileFixture.cs index e66203ec4..ad7341974 100644 --- a/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTests/ProcessVideoFileFixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTests/ProcessVideoFileFixture.cs @@ -111,7 +111,7 @@ namespace NzbDrone.Core.Test.ProviderTests.PostDownloadProviderTests Mocker.Resolve().ProcessVideoFile(file); //Assert - Mocker.GetMock().Verify(s => s.GetFileSize(It.IsAny()), Times.Never()); + Mocker.GetMock().Verify(s => s.GetSize(It.IsAny()), Times.Never()); ExceptionVerification.IgnoreWarns(); } @@ -149,7 +149,7 @@ namespace NzbDrone.Core.Test.ProviderTests.PostDownloadProviderTests .Returns(series); Mocker.GetMock() - .Setup(s => s.GetFileSize(downloadName)) + .Setup(s => s.GetSize(downloadName)) .Returns(10); Mocker.GetMock() @@ -178,7 +178,7 @@ namespace NzbDrone.Core.Test.ProviderTests.PostDownloadProviderTests .Returns(fakeSeries); Mocker.GetMock() - .Setup(s => s.GetFileSize(downloadName)) + .Setup(s => s.GetSize(downloadName)) .Returns(8); //Act diff --git a/NzbDrone.Core/Providers/PostDownloadProvider.cs b/NzbDrone.Core/Providers/PostDownloadProvider.cs index 682baa1f6..7ea58ed98 100644 --- a/NzbDrone.Core/Providers/PostDownloadProvider.cs +++ b/NzbDrone.Core/Providers/PostDownloadProvider.cs @@ -138,7 +138,7 @@ namespace NzbDrone.Core.Providers return; } - var size = _diskProvider.GetFileSize(videoFile); + var size = _diskProvider.GetSize(videoFile); var freeSpace = _diskProvider.FreeDiskSpace(new DirectoryInfo(series.Path)); if (Convert.ToUInt64(size) > freeSpace)