diff --git a/src/Lidarr.Api.V1/Indexers/ReleaseModule.cs b/src/Lidarr.Api.V1/Indexers/ReleaseModule.cs index 46ba1c2fc..a2d28bd7d 100644 --- a/src/Lidarr.Api.V1/Indexers/ReleaseModule.cs +++ b/src/Lidarr.Api.V1/Indexers/ReleaseModule.cs @@ -159,9 +159,8 @@ namespace Lidarr.Api.V1.Indexers catch (Exception ex) { _logger.Error(ex, "Album search failed"); + throw new NzbDroneClientException(HttpStatusCode.InternalServerError, ex.Message); } - - return new List(); } private List GetArtistReleases(int artistId) @@ -176,9 +175,8 @@ namespace Lidarr.Api.V1.Indexers catch (Exception ex) { _logger.Error(ex, "Artist search failed"); + throw new NzbDroneClientException(HttpStatusCode.InternalServerError, ex.Message); } - - return new List(); } private List GetRss() diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/DownloadDecisionMakerFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/DownloadDecisionMakerFixture.cs index 0f5254933..fe87f6064 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/DownloadDecisionMakerFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/DownloadDecisionMakerFixture.cs @@ -152,19 +152,17 @@ namespace NzbDrone.Core.Test.DecisionEngineTests GivenSpecifications(_pass1, _pass2, _pass3); _reports[0].Title = "Not parsable"; - var results = Subject.GetRssDecision(_reports).ToList(); + Subject.GetRssDecision(_reports).ToList(); Mocker.GetMock().Verify(c => c.Map(It.IsAny(), It.IsAny()), Times.Never()); _pass1.Verify(c => c.IsSatisfiedBy(It.IsAny(), null), Times.Never()); _pass2.Verify(c => c.IsSatisfiedBy(It.IsAny(), null), Times.Never()); _pass3.Verify(c => c.IsSatisfiedBy(It.IsAny(), null), Times.Never()); - - results.Should().BeEmpty(); } [Test] - public void should_not_attempt_to_map_album_artist_title_is_blank() + public void should_not_attempt_to_map_album_if_artist_title_is_blank() { GivenSpecifications(_pass1, _pass2, _pass3); _reports[0].Title = "2013 - Night Visions"; @@ -180,6 +178,24 @@ namespace NzbDrone.Core.Test.DecisionEngineTests results.Should().BeEmpty(); } + [Test] + public void should_return_rejected_result_for_unparsable_search() + { + GivenSpecifications(_pass1, _pass2, _pass3); + _reports[0].Title = "1937 - Snow White and the Seven Dwarves"; + + var artist = new Artist { Name = "Some Artist" }; + var albums = new List { new Album { Title = "Some Album" } }; + + Subject.GetSearchDecision(_reports, new AlbumSearchCriteria { Artist = artist, Albums = albums }).ToList(); + + Mocker.GetMock().Verify(c => c.Map(It.IsAny(), It.IsAny()), Times.Never()); + + _pass1.Verify(c => c.IsSatisfiedBy(It.IsAny(), null), Times.Never()); + _pass2.Verify(c => c.IsSatisfiedBy(It.IsAny(), null), Times.Never()); + _pass3.Verify(c => c.IsSatisfiedBy(It.IsAny(), null), Times.Never()); + } + [Test] public void should_not_attempt_to_make_decision_if_artist_is_unknown() { diff --git a/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs b/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs index 897db56e4..28dea9b07 100644 --- a/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs +++ b/src/NzbDrone.Core/DecisionEngine/DownloadDecisionMaker.cs @@ -140,6 +140,28 @@ namespace NzbDrone.Core.DecisionEngine } } } + + if (searchCriteria != null) + { + if (parsedAlbumInfo == null) + { + parsedAlbumInfo = new ParsedAlbumInfo + { + Quality = QualityParser.ParseQuality(report.Title, null, 0) + }; + } + + if (parsedAlbumInfo.ArtistName.IsNullOrWhiteSpace()) + { + var remoteAlbum = new RemoteAlbum + { + Release = report, + ParsedAlbumInfo = parsedAlbumInfo + }; + + decision = new DownloadDecision(remoteAlbum, new Rejection("Unable to parse release")); + } + } } catch (Exception e) {