using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using FluentAssertions; using Moq; using NUnit.Framework; using NzbDrone.Test.Common; namespace NzbDrone.Common.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_get_all_folder_for_none_root_path() { const string root = @"C:\Test\"; SetupFolders(root); Mocker.GetMock() .Setup(s => s.GetDirectories(It.IsAny())) .Returns(_folders.ToArray()); Subject.LookupSubDirectories(root).Should() .HaveCount(_folders.Count); } [Test] public void should_not_contain_recycling_bin_for_root_of_drive() { const string root = @"C:\"; 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_for_root_of_drive() { const string root = @"C:\"; 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() { const string root = @"C:\"; SetupFolders(root); Mocker.GetMock() .Setup(s => s.GetDirectories(It.IsAny())) .Returns(_folders.ToArray()); Subject.LookupSubDirectories(root).Should().HaveCount(_folders.Count - 2); } } }