mirror of
https://github.com/Sonarr/Sonarr.git
synced 2025-01-10 23:29:53 +02:00
Fixed broken test, drop folder prefix uses regex instead of prefix now.
This commit is contained in:
parent
1b2af8ea1b
commit
35e44284c0
@ -91,7 +91,6 @@
|
||||
<Compile Include="JobTests\BacklogSearchJobTest.cs" />
|
||||
<Compile Include="JobTests\BannerDownloadJobTest.cs" />
|
||||
<Compile Include="ProviderTests\ConfigFileProviderTest.cs" />
|
||||
<Compile Include="Framework\AutoMoq\TestBaseTests.cs" />
|
||||
<Compile Include="ProviderTests\DiskProviderTests\ExtractArchiveFixture.cs" />
|
||||
<Compile Include="ProviderTests\PostDownloadProviderTest.cs" />
|
||||
<Compile Include="JobTests\SearchJobTest.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 @@ public void scan_series_should_update_last_scan_date()
|
||||
.Setup(c => c.GetEpisodeBySeries(It.IsAny<long>()))
|
||||
.Returns(new List<Episode> { new Episode() });
|
||||
|
||||
mocker.GetMock<DiskProvider>().Setup(c => c.FolderExists(It.IsAny<string>())).Returns(true);
|
||||
|
||||
|
||||
mocker.GetMock<MediaFileProvider>()
|
||||
.Setup(c => c.GetSeriesFiles(It.IsAny<int>()))
|
||||
|
@ -82,9 +82,13 @@ public void Scan_series_should_skip_series_with_no_episodes()
|
||||
|
||||
mocker.GetMock<MediaFileProvider>()
|
||||
.Setup(e => e.RepairLinks()).Returns(0);
|
||||
|
||||
mocker.GetMock<MediaFileProvider>()
|
||||
.Setup(e => e.DeleteOrphaned()).Returns(0);
|
||||
|
||||
mocker.GetMock<DiskProvider>()
|
||||
.Setup(c => c.FolderExists(It.IsAny<string>()))
|
||||
.Returns(true);
|
||||
|
||||
var series = Builder<Series>.CreateNew()
|
||||
.With(s => s.SeriesId = 12).Build();
|
||||
|
@ -116,26 +116,6 @@ public void ProcessFailedOrUnpackingDownload_Invalid_Episode()
|
||||
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<PostDownloadProvider>().GetPrefixLength(postDownloadStatus);
|
||||
|
||||
//Assert
|
||||
result.Should().Be(expected);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ProcessDownload_InvalidSeries()
|
||||
{
|
||||
@ -346,5 +326,14 @@ public void GetNewFolderNameWithPostDownloadStatus_should_return_a_path_with_no_
|
||||
//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);
|
||||
}
|
||||
}
|
||||
}
|
@ -2,44 +2,14 @@
|
||||
{
|
||||
public enum PostDownloadStatusType
|
||||
{
|
||||
/// <summary>
|
||||
/// Unknown (Default)
|
||||
/// </summary>
|
||||
|
||||
Unknown = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Unpacking
|
||||
/// </summary>
|
||||
Unpacking = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Failed
|
||||
/// </summary>
|
||||
Failed = 2,
|
||||
|
||||
/// <summary>
|
||||
/// Processed
|
||||
/// </summary>
|
||||
Processed = 3,
|
||||
|
||||
/// <summary>
|
||||
/// InvalidSeries
|
||||
/// </summary>
|
||||
InvalidSeries = 4,
|
||||
|
||||
/// <summary>
|
||||
/// ParseError
|
||||
/// </summary>
|
||||
ParseError = 5,
|
||||
|
||||
/// <summary>
|
||||
/// InvalidEpisode
|
||||
/// </summary>
|
||||
InvalidEpisode = 6,
|
||||
|
||||
/// <summary>
|
||||
/// NoError
|
||||
/// </summary>
|
||||
NoError = 7,
|
||||
}
|
||||
}
|
@ -394,17 +394,6 @@ public static string NormalizePath(string path)
|
||||
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);
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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 @@ public class PostDownloadProvider
|
||||
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<PostDownloadInfoModel> InfoList = new List<PostDownloadInfoModel>();
|
||||
|
||||
[Inject]
|
||||
@ -69,6 +72,8 @@ public virtual void ProcessDropFolder(string dropFolder)
|
||||
|
||||
var folderStatus = GetPostDownloadStatusForFolder(subfolderInfo.Name);
|
||||
|
||||
|
||||
|
||||
if (folderStatus == PostDownloadStatusType.Unpacking)
|
||||
{
|
||||
ProcessFailedOrUnpackingDownload(subfolderInfo, PostDownloadStatusType.Unpacking);
|
||||
@ -87,7 +92,6 @@ public virtual void ProcessDropFolder(string dropFolder)
|
||||
{
|
||||
//Retry processing on the download
|
||||
ReProcessDownload(new PostDownloadInfoModel { Name = subfolderInfo.FullName, Status = folderStatus });
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -165,7 +169,7 @@ public virtual void ProcessFailedOrUnpackingDownload(DirectoryInfo directoryInfo
|
||||
}
|
||||
|
||||
//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 @@ public virtual void ReProcessDownload(PostDownloadInfoModel model)
|
||||
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 @@ public string GetNewFolderNameWithPostDownloadStatus(DirectoryInfo directoryInfo
|
||||
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 @@ public string GetNewFolderNameWithPostDownloadStatus(DirectoryInfo directoryInfo
|
||||
|
||||
return Path.Combine(parent, newName);
|
||||
}
|
||||
|
||||
public static string RemoveStatusFromFolderName(string folderName)
|
||||
{
|
||||
return StatusRegex.Replace(folderName, string.Empty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user