public void ShouldIncludeSources() { // Arrange var sourceBase = GetRandomPath(); var source1 = FakeFileResource.For( sourceBase, GetRandomPath(2), GetRandomInt()); var source2 = FakeFileResource.For( sourceBase, // two sources must be in different primary folders GetRandomPath(2), GetRandomInt()); var sourceRelativeBaseParts = source1 .RelativePath.Split(Path.DirectorySeparatorChar); var sourceRelativeBase = sourceRelativeBaseParts.Length == 1 ? "" : sourceRelativeBaseParts.First(); var targetBase = GetRandomPath(); var targets = new[] { FakeFileResource.For( targetBase, Path.Combine(sourceRelativeBase, GetRandomPath()), GetRandomInt() ) }; var source = Substitute.For <IFileSystem>(); var target = Substitute.For <IFileSystem>(); target.IsDirectory(sourceRelativeBase) .Returns(true); var targetHistoryRepository = Substitute.For <ITargetHistoryRepository>(); targetHistoryRepository.FindAll(Arg.Any <string>()) .Returns(new HistoryItem[0]); var sut = Create(); // Act var result1 = sut.Filter( source1, targets, targetHistoryRepository, source, target); var result2 = sut.Filter( source2, targets, targetHistoryRepository, source, target); // Assert Expect(result1) .To.Equal(FilterResult.Include); Expect(result2) .To.Equal(FilterResult.Exclude); }
public void ShouldIncludeSourcesMatchingTargetFolder() { // Arrange var sourceBase = GetRandomPath(2); var source1 = FakeFileResource.For(sourceBase, GetRandomPath(2), GetRandomInt()); var source2 = FakeFileResource.For(sourceBase, GetRandomPath(2), GetRandomInt()); var sourceRelativeBase = source1 .RelativePath.Split( Path.DirectorySeparatorChar ) .First(); var targets = new IFileResource[0]; var targetHistoryRepository = Substitute.For <ITargetHistoryRepository>(); targetHistoryRepository.FindAll(Arg.Is <string>(a => a == $"{sourceRelativeBase}/*")) .Returns(new[] { new HistoryItem( Path.Combine(sourceRelativeBase, GetRandomPath(2)), GetRandomInt() ) }); var sut = Create(); // Act var result1 = sut.Filter( source1, targets, targetHistoryRepository, Substitute.For <IFileSystem>(), Substitute.For <IFileSystem>()); var result2 = sut.Filter( source2, targets, targetHistoryRepository, Substitute.For <IFileSystem>(), Substitute.For <IFileSystem>()); // Assert Expect(result1) .To.Equal(FilterResult.Include); Expect(result2) .To.Equal(FilterResult.Exclude); }