diff --git a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs index 1d00f678a..b4c38f7cd 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/TrackImport/Specifications/SameFileSpecificationFixture.cs @@ -96,17 +96,8 @@ public void should_be_reject_if_file_size_is_the_same() [Test] public void should_be_accepted_if_file_cannot_be_fetched() { - _localTrack.Book = (Book)Builder.CreateListOfSize(1) - .TheFirst(1) - .With(e => e.Id = 1) - .With(e => e.BookFiles = new LazyLoaded>( - new List - { - new BookFile - { - Path = null - } - })) + _localTrack.Book = Builder.CreateNew() + .With(e => e.BookFiles = new LazyLoaded>((List)null)) .Build(); Subject.IsSatisfiedBy(_localTrack, null).Accepted.Should().BeTrue(); diff --git a/src/NzbDrone.Core/MediaFiles/BookImport/Specifications/SameFileSpecification.cs b/src/NzbDrone.Core/MediaFiles/BookImport/Specifications/SameFileSpecification.cs index c66fe9dce..5a320b983 100644 --- a/src/NzbDrone.Core/MediaFiles/BookImport/Specifications/SameFileSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/BookImport/Specifications/SameFileSpecification.cs @@ -15,9 +15,9 @@ public SameFileSpecification(Logger logger) _logger = logger; } - public Decision IsSatisfiedBy(LocalBook item, DownloadClientItem downloadClientItem) + public Decision IsSatisfiedBy(LocalBook localBook, DownloadClientItem downloadClientItem) { - var bookFiles = item.Book?.BookFiles?.Value; + var bookFiles = localBook.Book?.BookFiles?.Value; if (bookFiles == null || !bookFiles.Any()) { @@ -27,9 +27,17 @@ public Decision IsSatisfiedBy(LocalBook item, DownloadClientItem downloadClientI foreach (var bookFile in bookFiles) { - if (bookFile.Size == item.Size) + if (bookFile == null) { - _logger.Debug("'{0}' Has the same filesize as existing file", item.Path); + var book = localBook.Book; + _logger.Trace("Unable to get book file details from the DB. BookId: {0} BookFileId: {1}", book.Id, bookFile.Id); + + return Decision.Accept(); + } + + if (bookFile.Size == localBook.Size) + { + _logger.Debug("'{0}' Has the same filesize as existing file", localBook.Path); return Decision.Reject("Has the same filesize as existing file"); } }