|
|
|
@ -11,6 +11,7 @@ using NzbDrone.Core.Test.Framework;
|
|
|
|
|
using NzbDrone.Core.Tv;
|
|
|
|
|
using NzbDrone.Core.Indexers;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using NzbDrone.Core.Tv.Events;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|
|
|
|
{
|
|
|
|
@ -144,5 +145,185 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
|
|
|
|
|
trackedDownload.RemoteEpisode.ParsedEpisodeInfo.SeasonNumber.Should().Be(0);
|
|
|
|
|
trackedDownload.RemoteEpisode.MappedSeasonNumber.Should().Be(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_unmap_tracked_download_if_episode_deleted()
|
|
|
|
|
{
|
|
|
|
|
GivenDownloadHistory();
|
|
|
|
|
|
|
|
|
|
var remoteEpisode = new RemoteEpisode
|
|
|
|
|
{
|
|
|
|
|
Series = new Series() { Id = 5 },
|
|
|
|
|
Episodes = new List<Episode> { new Episode { Id = 4 } },
|
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo()
|
|
|
|
|
{
|
|
|
|
|
SeriesTitle = "TV Series",
|
|
|
|
|
SeasonNumber = 1,
|
|
|
|
|
EpisodeNumbers = new[] { 1 }
|
|
|
|
|
},
|
|
|
|
|
MappedSeasonNumber = 0
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IParsingService>()
|
|
|
|
|
.Setup(s => s.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), null))
|
|
|
|
|
.Returns(remoteEpisode);
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IHistoryService>()
|
|
|
|
|
.Setup(s => s.FindByDownloadId(It.IsAny<string>()))
|
|
|
|
|
.Returns(new List<EpisodeHistory>());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var client = new DownloadClientDefinition()
|
|
|
|
|
{
|
|
|
|
|
Id = 1,
|
|
|
|
|
Protocol = DownloadProtocol.Torrent
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var item = new DownloadClientItem()
|
|
|
|
|
{
|
|
|
|
|
Title = "TV Series - S01E01",
|
|
|
|
|
DownloadId = "12345",
|
|
|
|
|
DownloadClientInfo = new DownloadClientItemClientInfo
|
|
|
|
|
{
|
|
|
|
|
Id = 1,
|
|
|
|
|
Type = "Blackhole",
|
|
|
|
|
Name = "Blackhole Client",
|
|
|
|
|
Protocol = DownloadProtocol.Torrent
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Subject.TrackDownload(client, item);
|
|
|
|
|
Subject.GetTrackedDownloads().Should().HaveCount(1);
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IParsingService>()
|
|
|
|
|
.Setup(s => s.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), null))
|
|
|
|
|
.Returns(default(RemoteEpisode));
|
|
|
|
|
|
|
|
|
|
Subject.Handle(new EpisodeInfoRefreshedEvent(remoteEpisode.Series, new List<Episode>(), new List<Episode>(), remoteEpisode.Episodes));
|
|
|
|
|
|
|
|
|
|
var trackedDownloads = Subject.GetTrackedDownloads();
|
|
|
|
|
trackedDownloads.Should().HaveCount(1);
|
|
|
|
|
trackedDownloads.First().RemoteEpisode.Should().BeNull();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_not_throw_when_processing_deleted_episodes()
|
|
|
|
|
{
|
|
|
|
|
GivenDownloadHistory();
|
|
|
|
|
|
|
|
|
|
var remoteEpisode = new RemoteEpisode
|
|
|
|
|
{
|
|
|
|
|
Series = new Series() { Id = 5 },
|
|
|
|
|
Episodes = new List<Episode> { new Episode { Id = 4 } },
|
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo()
|
|
|
|
|
{
|
|
|
|
|
SeriesTitle = "TV Series",
|
|
|
|
|
SeasonNumber = 1,
|
|
|
|
|
EpisodeNumbers = new[] { 1 }
|
|
|
|
|
},
|
|
|
|
|
MappedSeasonNumber = 0
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IParsingService>()
|
|
|
|
|
.Setup(s => s.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), null))
|
|
|
|
|
.Returns(default(RemoteEpisode));
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IHistoryService>()
|
|
|
|
|
.Setup(s => s.FindByDownloadId(It.IsAny<string>()))
|
|
|
|
|
.Returns(new List<EpisodeHistory>());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var client = new DownloadClientDefinition()
|
|
|
|
|
{
|
|
|
|
|
Id = 1,
|
|
|
|
|
Protocol = DownloadProtocol.Torrent
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var item = new DownloadClientItem()
|
|
|
|
|
{
|
|
|
|
|
Title = "TV Series - S01E01",
|
|
|
|
|
DownloadId = "12345",
|
|
|
|
|
DownloadClientInfo = new DownloadClientItemClientInfo
|
|
|
|
|
{
|
|
|
|
|
Id = 1,
|
|
|
|
|
Type = "Blackhole",
|
|
|
|
|
Name = "Blackhole Client",
|
|
|
|
|
Protocol = DownloadProtocol.Torrent
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Subject.TrackDownload(client, item);
|
|
|
|
|
Subject.GetTrackedDownloads().Should().HaveCount(1);
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IParsingService>()
|
|
|
|
|
.Setup(s => s.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), null))
|
|
|
|
|
.Returns(default(RemoteEpisode));
|
|
|
|
|
|
|
|
|
|
Subject.Handle(new EpisodeInfoRefreshedEvent(remoteEpisode.Series, new List<Episode>(), new List<Episode>(), remoteEpisode.Episodes));
|
|
|
|
|
|
|
|
|
|
var trackedDownloads = Subject.GetTrackedDownloads();
|
|
|
|
|
trackedDownloads.Should().HaveCount(1);
|
|
|
|
|
trackedDownloads.First().RemoteEpisode.Should().BeNull();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_not_throw_when_processing_deleted_series()
|
|
|
|
|
{
|
|
|
|
|
GivenDownloadHistory();
|
|
|
|
|
|
|
|
|
|
var remoteEpisode = new RemoteEpisode
|
|
|
|
|
{
|
|
|
|
|
Series = new Series() { Id = 5 },
|
|
|
|
|
Episodes = new List<Episode> { new Episode { Id = 4 } },
|
|
|
|
|
ParsedEpisodeInfo = new ParsedEpisodeInfo()
|
|
|
|
|
{
|
|
|
|
|
SeriesTitle = "TV Series",
|
|
|
|
|
SeasonNumber = 1,
|
|
|
|
|
EpisodeNumbers = new[] { 1 }
|
|
|
|
|
},
|
|
|
|
|
MappedSeasonNumber = 0
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IParsingService>()
|
|
|
|
|
.Setup(s => s.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), null))
|
|
|
|
|
.Returns(default(RemoteEpisode));
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IHistoryService>()
|
|
|
|
|
.Setup(s => s.FindByDownloadId(It.IsAny<string>()))
|
|
|
|
|
.Returns(new List<EpisodeHistory>());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var client = new DownloadClientDefinition()
|
|
|
|
|
{
|
|
|
|
|
Id = 1,
|
|
|
|
|
Protocol = DownloadProtocol.Torrent
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
var item = new DownloadClientItem()
|
|
|
|
|
{
|
|
|
|
|
Title = "TV Series - S01E01",
|
|
|
|
|
DownloadId = "12345",
|
|
|
|
|
DownloadClientInfo = new DownloadClientItemClientInfo
|
|
|
|
|
{
|
|
|
|
|
Id = 1,
|
|
|
|
|
Type = "Blackhole",
|
|
|
|
|
Name = "Blackhole Client",
|
|
|
|
|
Protocol = DownloadProtocol.Torrent
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
Subject.TrackDownload(client, item);
|
|
|
|
|
Subject.GetTrackedDownloads().Should().HaveCount(1);
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IParsingService>()
|
|
|
|
|
.Setup(s => s.Map(It.IsAny<ParsedEpisodeInfo>(), It.IsAny<int>(), It.IsAny<int>(), null))
|
|
|
|
|
.Returns(default(RemoteEpisode));
|
|
|
|
|
|
|
|
|
|
Subject.Handle(new SeriesDeletedEvent(remoteEpisode.Series, true, true));
|
|
|
|
|
|
|
|
|
|
var trackedDownloads = Subject.GetTrackedDownloads();
|
|
|
|
|
trackedDownloads.Should().HaveCount(1);
|
|
|
|
|
trackedDownloads.First().RemoteEpisode.Should().BeNull();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|