|
|
|
@ -0,0 +1,134 @@
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using FluentAssertions;
|
|
|
|
|
using Moq;
|
|
|
|
|
using NUnit.Framework;
|
|
|
|
|
using NzbDrone.Common.Disk;
|
|
|
|
|
using NzbDrone.Core.Configuration;
|
|
|
|
|
using NzbDrone.Core.DiskSpace;
|
|
|
|
|
using NzbDrone.Core.Test.Framework;
|
|
|
|
|
using NzbDrone.Core.Tv;
|
|
|
|
|
using NzbDrone.Test.Common;
|
|
|
|
|
|
|
|
|
|
namespace NzbDrone.Core.Test.DiskSpace
|
|
|
|
|
{
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class DiskSpaceServiceFixture : CoreTest<DiskSpaceService>
|
|
|
|
|
{
|
|
|
|
|
private string _seriesFolder;
|
|
|
|
|
private string _seriesFolder2;
|
|
|
|
|
private string _droneFactoryFolder;
|
|
|
|
|
|
|
|
|
|
[SetUp]
|
|
|
|
|
public void SetUp()
|
|
|
|
|
{
|
|
|
|
|
_seriesFolder = @"G:\fasdlfsdf\series".AsOsAgnostic();
|
|
|
|
|
_seriesFolder2 = @"G:\fasdlfsdf\series2".AsOsAgnostic();
|
|
|
|
|
_droneFactoryFolder = @"G:\dronefactory".AsOsAgnostic();
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Setup(v => v.GetMounts())
|
|
|
|
|
.Returns(new List<IMount>());
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Setup(v => v.GetPathRoot(It.IsAny<string>()))
|
|
|
|
|
.Returns(@"G:\".AsOsAgnostic());
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Setup(v => v.GetAvailableSpace(It.IsAny<string>()))
|
|
|
|
|
.Returns(0);
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Setup(v => v.GetTotalSize(It.IsAny<string>()))
|
|
|
|
|
.Returns(0);
|
|
|
|
|
|
|
|
|
|
GivenSeries();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GivenSeries(params Series[] series)
|
|
|
|
|
{
|
|
|
|
|
Mocker.GetMock<ISeriesService>()
|
|
|
|
|
.Setup(v => v.GetAllSeries())
|
|
|
|
|
.Returns(series.ToList());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void GivenExistingFolder(string folder)
|
|
|
|
|
{
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Setup(v => v.FolderExists(folder))
|
|
|
|
|
.Returns(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_check_diskspace_for_series_folders()
|
|
|
|
|
{
|
|
|
|
|
GivenSeries(new Series { Path = _seriesFolder });
|
|
|
|
|
|
|
|
|
|
GivenExistingFolder(_seriesFolder);
|
|
|
|
|
|
|
|
|
|
var freeSpace = Subject.GetFreeSpace();
|
|
|
|
|
|
|
|
|
|
freeSpace.Should().NotBeEmpty();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_check_diskspace_for_same_root_folder_only_once()
|
|
|
|
|
{
|
|
|
|
|
GivenSeries(new Series { Path = _seriesFolder }, new Series { Path = _seriesFolder2 });
|
|
|
|
|
|
|
|
|
|
GivenExistingFolder(_seriesFolder);
|
|
|
|
|
GivenExistingFolder(_seriesFolder2);
|
|
|
|
|
|
|
|
|
|
var freeSpace = Subject.GetFreeSpace();
|
|
|
|
|
|
|
|
|
|
freeSpace.Should().HaveCount(1);
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Verify(v => v.GetAvailableSpace(It.IsAny<string>()), Times.Once());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_not_check_diskspace_for_missing_series_folders()
|
|
|
|
|
{
|
|
|
|
|
GivenSeries(new Series { Path = _seriesFolder });
|
|
|
|
|
|
|
|
|
|
var freeSpace = Subject.GetFreeSpace();
|
|
|
|
|
|
|
|
|
|
freeSpace.Should().BeEmpty();
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Verify(v => v.GetAvailableSpace(It.IsAny<string>()), Times.Never());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_check_diskspace_for_dronefactory_folder()
|
|
|
|
|
{
|
|
|
|
|
Mocker.GetMock<IConfigService>()
|
|
|
|
|
.SetupGet(v => v.DownloadedEpisodesFolder)
|
|
|
|
|
.Returns(_droneFactoryFolder);
|
|
|
|
|
|
|
|
|
|
GivenExistingFolder(_droneFactoryFolder);
|
|
|
|
|
|
|
|
|
|
var freeSpace = Subject.GetFreeSpace();
|
|
|
|
|
|
|
|
|
|
freeSpace.Should().NotBeEmpty();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[Test]
|
|
|
|
|
public void should_not_check_diskspace_for_missing_dronefactory_folder()
|
|
|
|
|
{
|
|
|
|
|
Mocker.GetMock<IConfigService>()
|
|
|
|
|
.SetupGet(v => v.DownloadedEpisodesFolder)
|
|
|
|
|
.Returns(_droneFactoryFolder);
|
|
|
|
|
|
|
|
|
|
var freeSpace = Subject.GetFreeSpace();
|
|
|
|
|
|
|
|
|
|
freeSpace.Should().BeEmpty();
|
|
|
|
|
|
|
|
|
|
Mocker.GetMock<IDiskProvider>()
|
|
|
|
|
.Verify(v => v.GetAvailableSpace(It.IsAny<string>()), Times.Never());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|