diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs index 52183b8ac..973a58eaa 100644 --- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs @@ -127,7 +127,6 @@ namespace NzbDrone.Core.Test.ProviderTests ep.Should().HaveCount(2); Db.Fetch().Should().HaveCount(2); ep.First().ShouldHave().AllPropertiesBut(e => e.Series); - parseResult.EpisodeTitle.Should().Be(fakeEpisode.Title); } [Test] @@ -313,5 +312,77 @@ namespace NzbDrone.Core.Test.ProviderTests episodes.Should().BeEmpty(); Db.Fetch().Should().BeEmpty(); } + + [Test] + public void GetEpisodeParseResult_should_return_multiple_titles_for_multiple_episodes() + { + WithRealDb(); + + var fakeEpisode = Builder.CreateNew() + .With(e => e.SeriesId = 1) + .With(e => e.SeasonNumber = 2) + .With(e => e.EpisodeNumber = 10) + .With(e => e.Title = "Title1") + .Build(); + + var fakeEpisode2 = Builder.CreateNew() + .With(e => e.SeriesId = 1) + .With(e => e.SeasonNumber = 2) + .With(e => e.EpisodeNumber = 11) + .With(e => e.Title = "Title2") + .Build(); + + var fakeSeries = Builder.CreateNew().Build(); + + Db.Insert(fakeEpisode); + Db.Insert(fakeEpisode2); + Db.Insert(fakeSeries); + + var parseResult = new EpisodeParseResult + { + Series = fakeSeries, + SeasonNumber = 2, + EpisodeNumbers = new List { 10, 11 } + }; + + var ep = Mocker.Resolve().GetEpisodesByParseResult(parseResult); + + ep.Should().HaveCount(2); + Db.Fetch().Should().HaveCount(2); + ep.First().ShouldHave().AllPropertiesBut(e => e.Series); + parseResult.EpisodeTitle.Should().Be(fakeEpisode.Title + " + " + fakeEpisode2.Title); + } + + [Test] + public void GetEpisodeParseResult_should_return_single_title_for_single_episode() + { + WithRealDb(); + + var fakeEpisode = Builder.CreateNew() + .With(e => e.SeriesId = 1) + .With(e => e.SeasonNumber = 2) + .With(e => e.EpisodeNumber = 10) + .With(e => e.Title = "Title1") + .Build(); + + var fakeSeries = Builder.CreateNew().Build(); + + Db.Insert(fakeEpisode); + Db.Insert(fakeSeries); + + var parseResult = new EpisodeParseResult + { + Series = fakeSeries, + SeasonNumber = 2, + EpisodeNumbers = new List { 10 } + }; + + var ep = Mocker.Resolve().GetEpisodesByParseResult(parseResult); + + ep.Should().HaveCount(1); + Db.Fetch().Should().HaveCount(1); + ep.First().ShouldHave().AllPropertiesBut(e => e.Series); + parseResult.EpisodeTitle.Should().Be(fakeEpisode.Title); + } } } diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index ab9747f82..e99437667 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -161,6 +161,7 @@ namespace NzbDrone.Core.Providers if (episodeInfo != null) { result.Add(episodeInfo); + parseResult.EpisodeTitle = episodeInfo.Title; } return result; @@ -199,7 +200,8 @@ namespace NzbDrone.Core.Providers if (episodeInfo != null) { result.Add(episodeInfo); - parseResult.EpisodeTitle = episodeInfo.Title; + parseResult.EpisodeTitle += String.Format(" + {0}", episodeInfo.Title); + parseResult.EpisodeTitle = parseResult.EpisodeTitle.Trim('+', ' '); } else {