diff --git a/NzbDrone.Core.Test/EpisodeProviderTest.cs b/NzbDrone.Core.Test/EpisodeProviderTest.cs index ebe9295b9..9d759303e 100644 --- a/NzbDrone.Core.Test/EpisodeProviderTest.cs +++ b/NzbDrone.Core.Test/EpisodeProviderTest.cs @@ -1272,7 +1272,7 @@ namespace NzbDrone.Core.Test foreach (var withFile in withFiles) { withFile.EpisodeFile.Should().NotBeNull(); - withFile.SeriesTitle.Should().NotBeNullOrEmpty(); + withFile.Series.Title.Should().NotBeNullOrEmpty(); } mocker.VerifyAllMocks(); diff --git a/NzbDrone.Core.Test/MisnamedProviderTest.cs b/NzbDrone.Core.Test/MisnamedProviderTest.cs index 9028e00ff..44b32b91c 100644 --- a/NzbDrone.Core.Test/MisnamedProviderTest.cs +++ b/NzbDrone.Core.Test/MisnamedProviderTest.cs @@ -22,6 +22,10 @@ namespace NzbDrone.Core.Test public void no_misnamed_files() { //Setup + var series = Builder.CreateNew() + .With(s => s.Title = "SeriesTitle") + .Build(); + var episodeFiles = Builder.CreateListOfSize(2) .WhereTheFirst(1) .Has(f => f.EpisodeFileId = 1) @@ -32,14 +36,14 @@ namespace NzbDrone.Core.Test .Build(); var episodes = Builder.CreateListOfSize(2) + .WhereAll() + .Have(e => e.Series = series) .WhereTheFirst(1) .Has(e => e.EpisodeFileId = 1) .Has(e => e.EpisodeFile = episodeFiles[0]) - .Has(e => e.SeriesTitle = "SeriesTitle1") .AndTheNext(1) .Has(e => e.EpisodeFileId = 2) .Has(e => e.EpisodeFile = episodeFiles[1]) - .Has(e => e.SeriesTitle = "SeriesTitle2") .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -48,11 +52,11 @@ namespace NzbDrone.Core.Test .Setup(c => c.EpisodesWithFiles()).Returns(episodes); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List {episodes[0]}, "SeriesTitle1", It.IsAny())) + .Setup(c => c.GetNewFilename(new List {episodes[0]}, "SeriesTitle", It.IsAny())) .Returns("Title1"); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List {episodes[1]}, "SeriesTitle2", It.IsAny())) + .Setup(c => c.GetNewFilename(new List {episodes[1]}, "SeriesTitle", It.IsAny())) .Returns("Title2"); //Act @@ -67,6 +71,10 @@ namespace NzbDrone.Core.Test public void all_misnamed_files() { //Setup + var series = Builder.CreateNew() + .With(s => s.Title = "SeriesTitle") + .Build(); + var episodeFiles = Builder.CreateListOfSize(2) .WhereTheFirst(1) .Has(f => f.EpisodeFileId = 1) @@ -77,14 +85,14 @@ namespace NzbDrone.Core.Test .Build(); var episodes = Builder.CreateListOfSize(2) + .WhereAll() + .Have(e => e.Series = series) .WhereTheFirst(1) .Has(e => e.EpisodeFileId = 1) .Has(e => e.EpisodeFile = episodeFiles[0]) - .Has(e => e.SeriesTitle = "SeriesTitle1") .AndTheNext(1) .Has(e => e.EpisodeFileId = 2) .Has(e => e.EpisodeFile = episodeFiles[1]) - .Has(e => e.SeriesTitle = "SeriesTitle2") .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -93,11 +101,11 @@ namespace NzbDrone.Core.Test .Setup(c => c.EpisodesWithFiles()).Returns(episodes); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[0] }, "SeriesTitle1", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[0] }, "SeriesTitle", It.IsAny())) .Returns("New Title 1"); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[1] }, "SeriesTitle2", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[1] }, "SeriesTitle", It.IsAny())) .Returns("New Title 2"); //Act @@ -112,6 +120,10 @@ namespace NzbDrone.Core.Test public void one_misnamed_file() { //Setup + var series = Builder.CreateNew() + .With(s => s.Title = "SeriesTitle") + .Build(); + var episodeFiles = Builder.CreateListOfSize(2) .WhereTheFirst(1) .Has(f => f.EpisodeFileId = 1) @@ -122,14 +134,14 @@ namespace NzbDrone.Core.Test .Build(); var episodes = Builder.CreateListOfSize(2) + .WhereAll() + .Have(e => e.Series = series) .WhereTheFirst(1) .Has(e => e.EpisodeFileId = 1) .Has(e => e.EpisodeFile = episodeFiles[0]) - .Has(e => e.SeriesTitle = "SeriesTitle1") .AndTheNext(1) .Has(e => e.EpisodeFileId = 2) .Has(e => e.EpisodeFile = episodeFiles[1]) - .Has(e => e.SeriesTitle = "SeriesTitle2") .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -138,11 +150,11 @@ namespace NzbDrone.Core.Test .Setup(c => c.EpisodesWithFiles()).Returns(episodes); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[0] }, "SeriesTitle1", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[0] }, "SeriesTitle", It.IsAny())) .Returns("New Title 1"); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[1] }, "SeriesTitle2", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[1] }, "SeriesTitle", It.IsAny())) .Returns("Title2"); //Act @@ -159,6 +171,10 @@ namespace NzbDrone.Core.Test public void misnamed_multi_episode_file() { //Setup + var series = Builder.CreateNew() + .With(s => s.Title = "SeriesTitle") + .Build(); + var episodeFiles = Builder.CreateListOfSize(2) .WhereTheFirst(1) .Has(f => f.EpisodeFileId = 1) @@ -169,14 +185,14 @@ namespace NzbDrone.Core.Test .Build(); var episodes = Builder.CreateListOfSize(3) + .WhereAll() + .Have(e => e.Series = series) .WhereTheFirst(2) .Has(e => e.EpisodeFileId = 1) .Has(e => e.EpisodeFile = episodeFiles[0]) - .Has(e => e.SeriesTitle = "SeriesTitle1") .AndTheNext(1) .Has(e => e.EpisodeFileId = 2) .Has(e => e.EpisodeFile = episodeFiles[1]) - .Has(e => e.SeriesTitle = "SeriesTitle2") .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -185,11 +201,11 @@ namespace NzbDrone.Core.Test .Setup(c => c.EpisodesWithFiles()).Returns(episodes); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[0], episodes[1] }, "SeriesTitle1", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[0], episodes[1] }, "SeriesTitle", It.IsAny())) .Returns("New Title 1"); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[2] }, "SeriesTitle2", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[2] }, "SeriesTitle", It.IsAny())) .Returns("Title2"); //Act @@ -206,6 +222,10 @@ namespace NzbDrone.Core.Test public void no_misnamed_multi_episode_file() { //Setup + var series = Builder.CreateNew() + .With(s => s.Title = "SeriesTitle") + .Build(); + var episodeFiles = Builder.CreateListOfSize(2) .WhereTheFirst(1) .Has(f => f.EpisodeFileId = 1) @@ -216,14 +236,14 @@ namespace NzbDrone.Core.Test .Build(); var episodes = Builder.CreateListOfSize(3) + .WhereAll() + .Have(e => e.Series = series) .WhereTheFirst(2) .Has(e => e.EpisodeFileId = 1) .Has(e => e.EpisodeFile = episodeFiles[0]) - .Has(e => e.SeriesTitle = "SeriesTitle1") .AndTheNext(1) .Has(e => e.EpisodeFileId = 2) .Has(e => e.EpisodeFile = episodeFiles[1]) - .Has(e => e.SeriesTitle = "SeriesTitle2") .Build(); var mocker = new AutoMoqer(MockBehavior.Strict); @@ -232,11 +252,11 @@ namespace NzbDrone.Core.Test .Setup(c => c.EpisodesWithFiles()).Returns(episodes); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[0], episodes[1] }, "SeriesTitle1", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[0], episodes[1] }, "SeriesTitle", It.IsAny())) .Returns("Title1"); mocker.GetMock() - .Setup(c => c.GetNewFilename(new List { episodes[2] }, "SeriesTitle2", It.IsAny())) + .Setup(c => c.GetNewFilename(new List { episodes[2] }, "SeriesTitle", It.IsAny())) .Returns("Title2"); //Act diff --git a/NzbDrone.Core/NzbDrone.Core.csproj b/NzbDrone.Core/NzbDrone.Core.csproj index 374b85aba..31b2ec1b2 100644 --- a/NzbDrone.Core/NzbDrone.Core.csproj +++ b/NzbDrone.Core/NzbDrone.Core.csproj @@ -182,7 +182,6 @@ - diff --git a/NzbDrone.Core/Providers/EpisodeProvider.cs b/NzbDrone.Core/Providers/EpisodeProvider.cs index 50b2a319a..d03403ec0 100644 --- a/NzbDrone.Core/Providers/EpisodeProvider.cs +++ b/NzbDrone.Core/Providers/EpisodeProvider.cs @@ -177,7 +177,7 @@ namespace NzbDrone.Core.Providers public virtual IList EpisodesWithFiles() { - var episodes = _database.Fetch(@"SELECT Episodes.*, Series.Title as SeriesTitle, EpisodeFiles.* FROM Episodes + var episodes = _database.Fetch(@"SELECT Episodes.*, Series.*, EpisodeFiles.* FROM Episodes INNER JOIN Series ON Episodes.SeriesId = Series.SeriesId INNER JOIN EpisodeFiles ON Episodes.EpisodeFileId = EpisodeFiles.EpisodeFileId"); diff --git a/NzbDrone.Core/Providers/MisnamedProvider.cs b/NzbDrone.Core/Providers/MisnamedProvider.cs index efc562069..3963fbea8 100644 --- a/NzbDrone.Core/Providers/MisnamedProvider.cs +++ b/NzbDrone.Core/Providers/MisnamedProvider.cs @@ -36,7 +36,7 @@ namespace NzbDrone.Core.Providers var misnamedFilesSelect = episodesWithFiles.AsParallel().Where( w => w.First().EpisodeFile.Path != - _mediaFileProvider.GetNewFilename(w.Select(e => e).ToList(), w.First().SeriesTitle, + _mediaFileProvider.GetNewFilename(w.Select(e => e).ToList(), w.First().Series.Title, w.First().EpisodeFile.Quality)).Skip(Math.Max(pageSize * (pageNumber - 1), 0)).Take(pageSize); //Process the episodes @@ -45,7 +45,7 @@ namespace NzbDrone.Core.Providers var episodes = f.Select(e => e).ToList(); var firstEpisode = episodes[0]; var properName = _mediaFileProvider.GetNewFilename(episodes, - firstEpisode.SeriesTitle, + firstEpisode.Series.Title, firstEpisode.EpisodeFile.Quality); var currentName = Path.GetFileNameWithoutExtension(firstEpisode.EpisodeFile.Path); @@ -58,7 +58,7 @@ namespace NzbDrone.Core.Providers EpisodeFileId = firstEpisode.EpisodeFileId, ProperName = properName, SeriesId = firstEpisode.SeriesId, - SeriesTitle = firstEpisode.SeriesTitle + SeriesTitle = firstEpisode.Series.Title }); } }); diff --git a/NzbDrone.Core/Repository/Episode.cs b/NzbDrone.Core/Repository/Episode.cs index 5c0e4b06c..12dc398d3 100644 --- a/NzbDrone.Core/Repository/Episode.cs +++ b/NzbDrone.Core/Repository/Episode.cs @@ -53,15 +53,12 @@ namespace NzbDrone.Core.Repository } } - [Ignore] + [ResultColumn] public Series Series { get; set; } [ResultColumn] public EpisodeFile EpisodeFile { get; set; } - [ResultColumn] - public string SeriesTitle { get; set; } - public override string ToString() { string seriesTitle = Series == null ? "[NULL]" : Series.Title;