From 9ee585a4720e913d35e707ab9692d88863854c95 Mon Sep 17 00:00:00 2001 From: DMKRCY Date: Sat, 18 May 2024 13:16:54 -0500 Subject: [PATCH] Fixed: Ensure ImportResults is not empty when verifying imports (#2746) --- .../ImportFixture.cs | 36 +++++++++++++++++++ .../Download/CompletedDownloadService.cs | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/src/NzbDrone.Core.Test/Download/CompletedDownloadServiceTests/ImportFixture.cs b/src/NzbDrone.Core.Test/Download/CompletedDownloadServiceTests/ImportFixture.cs index 16f6cfd1a..74573ae69 100644 --- a/src/NzbDrone.Core.Test/Download/CompletedDownloadServiceTests/ImportFixture.cs +++ b/src/NzbDrone.Core.Test/Download/CompletedDownloadServiceTests/ImportFixture.cs @@ -383,6 +383,42 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests AssertImported(); } + [Test] + public void should_not_mark_as_imported_if_nothing_was_imported() + { + _trackedDownload.RemoteAlbum.Albums = new List + { + CreateAlbum(1, 1) + }; + + Mocker.GetMock() + .Setup(v => v.ProcessPath(It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny())) + .Returns(new List()); + + var history = Builder.CreateListOfSize(2) + .BuildList(); + + Mocker.GetMock() + .Setup(s => s.FindByDownloadId(It.IsAny())) + .Returns(history); + + Mocker.GetMock() + .Setup(s => s.IsImported(_trackedDownload, history)) + .Returns(true); + + Subject.Import(_trackedDownload); + + AssertImportPending(); + } + + private void AssertImportPending() + { + Mocker.GetMock() + .Verify(v => v.PublishEvent(It.IsAny()), Times.Never()); + + _trackedDownload.State.Should().Be(TrackedDownloadState.ImportPending); + } + private void AssertNotImported() { Mocker.GetMock() diff --git a/src/NzbDrone.Core/Download/CompletedDownloadService.cs b/src/NzbDrone.Core/Download/CompletedDownloadService.cs index 0f27bda99..57d08730f 100644 --- a/src/NzbDrone.Core/Download/CompletedDownloadService.cs +++ b/src/NzbDrone.Core/Download/CompletedDownloadService.cs @@ -166,7 +166,7 @@ namespace NzbDrone.Core.Download public bool VerifyImport(TrackedDownload trackedDownload, List importResults) { - var allTracksImported = importResults.All(c => c.Result == ImportResultType.Imported) || + var allTracksImported = (importResults.Any() && importResults.All(c => c.Result == ImportResultType.Imported)) || importResults.Count(c => c.Result == ImportResultType.Imported) >= Math.Max(1, trackedDownload.RemoteAlbum.Albums.Sum(x => x.AlbumReleases.Value.Where(y => y.Monitored).Sum(z => z.TrackCount)));