diff --git a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/SameFileSpecificationFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/SameFileSpecificationFixture.cs index 01853ee3b..1c52b0740 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/SameFileSpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/EpisodeImport/Specifications/SameFileSpecificationFixture.cs @@ -3,6 +3,7 @@ using FizzWare.NBuilder; using FluentAssertions; using Marr.Data; using NUnit.Framework; +using NzbDrone.Core.Datastore; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.EpisodeImport.Specifications; using NzbDrone.Core.Parser.Model; @@ -92,5 +93,18 @@ namespace NzbDrone.Core.Test.MediaFiles.EpisodeImport.Specifications Subject.IsSatisfiedBy(_localEpisode, null).Accepted.Should().BeFalse(); } + + [Test] + public void should_be_accepted_if_file_cannot_be_fetched() + { + _localEpisode.Episodes = Builder.CreateListOfSize(1) + .TheFirst(1) + .With(e => e.EpisodeFileId = 1) + .With(e => e.EpisodeFile = new LazyLoaded((EpisodeFile)null)) + .Build() + .ToList(); + + Subject.IsSatisfiedBy(_localEpisode, null).Accepted.Should().BeTrue(); + } } } \ No newline at end of file diff --git a/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/SameFileSpecification.cs b/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/SameFileSpecification.cs index 9876ff492..1aa54e804 100644 --- a/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/SameFileSpecification.cs +++ b/src/NzbDrone.Core/MediaFiles/EpisodeImport/Specifications/SameFileSpecification.cs @@ -30,6 +30,16 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications return Decision.Accept(); } + var episodeFile = episodeFiles.First().Value; + + if (episodeFile == null) + { + var episode = localEpisode.Episodes.First(); + _logger.Trace("Unable to get episode file details from the DB. EpisodeId: {0} EpisodeFileId: {1}", episode.Id, episode.EpisodeFileId); + + return Decision.Accept(); + } + if (episodeFiles.First().Value.Size == localEpisode.Size) { _logger.Debug("'{0}' Has the same filesize as existing file", localEpisode.Path);