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:
committed by
Mark McDowall
parent
576275b6da
commit
770b89c2b3
@@ -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]
|
||||
|
||||
+12
-12
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user