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