From 2982e790653f55bef4784bd6b60c6d6668d0b910 Mon Sep 17 00:00:00 2001 From: Mark McDowall Date: Sat, 14 Jul 2012 20:43:14 -0700 Subject: [PATCH] Empty directors and writers won't blowup --- .../Metadata/Xbmc_ForEpisodeFile_Fixture.cs | 26 +++++++++++++++++++ NzbDrone.Core/Providers/Metadata/Xbmc.cs | 4 +-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/NzbDrone.Core.Test/ProviderTests/Metadata/Xbmc_ForEpisodeFile_Fixture.cs b/NzbDrone.Core.Test/ProviderTests/Metadata/Xbmc_ForEpisodeFile_Fixture.cs index c8be387c0..48b8ed3fc 100644 --- a/NzbDrone.Core.Test/ProviderTests/Metadata/Xbmc_ForEpisodeFile_Fixture.cs +++ b/NzbDrone.Core.Test/ProviderTests/Metadata/Xbmc_ForEpisodeFile_Fixture.cs @@ -121,6 +121,16 @@ namespace NzbDrone.Core.Test.ProviderTests.Metadata .Returns(episodes.ToList()); } + private void WithNoDirectors() + { + tvdbSeries.Episodes.ForEach(e => e.Directors = new List()); + } + + private void WithNoWriters() + { + tvdbSeries.Episodes.ForEach(e => e.Writer = new List()); + } + [Test] public void should_not_blowup() { @@ -151,5 +161,21 @@ namespace NzbDrone.Core.Test.ProviderTests.Metadata Mocker.Resolve().CreateForEpisodeFile(episodeFile, tvdbSeries); Mocker.GetMock().Verify(v => v.Download(tvdbSeries.Episodes.First().BannerPath, episodeFile.Path.Replace("avi", "tbn")), Times.Once()); } + + [Test] + public void should_not_blowup_when_director_is_not_found() + { + WithSingleEpisodeFile(); + WithNoDirectors(); + Mocker.Resolve().CreateForEpisodeFile(episodeFile, tvdbSeries); + } + + [Test] + public void should_not_blowup_when_writer_is_not_found() + { + WithSingleEpisodeFile(); + WithNoWriters(); + Mocker.Resolve().CreateForEpisodeFile(episodeFile, tvdbSeries); + } } } \ No newline at end of file diff --git a/NzbDrone.Core/Providers/Metadata/Xbmc.cs b/NzbDrone.Core/Providers/Metadata/Xbmc.cs index 3760a2ac2..f1a585352 100644 --- a/NzbDrone.Core/Providers/Metadata/Xbmc.cs +++ b/NzbDrone.Core/Providers/Metadata/Xbmc.cs @@ -155,8 +155,8 @@ namespace NzbDrone.Core.Providers.Metadata details.Add(new XElement("displayepisode")); details.Add(new XElement("thumb", "http://www.thetvdb.com/banners/" + tvdbEpisode.BannerPath)); details.Add(new XElement("watched", "false")); - details.Add(new XElement("credits", tvdbEpisode.Writer.First())); - details.Add(new XElement("director", tvdbEpisode.Directors.First())); + details.Add(new XElement("credits", tvdbEpisode.Writer.FirstOrDefault())); + details.Add(new XElement("director", tvdbEpisode.Directors.FirstOrDefault())); details.Add(new XElement("rating", tvDbSeries.Rating)); foreach(var actor in tvdbEpisode.GuestStars)