Free space check should use series' parent directory

This commit is contained in:
Mark McDowall 2013-08-12 08:29:01 -07:00
parent f23c7e94ff
commit 4ea35ae626
2 changed files with 18 additions and 2 deletions

View File

@ -1,4 +1,5 @@
using System; using System;
using System.IO;
using System.Linq; using System.Linq;
using FizzWare.NBuilder; using FizzWare.NBuilder;
using FluentAssertions; using FluentAssertions;
@ -19,12 +20,14 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests
{ {
private Series _series; private Series _series;
private LocalEpisode _localEpisode; private LocalEpisode _localEpisode;
private const String ROOT_FOLDER = @"C:\Test\TV";
[SetUp] [SetUp]
public void Setup() public void Setup()
{ {
_series = Builder<Series>.CreateNew() _series = Builder<Series>.CreateNew()
.With(s => s.SeriesType = SeriesTypes.Standard) .With(s => s.SeriesType = SeriesTypes.Standard)
.With(s => s.Path = Path.Combine(ROOT_FOLDER, "30 Rock"))
.Build(); .Build();
var episodes = Builder<Episode>.CreateListOfSize(1) var episodes = Builder<Episode>.CreateListOfSize(1)
@ -81,5 +84,17 @@ namespace NzbDrone.Core.Test.MediaFileTests.EpisodeImportTests
Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue(); Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue();
} }
[Test]
public void should_use_series_paths_parent_for_free_space_check()
{
GivenFileSize(100.Megabytes());
GivenFreeSpace(1.Gigabytes());
Subject.IsSatisfiedBy(_localEpisode).Should().BeTrue();
Mocker.GetMock<IDiskProvider>()
.Verify(v => v.GetAvilableSpace(ROOT_FOLDER), Times.Once());
}
} }
} }

View File

@ -21,8 +21,9 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Specifications
public string RejectionReason { get { return "Not enough free space"; } } public string RejectionReason { get { return "Not enough free space"; } }
public bool IsSatisfiedBy(LocalEpisode localEpisode) public bool IsSatisfiedBy(LocalEpisode localEpisode)
{ {
var freeSpace = _diskProvider.GetAvilableSpace(localEpisode.Series.Path); var path = Directory.GetParent(localEpisode.Series.Path);
var freeSpace = _diskProvider.GetAvilableSpace(path.FullName);
if (freeSpace < localEpisode.Size + 100.Megabytes()) if (freeSpace < localEpisode.Size + 100.Megabytes())
{ {