Fixed: Remove on Activity page should now work for Blackhole items.

This commit is contained in:
Taloth Saldono 2015-01-19 23:25:04 +01:00
parent 3dcfcbb400
commit 366f8c5239
4 changed files with 150 additions and 2 deletions

View File

@ -118,6 +118,58 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
items.First().Status.Should().Be(DownloadItemStatus.Downloading); items.First().Status.Should().Be(DownloadItemStatus.Downloading);
} }
[Test]
public void RemoveItem_should_delete_file()
{
GivenCompletedItem();
Mocker.GetMock<IDiskProvider>()
.Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(true);
Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true);
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFile(It.IsAny<string>()), Times.Once());
}
[Test]
public void RemoveItem_should_delete_directory()
{
GivenCompletedItem();
Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true);
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFolder(It.IsAny<string>(), true), Times.Once());
}
[Test]
public void RemoveItem_should_throw_if_unknown_item()
{
Assert.Throws<ArgumentException>(() => Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true));
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFile(It.IsAny<string>()), Times.Never());
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFolder(It.IsAny<string>(), true), Times.Never());
}
[Test]
public void RemoveItem_should_throw_if_deleteData_is_false()
{
GivenCompletedItem();
Assert.Throws<NotSupportedException>(() => Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", false));
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFile(It.IsAny<string>()), Times.Never());
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFolder(It.IsAny<string>(), true), Times.Never());
}
[Test] [Test]
public void should_return_status_with_outputdirs() public void should_return_status_with_outputdirs()
{ {

View File

@ -1,3 +1,5 @@
using System;
using System.IO; using System.IO;
using System.Net; using System.Net;
using System.Linq; using System.Linq;
@ -118,6 +120,58 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.Blackhole
result.Status.Should().Be(DownloadItemStatus.Downloading); result.Status.Should().Be(DownloadItemStatus.Downloading);
} }
[Test]
public void RemoveItem_should_delete_file()
{
GivenCompletedItem();
Mocker.GetMock<IDiskProvider>()
.Setup(c => c.FileExists(It.IsAny<string>()))
.Returns(true);
Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true);
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFile(It.IsAny<string>()), Times.Once());
}
[Test]
public void RemoveItem_should_delete_directory()
{
GivenCompletedItem();
Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true);
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFolder(It.IsAny<string>(), true), Times.Once());
}
[Test]
public void RemoveItem_should_throw_if_unknown_item()
{
Assert.Throws<ArgumentException>(() => Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", true));
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFile(It.IsAny<string>()), Times.Never());
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFolder(It.IsAny<string>(), true), Times.Never());
}
[Test]
public void RemoveItem_should_throw_if_deleteData_is_false()
{
GivenCompletedItem();
Assert.Throws<NotSupportedException>(() => Subject.RemoveItem("_Droned.S01E01.Pilot.1080p.WEB-DL-DRONE_0", false));
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFile(It.IsAny<string>()), Times.Never());
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.DeleteFolder(It.IsAny<string>(), true), Times.Never());
}
[Test] [Test]
public void should_return_status_with_outputdirs() public void should_return_status_with_outputdirs()
{ {

View File

@ -125,7 +125,28 @@ namespace NzbDrone.Core.Download.Clients.TorrentBlackhole
public override void RemoveItem(string downloadId, bool deleteData) public override void RemoveItem(string downloadId, bool deleteData)
{ {
throw new NotSupportedException(); var downloadItem = GetItems().FirstOrDefault(v => v.DownloadId == downloadId);
if (downloadItem == null)
{
throw new ArgumentException(string.Format("Cannot remove DownloadItem {0} because it was not found.", downloadId));
}
if (!deleteData)
{
throw new NotSupportedException("Blackhole cannot remove DownloadItem without deleting the data as well, ignoring.");
}
var outputPath = downloadItem.OutputPath.FullPath;
if (_diskProvider.FileExists(outputPath))
{
_diskProvider.DeleteFile(outputPath);
}
else
{
_diskProvider.DeleteFolder(outputPath, true);
}
} }
public override DownloadClientStatus GetStatus() public override DownloadClientStatus GetStatus()

View File

@ -123,7 +123,28 @@ namespace NzbDrone.Core.Download.Clients.UsenetBlackhole
public override void RemoveItem(string downloadId, bool deleteData) public override void RemoveItem(string downloadId, bool deleteData)
{ {
throw new NotSupportedException(); var downloadItem = GetItems().FirstOrDefault(v => v.DownloadId == downloadId);
if (downloadItem == null)
{
throw new ArgumentException(string.Format("Cannot remove DownloadItem {0} because it was not found.", downloadId));
}
if (!deleteData)
{
throw new NotSupportedException("Blackhole cannot remove DownloadItem without deleting the data as well, ignoring.");
}
var outputPath = downloadItem.OutputPath.FullPath;
if (_diskProvider.FileExists(outputPath))
{
_diskProvider.DeleteFile(outputPath);
}
else
{
_diskProvider.DeleteFolder(outputPath, true);
}
} }
public override DownloadClientStatus GetStatus() public override DownloadClientStatus GetStatus()