From 7a5cee5b8e488db7638ef49622512fac95ad1202 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 16 Nov 2013 01:22:31 -0800 Subject: [PATCH] Fixed issue with validation when rename episodes is false --- src/NzbDrone.Api/Config/NamingModule.cs | 14 ++++++-- .../NamingConfigTests.cs | 32 +++++++++++++++++-- .../RootFolderIntegrationTest.cs | 6 ---- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/src/NzbDrone.Api/Config/NamingModule.cs b/src/NzbDrone.Api/Config/NamingModule.cs index b2dfb0c9f..d72d97483 100644 --- a/src/NzbDrone.Api/Config/NamingModule.cs +++ b/src/NzbDrone.Api/Config/NamingModule.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using FluentValidation; using FluentValidation.Results; using Nancy.Responses; @@ -31,8 +32,12 @@ namespace NzbDrone.Api.Config Get["/samples"] = x => GetExamples(this.Bind()); SharedValidator.RuleFor(c => c.MultiEpisodeStyle).InclusiveBetween(0, 3); - SharedValidator.RuleFor(c => c.StandardEpisodeFormat).ValidEpisodeFormat(); - SharedValidator.RuleFor(c => c.DailyEpisodeFormat).ValidDailyEpisodeFormat(); + + SharedValidator.When(spec => spec.RenameEpisodes, () => + { + SharedValidator.RuleFor(c => c.StandardEpisodeFormat).ValidEpisodeFormat(); + SharedValidator.RuleFor(c => c.DailyEpisodeFormat).ValidDailyEpisodeFormat(); + }); } private void UpdateNamingConfig(NamingConfigResource resource) @@ -104,7 +109,10 @@ namespace NzbDrone.Api.Config validationFailures.Add(dailyEpisodeValidationResult); } - throw new ValidationException(validationFailures.ToArray()); + if (validationFailures.Any()) + { + throw new ValidationException(validationFailures.ToArray()); + } } } } diff --git a/src/NzbDrone.Integration.Test/NamingConfigTests.cs b/src/NzbDrone.Integration.Test/NamingConfigTests.cs index 578654a35..eed8373ba 100644 --- a/src/NzbDrone.Integration.Test/NamingConfigTests.cs +++ b/src/NzbDrone.Integration.Test/NamingConfigTests.cs @@ -41,7 +41,7 @@ namespace NzbDrone.Integration.Test public void should_get_bad_request_if_standard_format_is_empty() { var config = NamingConfig.GetSingle(); - config.RenameEpisodes = false; + config.RenameEpisodes = true; config.StandardEpisodeFormat = ""; config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; @@ -53,7 +53,7 @@ namespace NzbDrone.Integration.Test public void should_get_bad_request_if_standard_format_doesnt_contain_season_and_episode() { var config = NamingConfig.GetSingle(); - config.RenameEpisodes = false; + config.RenameEpisodes = true; config.StandardEpisodeFormat = "{season}"; config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; @@ -65,12 +65,38 @@ namespace NzbDrone.Integration.Test public void should_get_bad_request_if_daily_format_doesnt_contain_season_and_episode_or_air_date() { var config = NamingConfig.GetSingle(); - config.RenameEpisodes = false; + config.RenameEpisodes = true; config.StandardEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; config.DailyEpisodeFormat = "{Series Title} - {season} - {Episode Title}"; var errors = NamingConfig.InvalidPut(config); errors.Should().NotBeEmpty(); } + + [Test] + public void should_not_require_format_when_rename_episodes_is_false() + { + var config = NamingConfig.GetSingle(); + config.RenameEpisodes = false; + config.StandardEpisodeFormat = ""; + config.DailyEpisodeFormat = ""; + + var result = NamingConfig.Put(config); + result.RenameEpisodes.Should().BeFalse(); + result.StandardEpisodeFormat.Should().Be(config.StandardEpisodeFormat); + result.DailyEpisodeFormat.Should().Be(config.DailyEpisodeFormat); + } + + [Test] + public void should_require_format_when_rename_episodes_is_true() + { + var config = NamingConfig.GetSingle(); + config.RenameEpisodes = true; + config.StandardEpisodeFormat = ""; + config.DailyEpisodeFormat = ""; + + var errors = NamingConfig.InvalidPut(config); + errors.Should().NotBeEmpty(); + } } } \ No newline at end of file diff --git a/src/NzbDrone.Integration.Test/RootFolderIntegrationTest.cs b/src/NzbDrone.Integration.Test/RootFolderIntegrationTest.cs index c7984e940..216507465 100644 --- a/src/NzbDrone.Integration.Test/RootFolderIntegrationTest.cs +++ b/src/NzbDrone.Integration.Test/RootFolderIntegrationTest.cs @@ -8,9 +8,6 @@ namespace NzbDrone.Integration.Test [TestFixture] public class RootFolderIntegrationTest : IntegrationTest { - - - [Test] public void should_have_no_root_folder_initially() { @@ -20,7 +17,6 @@ namespace NzbDrone.Integration.Test [Test] public void should_add_and_delete_root_folders() { - ConnectSignalR(); var rootFolder = new RootFolderResource @@ -42,8 +38,6 @@ namespace NzbDrone.Integration.Test SignalRMessages.Should().Contain(c => c.Name == "rootfolder"); - - } [Test]