using System.Collections.Generic; using FizzWare.NBuilder; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Common.Disk; using NzbDrone.Core.Configuration; using NzbDrone.Core.DecisionEngine; using NzbDrone.Core.Download; using NzbDrone.Core.Download.TrackedDownloads; using NzbDrone.Core.History; using NzbDrone.Core.MediaFiles; using NzbDrone.Core.MediaFiles.EpisodeImport; using NzbDrone.Core.Messaging.Events; using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Test.Framework; using NzbDrone.Core.Tv; using NzbDrone.Test.Common; using NzbDrone.Core.Indexers; using System.Linq; namespace NzbDrone.Core.Test.Download { [TestFixture] public class TrackedDownloadServiceFixture : CoreTest { private void GivenAHistoryWithADownload() { Mocker.GetMock() .Setup(s => s.FindByDownloadId(It.Is(sr => sr == "35238"))) .Returns(new List(){ new History.History(){ DownloadId = "35238", SourceTitle = "Tv Series S01", SeriesId = 5, EpisodeId = 4 } }); } [Test] public void should_track_downloads_using_the_source_title_if_it_cannot_be_found_using_the_download_title() { GivenAHistoryWithADownload(); var remoteEpisode = new RemoteEpisode { Series = new Series() { Id = 5 }, Episodes = new List { new Episode { Id = 4 } }, ParsedEpisodeInfo = new ParsedEpisodeInfo() { SeriesTitle = "tvseries", SeasonNumber = 1 } }; Mocker.GetMock() .Setup(s => s.Map(It.Is(i => i.SeasonNumber == 1 && i.SeriesTitle == "tvseries"), It.IsAny(), It.IsAny>())) .Returns(remoteEpisode); var client = new DownloadClientDefinition() { Id = 1, Protocol = DownloadProtocol.Torrent }; var item = new DownloadClientItem() { Title = "The torrent release folder", DownloadId = "35238", }; var trackedDownload = Subject.TrackDownload(client, item); trackedDownload.RemoteEpisode.Series.Id.Should().Be(5); trackedDownload.RemoteEpisode.Episodes.First().Id.Should().Be(4); trackedDownload.RemoteEpisode.ParsedEpisodeInfo.SeasonNumber.Should().Be(1); trackedDownload.RemoteEpisode.ParsedEpisodeInfo.SeriesTitle.Should().Be("tvseries"); } } }