using System; using System.Collections.Generic; using System.IO; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Api.Directories; using NzbDrone.Common; using NzbDrone.Test.Common; namespace NzbDrone.Api.Test { [TestFixture] public class DirectoryLookupServiceFixture : TestBase { private const string RECYCLING_BIN = "$Recycle.Bin"; private const string SYSTEM_VOLUME_INFORMATION = "System Volume Information"; private List _folders; [SetUp] public void Setup() { _folders = new List { RECYCLING_BIN, "Chocolatey", "Documents and Settings", "Dropbox", "Intel", "PerfLogs", "Program Files", "Program Files (x86)", "ProgramData", SYSTEM_VOLUME_INFORMATION, "Test", "Users", "Windows" }; } private void SetupFolders(string root) { _folders.ForEach(e => { e = Path.Combine(root, e); }); } [Test] public void should_not_contain_recycling_bin_for_root_of_drive() { string root = @"C:\".AsOsAgnostic(); SetupFolders(root); Mocker.GetMock() .Setup(s => s.GetDirectories(It.IsAny())) .Returns(_folders.ToArray()); Subject.LookupSubDirectories(root).Should().NotContain(Path.Combine(root, RECYCLING_BIN)); } [Test] public void should_not_contain_system_volume_information() { string root = @"C:\".AsOsAgnostic(); SetupFolders(root); Mocker.GetMock() .Setup(s => s.GetDirectories(It.IsAny())) .Returns(_folders.ToArray()); Subject.LookupSubDirectories(root).Should().NotContain(Path.Combine(root, SYSTEM_VOLUME_INFORMATION)); } [Test] public void should_not_contain_recycling_bin_or_system_volume_information_for_root_of_drive() { string root = @"C:\"; SetupFolders(root); Mocker.GetMock() .Setup(s => s.GetDirectories(It.IsAny())) .Returns(_folders.ToArray()); var result = Subject.LookupSubDirectories(root); result.Should().HaveCount(_folders.Count - 2); result.Should().NotContain(RECYCLING_BIN); result.Should().NotContain(SYSTEM_VOLUME_INFORMATION); } } }