From 35e44284c0b3c41ce31b569a4381dafc5e110f84 Mon Sep 17 00:00:00 2001 From: "kay.one" Date: Sat, 22 Oct 2011 16:28:57 -0700 Subject: [PATCH] Fixed broken test, drop folder prefix uses regex instead of prefix now. --- NzbDrone.Core.Test/NzbDrone.Core.Test.csproj | 1 - .../ProviderTests/DiskScanProviderTest.cs | 4 +- .../ProviderTests/MediaFileProviderTests.cs | 8 +++- .../ProviderTests/PostDownloadProviderTest.cs | 31 +++++---------- NzbDrone.Core/Model/PostDownloadStatusType.cs | 32 +--------------- NzbDrone.Core/Parser.cs | 11 ------ .../Providers/Jobs/PostDownloadScanJob.cs | 7 +--- .../Providers/PostDownloadProvider.cs | 38 +++++++------------ 8 files changed, 35 insertions(+), 97 deletions(-) diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index c71240b78..2d9d28c4c 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -91,7 +91,6 @@ - diff --git a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs index 5c90daa12..692dc4aee 100644 --- a/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/DiskScanProviderTest.cs @@ -15,7 +15,7 @@ namespace NzbDrone.Core.Test.ProviderTests public class DiskScanProviderTest : TestBase { [Test] - public void scan_series_should_update_last_scan_date() + public void scan_series_should_update_the_last_scan_date() { var mocker = new AutoMoqer(); @@ -26,6 +26,8 @@ namespace NzbDrone.Core.Test.ProviderTests .Setup(c => c.GetEpisodeBySeries(It.IsAny())) .Returns(new List { new Episode() }); + mocker.GetMock().Setup(c => c.FolderExists(It.IsAny())).Returns(true); + mocker.GetMock() .Setup(c => c.GetSeriesFiles(It.IsAny())) diff --git a/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTests.cs b/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTests.cs index 91f12c5bc..f17ad78f6 100644 --- a/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTests.cs +++ b/NzbDrone.Core.Test/ProviderTests/MediaFileProviderTests.cs @@ -82,10 +82,14 @@ namespace NzbDrone.Core.Test.ProviderTests mocker.GetMock() .Setup(e => e.RepairLinks()).Returns(0); + mocker.GetMock() .Setup(e => e.DeleteOrphaned()).Returns(0); - + mocker.GetMock() + .Setup(c => c.FolderExists(It.IsAny())) + .Returns(true); + var series = Builder.CreateNew() .With(s => s.SeriesId = 12).Build(); @@ -127,7 +131,7 @@ namespace NzbDrone.Core.Test.ProviderTests result.Should().HaveSameCount(episodes); result.Should().OnlyContain(e => e.EpisodeFileId == 0); removedLinks.Should().Be(10); - } + } [Test] public void DeleteOrphanedEpisodeFiles() diff --git a/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTest.cs index 01d7ff6a6..419933984 100644 --- a/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/PostDownloadProviderTest.cs @@ -54,7 +54,7 @@ namespace NzbDrone.Core.Test.ProviderTests s => s.SetPostDownloadStatus(expectedEpisodesNumbers, postDownloadStatus)).Verifiable(); //Act - mocker.Resolve().ProcessFailedOrUnpackingDownload(new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), folderName)),postDownloadStatus); + mocker.Resolve().ProcessFailedOrUnpackingDownload(new DirectoryInfo(Path.Combine(Directory.GetCurrentDirectory(), folderName)), postDownloadStatus); //Assert mocker.GetMock().Verify(c => c.SetPostDownloadStatus(expectedEpisodesNumbers, postDownloadStatus), Times.Once()); @@ -116,26 +116,6 @@ namespace NzbDrone.Core.Test.ProviderTests mocker.VerifyAllMocks(); } - [TestCase(PostDownloadStatusType.Unpacking, 8)] - [TestCase(PostDownloadStatusType.Failed, 8)] - [TestCase(PostDownloadStatusType.InvalidSeries, 24)] - [TestCase(PostDownloadStatusType.ParseError, 21)] - [TestCase(PostDownloadStatusType.Unknown, 10)] - [TestCase(PostDownloadStatusType.Processed, 0)] - [TestCase(PostDownloadStatusType.InvalidEpisode, 25)] - [TestCase(PostDownloadStatusType.NoError, 0)] - public void GetPrefixLength(PostDownloadStatusType postDownloadStatus, int expected) - { - //Setup - var mocker = new AutoMoqer(); - - //Act - var result = mocker.Resolve().GetPrefixLength(postDownloadStatus); - - //Assert - result.Should().Be(expected); - } - [Test] public void ProcessDownload_InvalidSeries() { @@ -346,5 +326,14 @@ namespace NzbDrone.Core.Test.ProviderTests //Assert result.Should().Be(expectedResult); } + + [TestCase("_NzbDrone_ParseError_The Office (US) - S01E01 - Episode Title", "The Office (US) - S01E01 - Episode Title")] + [TestCase("_Status_The Office (US) - S01E01 - Episode Title", "The Office (US) - S01E01 - Episode Title")] + [TestCase("The Office (US) - S01E01 - Episode Title", "The Office (US) - S01E01 - Episode Title")] + [TestCase("_The Office (US) - S01E01 - Episode Title", "_The Office (US) - S01E01 - Episode Title")] + public void RemoveStatus_should_remove_status_string_from_folder_name(string folderName, string cleanFolderName) + { + PostDownloadProvider.RemoveStatusFromFolderName(folderName).Should().Be(cleanFolderName); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Model/PostDownloadStatusType.cs b/NzbDrone.Core/Model/PostDownloadStatusType.cs index 3a5cf2bc2..3094b7772 100644 --- a/NzbDrone.Core/Model/PostDownloadStatusType.cs +++ b/NzbDrone.Core/Model/PostDownloadStatusType.cs @@ -2,44 +2,14 @@ { public enum PostDownloadStatusType { - /// - /// Unknown (Default) - /// - Unknown = 0, - /// - /// Unpacking - /// + Unknown = 0, Unpacking = 1, - - /// - /// Failed - /// Failed = 2, - - /// - /// Processed - /// Processed = 3, - - /// - /// InvalidSeries - /// InvalidSeries = 4, - - /// - /// ParseError - /// ParseError = 5, - - /// - /// InvalidEpisode - /// InvalidEpisode = 6, - - /// - /// NoError - /// NoError = 7, } } \ No newline at end of file diff --git a/NzbDrone.Core/Parser.cs b/NzbDrone.Core/Parser.cs index a5e37785a..64cc16c58 100644 --- a/NzbDrone.Core/Parser.cs +++ b/NzbDrone.Core/Parser.cs @@ -394,17 +394,6 @@ namespace NzbDrone.Core return info.FullName.Trim('/', '\\', ' '); } - public static string UppercaseFirst(string s) - { - // Check for empty string. - if (string.IsNullOrEmpty(s)) - { - return string.Empty; - } - // Return char and concat substring. - return char.ToUpper(s[0]) + s.Substring(1); - } - public static long GetReportSize(string sizeString) { var match = ReportSizeRegex.Matches(sizeString); diff --git a/NzbDrone.Core/Providers/Jobs/PostDownloadScanJob.cs b/NzbDrone.Core/Providers/Jobs/PostDownloadScanJob.cs index 741b79e89..47d85f9da 100644 --- a/NzbDrone.Core/Providers/Jobs/PostDownloadScanJob.cs +++ b/NzbDrone.Core/Providers/Jobs/PostDownloadScanJob.cs @@ -1,10 +1,5 @@ -using System; -using System.IO; -using Ninject; -using NLog; -using NzbDrone.Core.Model; +using Ninject; using NzbDrone.Core.Model.Notification; -using NzbDrone.Core.Providers.Core; namespace NzbDrone.Core.Providers.Jobs { diff --git a/NzbDrone.Core/Providers/PostDownloadProvider.cs b/NzbDrone.Core/Providers/PostDownloadProvider.cs index 3d0709c59..ef072a89e 100644 --- a/NzbDrone.Core/Providers/PostDownloadProvider.cs +++ b/NzbDrone.Core/Providers/PostDownloadProvider.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Text.RegularExpressions; using NLog; using Ninject; using NzbDrone.Core.Model; @@ -21,6 +22,8 @@ namespace NzbDrone.Core.Providers private readonly EpisodeProvider _episodeProvider; private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + private static readonly Regex StatusRegex = new Regex(@"^_[\w_]*_", RegexOptions.Compiled); + private static readonly List InfoList = new List(); [Inject] @@ -69,6 +72,8 @@ namespace NzbDrone.Core.Providers var folderStatus = GetPostDownloadStatusForFolder(subfolderInfo.Name); + + if (folderStatus == PostDownloadStatusType.Unpacking) { ProcessFailedOrUnpackingDownload(subfolderInfo, PostDownloadStatusType.Unpacking); @@ -86,8 +91,7 @@ namespace NzbDrone.Core.Providers if (folderStatus != PostDownloadStatusType.NoError) { //Retry processing on the download - ReProcessDownload(new PostDownloadInfoModel{ Name = subfolderInfo.FullName, Status = folderStatus }); - + ReProcessDownload(new PostDownloadInfoModel { Name = subfolderInfo.FullName, Status = folderStatus }); continue; } @@ -131,7 +135,7 @@ namespace NzbDrone.Core.Providers if (importedFiles.Count == 0) { Logger.Warn("Unable to Import new download [{0}], unable to parse episode file(s).", subfolderInfo.FullName); - _diskProvider.MoveDirectory(subfolderInfo.FullName, + _diskProvider.MoveDirectory(subfolderInfo.FullName, GetNewFolderNameWithPostDownloadStatus(subfolderInfo, PostDownloadStatusType.ParseError)); } @@ -165,7 +169,7 @@ namespace NzbDrone.Core.Providers } //Remove the error prefix before processing - var parseResult = Parser.ParseTitle(directoryInfo.Name.Substring(GetPrefixLength(postDownloadStatus))); + var parseResult = Parser.ParseTitle(RemoveStatusFromFolderName(directoryInfo.Name)); parseResult.Series = _seriesProvider.FindSeries(parseResult.CleanTitle); @@ -215,25 +219,6 @@ namespace NzbDrone.Core.Providers ProcessDownload(directoryInfo); } - public int GetPrefixLength(PostDownloadStatusType postDownloadStatus) - { - //_UNPACK_ & _FAILED_ have a length of 8 - if (postDownloadStatus == PostDownloadStatusType.Unpacking || postDownloadStatus == PostDownloadStatusType.Failed) - return 8; - - if (postDownloadStatus == PostDownloadStatusType.Unknown) - return 10; - - if (postDownloadStatus == PostDownloadStatusType.Processed) - return 0; - - if (postDownloadStatus == PostDownloadStatusType.NoError) - return 0; - - //Return the 11 (_NzbDrone_) + trailing underscore + postDownloadStatus length - return 11 + postDownloadStatus.ToString().Length; - } - public void Add(PostDownloadInfoModel model) { InfoList.Add(model); @@ -278,7 +263,7 @@ namespace NzbDrone.Core.Providers var error = String.Format("_NzbDrone_{0}_", postDownloadStatus.ToString()); if (existingError != PostDownloadStatusType.NoError) - newFolderName = directoryInfo.Name.Substring(GetPrefixLength(existingError)); + newFolderName = RemoveStatusFromFolderName(directoryInfo.Name); if (postDownloadStatus == PostDownloadStatusType.Unknown) error = "_NzbDrone_"; @@ -294,5 +279,10 @@ namespace NzbDrone.Core.Providers return Path.Combine(parent, newName); } + + public static string RemoveStatusFromFolderName(string folderName) + { + return StatusRegex.Replace(folderName, string.Empty); + } } }