private static FileSystemQuery GetFileSystemQuery(bool hasShares = true)
{
var dirFact = new Mock<IDirectoryEntryFactory>();
var dir = new Mock<IDirectoryEntry>();
var dirLocal = new Mock<IDirectory>();
dirLocal.Setup(a => a.Exists("bob")).Returns(false);
dirLocal.Setup(a => a.Exists("bo")).Returns(true);
dirLocal.Setup(a => a.GetFileSystemEntries(It.IsAny<string>(), It.IsAny<string>())).Returns(new[] { "b", "d", "f" });
var children = new Mock<IDirectoryEntries>();
var gChildren = new Mock<IDirectoryEntries>();
var actualChildren = new List<Mock<IDirectoryEntry>>
{
new Mock<IDirectoryEntry>()
};
var actualGChildren = new List<Mock<IDirectoryEntry>>
{
new Mock<IDirectoryEntry>()
};
actualGChildren.ForEach(
b => b.Setup(a => a.Name).Returns("a"));
actualGChildren.ForEach(
b => b.Setup(a => a.SchemaClassName).Returns("Computer"));
actualChildren.ForEach(
b => b.Setup(a => a.SchemaClassName).Returns("Computer"));
dirFact.Setup(a => a.Create(It.IsAny<string>())).Returns(dir.Object);
dir.Setup(a => a.Children).Returns(children.Object);
children.Setup(a => a.GetEnumerator())
.Returns(actualChildren.Select(a => a.Object)
.GetEnumerator());
actualChildren.First().Setup(a => a.Children).Returns(gChildren.Object);
gChildren.Setup(a => a.GetEnumerator()).Returns(actualGChildren.Select(a => a.Object).GetEnumerator());
IList<Share> shares = hasShares? new List<Share>{new Share("a","b",ShareType.Disk)} : new List<Share>();
var sFact = new Mock<IShareCollectionFactory>();
sFact.Setup(a => a.CreateShareCollection(It.IsAny<string>())).Returns(new ShareCollection(shares));
//------------Execute Test---------------------------
var query = new FileSystemQuery(dirLocal.Object, dirFact.Object, sFact.Object);
return query;
}