diff --git a/src/NzbDrone.Core.Test/DataAugmentation/SceneNumbering/XemServiceFixture.cs b/src/NzbDrone.Core.Test/DataAugmentation/SceneNumbering/XemServiceFixture.cs index 3f263c6dd1..5ad5e40e87 100644 --- a/src/NzbDrone.Core.Test/DataAugmentation/SceneNumbering/XemServiceFixture.cs +++ b/src/NzbDrone.Core.Test/DataAugmentation/SceneNumbering/XemServiceFixture.cs @@ -5,6 +5,7 @@ using FluentAssertions; using Moq; using NUnit.Framework; +using NzbDrone.Common.Extensions; using NzbDrone.Core.DataAugmentation.Xem; using NzbDrone.Core.DataAugmentation.Xem.Model; using NzbDrone.Core.Test.Framework; @@ -98,7 +99,6 @@ private void AddTvdbMapping(int sceneAbsolute, int sceneSeason, int sceneEpisode }); } - [Test] public void should_not_fetch_scenenumbering_if_not_listed() { @@ -308,5 +308,19 @@ public void should_not_extrapolate_matching_future_seasons() episode.SceneSeasonNumber.Should().NotHaveValue(); episode.SceneEpisodeNumber.Should().NotHaveValue(); } + + [Test] + public void should_skip_mapping_when_scene_information_is_all_zero() + { + GivenTvdbMappings(); + + AddTvdbMapping(0, 0, 0, 8, 3, 1); // 3x01 -> 3x01 + AddTvdbMapping(0, 0, 0, 9, 3, 2); // 3x02 -> 3x02 + + Subject.Handle(new SeriesUpdatedEvent(_series)); + + Mocker.GetMock() + .Verify(v => v.UpdateEpisodes(It.Is>(e => e.Any(c => c.SceneAbsoluteEpisodeNumber == 0 && c.SceneSeasonNumber == 0 && c.SceneEpisodeNumber == 0))), Times.Never()); + } } } diff --git a/src/NzbDrone.Core/DataAugmentation/Xem/XemService.cs b/src/NzbDrone.Core/DataAugmentation/Xem/XemService.cs index c80cd8c920..efd30cf5b6 100644 --- a/src/NzbDrone.Core/DataAugmentation/Xem/XemService.cs +++ b/src/NzbDrone.Core/DataAugmentation/Xem/XemService.cs @@ -61,7 +61,15 @@ private void PerformUpdate(Series series) if (episode == null) { - _logger.Debug("Information hasn't been added to TheTVDB yet, skipping."); + _logger.Debug("Information hasn't been added to TheTVDB yet, skipping"); + continue; + } + + if (mapping.Scene.Absolute == 0 && + mapping.Scene.Season == 0 && + mapping.Scene.Episode == 0) + { + _logger.Debug("Mapping for {0} S{1:00}E{2:00} is invalid, skipping", series, mapping.Tvdb.Season, mapping.Tvdb.Episode); continue; }