diff --git a/src/NzbDrone.Core.Test/IndexerTests/NewznabTests/NewznabRequestGeneratorFixture.cs b/src/NzbDrone.Core.Test/IndexerTests/NewznabTests/NewznabRequestGeneratorFixture.cs index cb2fe419e..59c37ef20 100644 --- a/src/NzbDrone.Core.Test/IndexerTests/NewznabTests/NewznabRequestGeneratorFixture.cs +++ b/src/NzbDrone.Core.Test/IndexerTests/NewznabTests/NewznabRequestGeneratorFixture.cs @@ -339,5 +339,40 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests pageTier2.Url.Query.Should().NotContain("rid=10"); pageTier2.Url.Query.Should().Contain("q="); } + + [Test] + public void should_encode_raw_title() + { + _capabilities.SupportedTvSearchParameters = new[] { "q", "season", "ep" }; + _capabilities.TvTextSearchEngine = "raw"; + _singleEpisodeSearchCriteria.SceneTitles[0] = "Edith & Little"; + + var results = Subject.GetSearchRequests(_singleEpisodeSearchCriteria); + results.Tiers.Should().Be(1); + + var pageTier = results.GetTier(0).First().First(); + + pageTier.Url.Query.Should().Contain("q=Edith%20%26%20Little"); + pageTier.Url.Query.Should().NotContain(" & "); + pageTier.Url.Query.Should().Contain("%26"); + } + + [Test] + public void should_use_clean_title_and_encode() + { + _capabilities.SupportedTvSearchParameters = new[] { "q", "season", "ep" }; + _capabilities.TvTextSearchEngine = "sphinx"; + _singleEpisodeSearchCriteria.SceneTitles[0] = "Edith & Little"; + + var results = Subject.GetSearchRequests(_singleEpisodeSearchCriteria); + results.Tiers.Should().Be(1); + + var pageTier = results.GetTier(0).First().First(); + + pageTier.Url.Query.Should().Contain("q=Edith%20and%20Little"); + pageTier.Url.Query.Should().Contain("and"); + pageTier.Url.Query.Should().NotContain(" & "); + pageTier.Url.Query.Should().NotContain("%26"); + } } } diff --git a/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs b/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs index d453a7479..b3e0d8a36 100644 --- a/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs +++ b/src/NzbDrone.Core/Indexers/Newznab/NewznabRequestGenerator.cs @@ -470,7 +470,8 @@ namespace NzbDrone.Core.Indexers.Newznab private static string NewsnabifyTitle(string title) { - return title.Replace("+", "%20"); + title = title.Replace("+", " "); + return Uri.EscapeDataString(title); }