From 4cbb59d4e8c72e5b1da8bf58b1364c5828fafe48 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Mon, 15 Sep 2014 16:46:12 -0700 Subject: [PATCH] Episode file import fixes Fixed: Import event when file doesn't have a valid scene name Fixed: Filename when file doesn't have a valid scene name --- .../HistoryTests/HistoryServiceFixture.cs | 32 ++++++++++++++++++- .../NzbDrone.Core.Test.csproj | 1 - .../OrganizerTests/FileNameBuilderFixture.cs | 11 +++++++ src/NzbDrone.Core/History/HistoryService.cs | 2 +- .../Organizer/FileNameBuilder.cs | 5 +++ .../Details/HistoryDetailsViewTemplate.hbs | 2 +- 6 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs b/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs index c7ea148ef..5545242b2 100644 --- a/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs +++ b/src/NzbDrone.Core.Test/HistoryTests/HistoryServiceFixture.cs @@ -1,4 +1,11 @@ -using NUnit.Framework; +using System.IO; +using System.Linq; +using FizzWare.NBuilder; +using Moq; +using NUnit.Framework; +using NzbDrone.Core.MediaFiles; +using NzbDrone.Core.MediaFiles.Events; +using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Profiles; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.History; @@ -6,6 +13,7 @@ using NzbDrone.Core.Qualities; using System.Collections.Generic; using NzbDrone.Core.Test.Qualities; using FluentAssertions; +using NzbDrone.Core.Tv; namespace NzbDrone.Core.Test.HistoryTests { @@ -56,5 +64,27 @@ namespace NzbDrone.Core.Test.HistoryTests quality.Should().Be(new QualityModel(Quality.DVD)); } + + [Test] + public void should_use_file_name_for_source_title_if_scene_name_is_null() + { + var series = Builder.CreateNew().Build(); + var episodes = Builder.CreateListOfSize(1).Build().ToList(); + var episodeFile = Builder.CreateNew() + .With(f => f.SceneName = null) + .Build(); + + var localEpisode = new LocalEpisode + { + Series = series, + Episodes = episodes, + Path = @"C:\Test\Unsorted\Series.s01e01.mkv" + }; + + Subject.Handle(new EpisodeImportedEvent(localEpisode, episodeFile, true)); + + Mocker.GetMock() + .Verify(v => v.Insert(It.Is(h => h.SourceTitle == Path.GetFileNameWithoutExtension(localEpisode.Path)))); + } } } \ No newline at end of file diff --git a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj index 7165062a6..8d820a3eb 100644 --- a/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj +++ b/src/NzbDrone.Core.Test/NzbDrone.Core.Test.csproj @@ -314,7 +314,6 @@ sqlite3.dll Always - App.config diff --git a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderFixture.cs b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderFixture.cs index e1b1843d8..708fc57c7 100644 --- a/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderFixture.cs +++ b/src/NzbDrone.Core.Test/OrganizerTests/FileNameBuilderFixture.cs @@ -233,6 +233,17 @@ namespace NzbDrone.Core.Test.OrganizerTests .Should().Be(Path.GetFileNameWithoutExtension(_episodeFile.RelativePath)); } + [Test] + public void use_path_when_sceneName_and_relative_path_are_null() + { + _namingConfig.RenameEpisodes = false; + _episodeFile.RelativePath = null; + _episodeFile.Path = @"C:\Test\Unsorted\Series - S01E01 - Test"; + + Subject.BuildFileName(new List { _episode1 }, _series, _episodeFile) + .Should().Be(Path.GetFileNameWithoutExtension(_episodeFile.Path)); + } + [Test] public void use_file_name_when_sceneName_is_not_null() { diff --git a/src/NzbDrone.Core/History/HistoryService.cs b/src/NzbDrone.Core/History/HistoryService.cs index 18c747ac9..941b5b9e3 100644 --- a/src/NzbDrone.Core/History/HistoryService.cs +++ b/src/NzbDrone.Core/History/HistoryService.cs @@ -167,7 +167,7 @@ namespace NzbDrone.Core.History EventType = HistoryEventType.DownloadFolderImported, Date = DateTime.UtcNow, Quality = message.EpisodeInfo.Quality, - SourceTitle = message.ImportedEpisode.SceneName, + SourceTitle = message.ImportedEpisode.SceneName ?? Path.GetFileNameWithoutExtension(message.EpisodeInfo.Path), SeriesId = message.ImportedEpisode.SeriesId, EpisodeId = episode.Id }; diff --git a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs index d8cc5fc94..5c4081523 100644 --- a/src/NzbDrone.Core/Organizer/FileNameBuilder.cs +++ b/src/NzbDrone.Core/Organizer/FileNameBuilder.cs @@ -80,6 +80,11 @@ namespace NzbDrone.Core.Organizer { if (episodeFile.SceneName.IsNullOrWhiteSpace()) { + if (episodeFile.RelativePath.IsNullOrWhiteSpace()) + { + return Path.GetFileNameWithoutExtension(episodeFile.Path); + } + return Path.GetFileNameWithoutExtension(episodeFile.RelativePath); } diff --git a/src/UI/History/Details/HistoryDetailsViewTemplate.hbs b/src/UI/History/Details/HistoryDetailsViewTemplate.hbs index db2fe1327..96df65a44 100644 --- a/src/UI/History/Details/HistoryDetailsViewTemplate.hbs +++ b/src/UI/History/Details/HistoryDetailsViewTemplate.hbs @@ -90,7 +90,7 @@ {{/if_eq}} {{#if_eq reason compare="Upgrade"}} - File was deleted to imported an upgrade + File was deleted to import an upgrade {{/if_eq}} {{/with}}