diff --git a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs index 3890079dc..b4af0456e 100644 --- a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs @@ -2,11 +2,13 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Linq.Expressions; using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Common; +using NzbDrone.Core.Model; using NzbDrone.Core.Providers; using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; @@ -311,5 +313,64 @@ namespace NzbDrone.Core.Test.ProviderTests Mocker.GetMock().Verify(v => v.GetFileByPath(filename), Times.Once()); Mocker.GetMock().Verify(v => v.MoveFile(filename.NormalizePath(), newFilePath), Times.Once()); } + + [Test] + public void MoveEpisodeFile_should_use_EpisodeFiles_quality() + { + var fakeSeries = Builder.CreateNew() + .With(s => s.SeriesId = 5) + .With(s => s.Title = "30 Rock") + .Build(); + + var fakeEpisode = Builder.CreateListOfSize(1) + .All() + .With(e => e.SeriesId = fakeSeries.SeriesId) + .With(e => e.SeasonNumber = 1) + .With(e => e.EpisodeNumber = 1) + .Build(); + + const string filename = @"30 Rock - S01E01 - TBD"; + var fi = new FileInfo(Path.Combine(@"C:\Test\TV\30 Rock\Season 01\", filename + ".mkv")); + var currentFilename = Path.Combine(@"C:\Test\TV\30 Rock\Season 01\", "30.Rock.S01E01.Test.WED-DL.mkv"); + const string message = "30 Rock - 1x01 - [WEBDL]"; + + var file = Builder.CreateNew() + .With(f => f.SeriesId = fakeSeries.SeriesId) + .With(f => f.Path = currentFilename) + .With(f => f.Quality = QualityTypes.WEBDL) + .With(f => f.Proper = false) + .Build(); + + Mocker.GetMock() + .Setup(e => e.GetSeries(fakeSeries.SeriesId)) + .Returns(fakeSeries); + + Mocker.GetMock() + .Setup(e => e.GetEpisodesByFileId(file.EpisodeFileId)) + .Returns(fakeEpisode); + + Mocker.GetMock() + .Setup(e => e.GetNewFilename(fakeEpisode, fakeSeries.Title, It.IsAny(), It.IsAny())) + .Returns(filename); + + Mocker.GetMock() + .Setup(e => e.CalculateFilePath(It.IsAny(), fakeEpisode.First().SeasonNumber, filename, ".mkv")) + .Returns(fi); + + Mocker.GetMock() + .Setup(s => s.GetDownloadTitle(It.Is(e => e.Quality == new Quality{ QualityType = QualityTypes.WEBDL, Proper = false }))) + .Returns(message); + + Mocker.GetMock() + .Setup(e => e.OnDownload("30 Rock - 1x01 - [WEBDL]", It.IsAny())); + + //Act + var result = Mocker.Resolve().MoveEpisodeFile(file, true); + + //Assert + result.Should().BeTrue(); + Mocker.GetMock() + .Verify(e => e.OnDownload("30 Rock - 1x01 - [WEBDL]", It.IsAny()), Times.Once()); + } } } diff --git a/NzbDrone.Core/Providers/DiskScanProvider.cs b/NzbDrone.Core/Providers/DiskScanProvider.cs index 0883b8c05..d7dec59c3 100644 --- a/NzbDrone.Core/Providers/DiskScanProvider.cs +++ b/NzbDrone.Core/Providers/DiskScanProvider.cs @@ -197,6 +197,7 @@ namespace NzbDrone.Core.Providers var parseResult = Parser.ParsePath(episodeFile.Path); parseResult.Series = series; + parseResult.Quality = new Quality{ QualityType = episodeFile.Quality, Proper = episodeFile.Proper }; var message = _downloadProvider.GetDownloadTitle(parseResult);