diff --git a/src/NzbDrone.Integration.Test/Client/ClientBase.cs b/src/NzbDrone.Integration.Test/Client/ClientBase.cs index a93bfad43..228ac98eb 100644 --- a/src/NzbDrone.Integration.Test/Client/ClientBase.cs +++ b/src/NzbDrone.Integration.Test/Client/ClientBase.cs @@ -87,6 +87,13 @@ namespace NzbDrone.Integration.Test.Client return Post>(request, HttpStatusCode.BadRequest); } + public List InvalidPut(TResource body) + { + var request = BuildRequest(); + request.AddBody(body); + return Put>(request, HttpStatusCode.BadRequest); + } + public RestRequest BuildRequest(string command = "") { var request = new RestRequest(_resource + "/" + command.Trim('/')) diff --git a/src/NzbDrone.Integration.Test/NamingConfigTests.cs b/src/NzbDrone.Integration.Test/NamingConfigTests.cs index e2280cbb5..578654a35 100644 --- a/src/NzbDrone.Integration.Test/NamingConfigTests.cs +++ b/src/NzbDrone.Integration.Test/NamingConfigTests.cs @@ -1,5 +1,7 @@ -using FluentAssertions; +using System.Net; +using FluentAssertions; using NUnit.Framework; +using NzbDrone.Api.Config; namespace NzbDrone.Integration.Test { @@ -34,5 +36,41 @@ namespace NzbDrone.Integration.Test result.StandardEpisodeFormat.Should().Be(config.StandardEpisodeFormat); result.DailyEpisodeFormat.Should().Be(config.DailyEpisodeFormat); } + + [Test] + public void should_get_bad_request_if_standard_format_is_empty() + { + var config = NamingConfig.GetSingle(); + config.RenameEpisodes = false; + config.StandardEpisodeFormat = ""; + config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; + + var errors = NamingConfig.InvalidPut(config); + errors.Should().NotBeEmpty(); + } + + [Test] + public void should_get_bad_request_if_standard_format_doesnt_contain_season_and_episode() + { + var config = NamingConfig.GetSingle(); + config.RenameEpisodes = false; + config.StandardEpisodeFormat = "{season}"; + config.DailyEpisodeFormat = "{Series Title} - {Air-Date} - {Episode Title}"; + + var errors = NamingConfig.InvalidPut(config); + errors.Should().NotBeEmpty(); + } + + [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.StandardEpisodeFormat = "{Series Title} - {season}x{episode:00} - {Episode Title}"; + config.DailyEpisodeFormat = "{Series Title} - {season} - {Episode Title}"; + + var errors = NamingConfig.InvalidPut(config); + errors.Should().NotBeEmpty(); + } } } \ No newline at end of file