diff --git a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index f8b43b823..c406f37b4 100644 --- a/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -153,6 +153,7 @@ + @@ -195,7 +196,7 @@ - + @@ -205,7 +206,7 @@ - + @@ -227,7 +228,7 @@ - + diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest.cs similarity index 99% rename from NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs rename to NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest.cs index 9870924f1..290026385 100644 --- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest.cs +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest.cs @@ -2,9 +2,7 @@ using System; using System.Collections.Generic; -using System.IO; using System.Linq; - using FizzWare.NBuilder; using FluentAssertions; using Moq; @@ -15,11 +13,10 @@ using NzbDrone.Core.Providers.Core; using NzbDrone.Core.Repository; using NzbDrone.Core.Repository.Quality; using NzbDrone.Core.Test.Framework; -using NzbDrone.Test.Common.AutoMoq; using PetaPoco; using TvdbLib.Data; -namespace NzbDrone.Core.Test.ProviderTests +namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests { [TestFixture] // ReSharper disable InconsistentNaming diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs similarity index 98% rename from NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs rename to NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs index c4f767a92..70c185136 100644 --- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_DeleteInvalidEpisodes.cs @@ -2,17 +2,15 @@ using System.Collections.Generic; using System.Linq; - using FizzWare.NBuilder; using FluentAssertions; using NUnit.Framework; using NzbDrone.Core.Providers; using NzbDrone.Core.Repository; using NzbDrone.Core.Test.Framework; -using NzbDrone.Test.Common.AutoMoq; using TvdbLib.Data; -namespace NzbDrone.Core.Test.ProviderTests +namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests { [TestFixture] // ReSharper disable InconsistentNaming diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs similarity index 98% rename from NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs rename to NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs index 5f4b8bd4c..2d726a2fa 100644 --- a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/EpisodeProviderTest_GetEpisodesByParseResult.cs @@ -5,17 +5,14 @@ using System.Collections.Generic; using System.Linq; using FizzWare.NBuilder; using FluentAssertions; -using Moq; using NUnit.Framework; using NzbDrone.Core.Model; using NzbDrone.Core.Providers; using NzbDrone.Core.Repository; using NzbDrone.Core.Test.Framework; using NzbDrone.Test.Common; -using NzbDrone.Test.Common.AutoMoq; -using PetaPoco; -namespace NzbDrone.Core.Test.ProviderTests +namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests { [TestFixture] // ReSharper disable InconsistentNaming diff --git a/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/GetEpisodeBySceneNumberFixture.cs b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/GetEpisodeBySceneNumberFixture.cs new file mode 100644 index 000000000..b4a4726bc --- /dev/null +++ b/NzbDrone.Core.Test/ProviderTests/EpisodeProviderTests/GetEpisodeBySceneNumberFixture.cs @@ -0,0 +1,77 @@ +// ReSharper disable RedundantUsingDirective + +using System.Linq; +using FizzWare.NBuilder; +using FluentAssertions; +using NUnit.Framework; +using NzbDrone.Core.Providers; +using NzbDrone.Core.Repository; +using NzbDrone.Core.Test.Framework; + +namespace NzbDrone.Core.Test.ProviderTests.EpisodeProviderTests +{ + [TestFixture] + // ReSharper disable InconsistentNaming + public class GetEpisodeBySceneNumberFixture : CoreTest + { + private Series _series; + private Episode _episode; + + [SetUp] + public void Setup() + { + WithRealDb(); + + _series = Builder + .CreateNew() + .Build(); + + Db.Insert(_series); + } + + public void WithNullSceneNumbering() + { + _episode = Builder + .CreateNew() + .With(e => e.SeriesId = _series.SeriesId) + .Build(); + + Db.Insert(_episode); + Db.Execute("UPDATE Episodes SET SceneSeasonNumber = NULL, SceneEpisodeNumber = NULL"); + } + + public void WithSceneNumbering() + { + _episode = Builder + .CreateNew() + .With(e => e.SeriesId = _series.SeriesId) + .Build(); + + Db.Insert(_episode); + } + + [Test] + public void should_return_null_if_no_episodes_in_db() + { + Mocker.Resolve().GetEpisodeBySceneNumbering(_series.SeriesId, 1, 1).Should().BeNull(); + } + + [Test] + public void should_return_null_if_no_matching_episode_is_found() + { + WithNullSceneNumbering(); + Mocker.Resolve().GetEpisodeBySceneNumbering(_series.SeriesId, 1, 1).Should().BeNull(); + } + + [Test] + public void should_return_episode_if_matching_episode_is_found() + { + WithSceneNumbering(); + + var result = Mocker.Resolve() + .GetEpisodeBySceneNumbering(_series.SeriesId, _episode.SceneSeasonNumber, _episode.SceneEpisodeNumber); + + result.EpisodeId.Should().Be(_episode.EpisodeId); + } + } +} diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index f5514a698..a675ac0bc 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -191,7 +191,7 @@ namespace NzbDrone.Core.Providers Episode episodeInfo; if (parseResult.SceneSource && parseResult.Series.UseSceneNumbering) - episodeInfo = GetEpisodeFromSceneNumbering(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber); + episodeInfo = GetEpisodeBySceneNumbering(parseResult.Series.SeriesId, parseResult.SeasonNumber, episodeNumber); else { @@ -450,7 +450,7 @@ namespace NzbDrone.Core.Providers _database.UpdateMany(episodes); } - public virtual Episode GetEpisodeFromSceneNumbering(int seriesId, int seasonNumber, int episodeNumber) + public virtual Episode GetEpisodeBySceneNumbering(int seriesId, int seasonNumber, int episodeNumber) { var episode = _database.Fetch(@"SELECT * FROM Episodes INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId