1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-25 22:46:31 -04:00

Track fully imported downloads in separate history table

New: Improved detection of already imported downloads
Closes #3554
This commit is contained in:
Mark McDowall
2020-03-03 18:09:29 -08:00
committed by Mark McDowall
parent 576275b6da
commit 770b89c2b3
59 changed files with 688 additions and 258 deletions
@@ -59,7 +59,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IHistoryService>()
.Setup(s => s.MostRecentForDownloadId(_trackedDownload.DownloadItem.DownloadId))
.Returns(new History.History());
.Returns(new EpisodeHistory());
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetSeries("Drone.S01E01.HDTV"))
@@ -84,7 +84,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
_trackedDownload.DownloadItem.Title = "Droned Pilot"; // Set a badly named download
Mocker.GetMock<IHistoryService>()
.Setup(s => s.MostRecentForDownloadId(It.Is<string>(i => i == "1234")))
.Returns(new History.History() { SourceTitle = "Droned S01E01" });
.Returns(new EpisodeHistory() { SourceTitle = "Droned S01E01" });
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetSeries(It.IsAny<string>()))
@@ -187,7 +187,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IHistoryService>()
.Setup(s => s.FindByDownloadId(It.IsAny<string>()))
.Returns(new List<History.History>());
.Returns(new List<EpisodeHistory>());
Subject.Import(_trackedDownload);
@@ -213,7 +213,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
new ImportResult(new ImportDecision(new LocalEpisode{Path = @"C:\TestPath\Droned.S01E01.mkv"}),"Test Failure")
});
var history = Builder<History.History>.CreateListOfSize(2)
var history = Builder<EpisodeHistory>.CreateListOfSize(2)
.BuildList();
Mocker.GetMock<IHistoryService>()
@@ -274,7 +274,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
new LocalEpisode {Path = @"C:\TestPath\Droned.S01E02.mkv", Episodes = new List<Episode> { episode2 } }),"Test Failure")
});
var history = Builder<History.History>.CreateListOfSize(2)
var history = Builder<EpisodeHistory>.CreateListOfSize(2)
.BuildList();
Mocker.GetMock<IHistoryService>()
@@ -282,7 +282,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
.Returns(history);
Mocker.GetMock<ITrackedDownloadAlreadyImported>()
.Setup(s => s.IsImported(It.IsAny<TrackedDownload>(), It.IsAny<List<History.History>>()))
.Setup(s => s.IsImported(It.IsAny<TrackedDownload>(), It.IsAny<List<EpisodeHistory>>()))
.Returns(true);
Subject.Import(_trackedDownload);
@@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
Mocker.GetMock<IHistoryService>()
.Setup(s => s.MostRecentForDownloadId(_trackedDownload.DownloadItem.DownloadId))
.Returns(new History.History());
.Returns(new EpisodeHistory());
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetSeries("Drone.S01E01.HDTV"))
@@ -73,7 +73,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
{
Mocker.GetMock<IHistoryService>()
.Setup(s => s.MostRecentForDownloadId(_trackedDownload.DownloadItem.DownloadId))
.Returns((History.History)null);
.Returns((EpisodeHistory)null);
}
private void GivenSeriesMatch()
@@ -89,7 +89,7 @@ namespace NzbDrone.Core.Test.Download.CompletedDownloadServiceTests
_trackedDownload.DownloadItem.Title = "Droned Pilot"; // Set a badly named download
Mocker.GetMock<IHistoryService>()
.Setup(s => s.MostRecentForDownloadId(It.Is<string>(i => i == "1234")))
.Returns(new History.History() { SourceTitle = "Droned S01E01" });
.Returns(new EpisodeHistory() { SourceTitle = "Droned S01E01" });
Mocker.GetMock<IParsingService>()
.Setup(s => s.GetSeries(It.IsAny<string>()))
@@ -62,7 +62,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests
protected void VerifyIdentifiable(DownloadClientItem downloadClientItem)
{
downloadClientItem.DownloadClient.Should().Be(Subject.Definition.Name);
downloadClientItem.DownloadClientInfo.Protocol.Should().Be(Subject.Protocol);
downloadClientItem.DownloadClientInfo.Id.Should().Be(Subject.Definition.Id);
downloadClientItem.DownloadClientInfo.Name.Should().Be(Subject.Definition.Name);
downloadClientItem.DownloadId.Should().NotBeNullOrEmpty();
downloadClientItem.Title.Should().NotBeNullOrEmpty();
}
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
public class ProcessFailedFixture : CoreTest<FailedDownloadService>
{
private TrackedDownload _trackedDownload;
private List<History.History> _grabHistory;
private List<EpisodeHistory> _grabHistory;
[SetUp]
public void Setup()
@@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
.With(h => h.Title = "Drone.S01E01.HDTV")
.Build();
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
_grabHistory = Builder<EpisodeHistory>.CreateListOfSize(2).BuildList();
var remoteEpisode = new RemoteEpisode
{
@@ -46,7 +46,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
Mocker.GetMock<IHistoryService>()
.Setup(s => s.Find(_trackedDownload.DownloadItem.DownloadId, HistoryEventType.Grabbed))
.Setup(s => s.Find(_trackedDownload.DownloadItem.DownloadId, EpisodeHistoryEventType.Grabbed))
.Returns(_grabHistory);
}
@@ -19,7 +19,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
public class ProcessFixture : CoreTest<FailedDownloadService>
{
private TrackedDownload _trackedDownload;
private List<History.History> _grabHistory;
private List<EpisodeHistory> _grabHistory;
[SetUp]
public void Setup()
@@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
.With(h => h.Title = "Drone.S01E01.HDTV")
.Build();
_grabHistory = Builder<History.History>.CreateListOfSize(2).BuildList();
_grabHistory = Builder<EpisodeHistory>.CreateListOfSize(2).BuildList();
var remoteEpisode = new RemoteEpisode
{
@@ -46,7 +46,7 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
Mocker.GetMock<IHistoryService>()
.Setup(s => s.Find(_trackedDownload.DownloadItem.DownloadId, HistoryEventType.Grabbed))
.Setup(s => s.Find(_trackedDownload.DownloadItem.DownloadId, EpisodeHistoryEventType.Grabbed))
.Returns(_grabHistory);
}
@@ -54,8 +54,8 @@ namespace NzbDrone.Core.Test.Download.FailedDownloadServiceTests
private void GivenNoGrabbedHistory()
{
Mocker.GetMock<IHistoryService>()
.Setup(s => s.Find(_trackedDownload.DownloadItem.DownloadId, HistoryEventType.Grabbed))
.Returns(new List<History.History>());
.Setup(s => s.Find(_trackedDownload.DownloadItem.DownloadId, EpisodeHistoryEventType.Grabbed))
.Returns(new List<EpisodeHistory>());
}
[Test]
@@ -15,7 +15,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
private List<Episode> _episodes;
private TrackedDownload _trackedDownload;
private List<History.History> _historyItems;
private List<EpisodeHistory> _historyItems;
[SetUp]
public void Setup()
@@ -30,7 +30,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
.With(t => t.RemoteEpisode = remoteEpisode)
.Build();
_historyItems = new List<History.History>();
_historyItems = new List<EpisodeHistory>();
}
public void GivenEpisodes(int count)
@@ -39,12 +39,12 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
.BuildList());
}
public void GivenHistoryForEpisode(Episode episode, params HistoryEventType[] eventTypes)
public void GivenHistoryForEpisode(Episode episode, params EpisodeHistoryEventType[] eventTypes)
{
foreach (var eventType in eventTypes)
{
_historyItems.Add(
Builder<History.History>.CreateNew()
Builder<EpisodeHistory>.CreateNew()
.With(h => h.EpisodeId = episode.Id)
.With(h => h.EventType = eventType)
.Build()
@@ -67,7 +67,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenEpisodes(1);
GivenHistoryForEpisode(_episodes[0], HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[0], EpisodeHistoryEventType.Grabbed);
Subject.IsImported(_trackedDownload, _historyItems)
.Should()
@@ -79,8 +79,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenEpisodes(2);
GivenHistoryForEpisode(_episodes[0], HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[1], HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[0], EpisodeHistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[1], EpisodeHistoryEventType.Grabbed);
Subject.IsImported(_trackedDownload, _historyItems)
.Should()
@@ -92,8 +92,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenEpisodes(2);
GivenHistoryForEpisode(_episodes[0], HistoryEventType.DownloadFolderImported, HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[1], HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[0], EpisodeHistoryEventType.DownloadFolderImported, EpisodeHistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[1], EpisodeHistoryEventType.Grabbed);
Subject.IsImported(_trackedDownload, _historyItems)
.Should()
@@ -105,7 +105,7 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenEpisodes(1);
GivenHistoryForEpisode(_episodes[0], HistoryEventType.DownloadFolderImported, HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[0], EpisodeHistoryEventType.DownloadFolderImported, EpisodeHistoryEventType.Grabbed);
Subject.IsImported(_trackedDownload, _historyItems)
.Should()
@@ -117,8 +117,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
GivenEpisodes(2);
GivenHistoryForEpisode(_episodes[0], HistoryEventType.DownloadFolderImported, HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[1], HistoryEventType.DownloadFolderImported, HistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[0], EpisodeHistoryEventType.DownloadFolderImported, EpisodeHistoryEventType.Grabbed);
GivenHistoryForEpisode(_episodes[1], EpisodeHistoryEventType.DownloadFolderImported, EpisodeHistoryEventType.Grabbed);
Subject.IsImported(_trackedDownload, _historyItems)
.Should()
@@ -21,8 +21,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
Mocker.GetMock<IHistoryService>()
.Setup(s => s.FindByDownloadId(It.Is<string>(sr => sr == "35238")))
.Returns(new List<History.History>(){
new History.History(){
.Returns(new List<EpisodeHistory>(){
new EpisodeHistory(){
DownloadId = "35238",
SourceTitle = "TV Series S01",
SeriesId = 5,
@@ -61,6 +61,12 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
Title = "The torrent release folder",
DownloadId = "35238",
DownloadClientInfo = new DownloadClientItemClientInfo
{
Protocol = client.Protocol,
Id = client.Id,
Name = client.Name
}
};
var trackedDownload = Subject.TrackDownload(client, item);
@@ -90,8 +96,8 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
Mocker.GetMock<IHistoryService>()
.Setup(s => s.FindByDownloadId(It.Is<string>(sr => sr == "35238")))
.Returns(new List<History.History>(){
new History.History(){
.Returns(new List<EpisodeHistory>(){
new EpisodeHistory(){
DownloadId = "35238",
SourceTitle = "TV Series Special",
SeriesId = 5,
@@ -117,6 +123,12 @@ namespace NzbDrone.Core.Test.Download.TrackedDownloads
{
Title = "The torrent release folder",
DownloadId = "35238",
DownloadClientInfo = new DownloadClientItemClientInfo
{
Protocol = client.Protocol,
Id = client.Id,
Name = client.Name
}
};
var trackedDownload = Subject.TrackDownload(client, item);