using System.Collections.Generic; using System.Linq; using FizzWare.NBuilder; using Moq; using NUnit.Framework; using NzbDrone.Common.Disk; using NzbDrone.Core.HealthCheck.Checks; using NzbDrone.Core.ImportLists; using NzbDrone.Core.Localization; using NzbDrone.Core.Music; using NzbDrone.Core.RootFolders; using NzbDrone.Core.Test.Framework; using NzbDrone.Test.Common; namespace NzbDrone.Core.Test.HealthCheck.Checks { [TestFixture] public class RootFolderCheckFixture : CoreTest { [SetUp] public void Setup() { Mocker.GetMock() .Setup(s => s.GetLocalizedString(It.IsAny())) .Returns("Some Warning Message"); } private void GivenMissingRootFolder(string rootFolderPath) { var artist = Builder.CreateListOfSize(1) .Build() .ToList(); var importList = Builder.CreateListOfSize(1) .Build() .ToList(); Mocker.GetMock() .Setup(s => s.AllArtistPaths()) .Returns(artist.ToDictionary(x => x.Id, x => x.Path)); Mocker.GetMock() .Setup(s => s.All()) .Returns(importList); Mocker.GetMock() .Setup(s => s.GetBestRootFolderPath(It.IsAny())) .Returns(rootFolderPath); Mocker.GetMock() .Setup(s => s.FolderExists(It.IsAny())) .Returns(false); } [Test] public void should_not_return_error_when_no_artist() { Mocker.GetMock() .Setup(s => s.AllArtistPaths()) .Returns(new Dictionary()); Mocker.GetMock() .Setup(s => s.All()) .Returns(new List()); Subject.Check().ShouldBeOk(); } [Test] public void should_return_error_if_artist_parent_is_missing() { GivenMissingRootFolder(@"C:\Music".AsOsAgnostic()); Subject.Check().ShouldBeError(); } [Test] public void should_return_error_if_series_path_is_for_posix_os() { WindowsOnly(); GivenMissingRootFolder("/mnt/music"); Subject.Check().ShouldBeError(); } [Test] public void should_return_error_if_series_path_is_for_windows() { PosixOnly(); GivenMissingRootFolder(@"C:\Music"); Subject.Check().ShouldBeError(); } } }