public void RequestFilesFromThePagesFolder()
        {
            var fileSystemBuilder = new FileSystemBuilder()
                                    .AddRandomContentItemFiles()
                                    .AddRandomCategories();

            String rootPath     = $"c:\\{string.Empty.GetRandom()}";
            String expectedPath = System.IO.Path.Combine(rootPath, _dataFolder);

            var sourceConnection = $"Provider=this;{_connectionStringFilepathKey}={rootPath}";

            var directoryProvider = new Mock <IDirectory>();

            directoryProvider.Setup(f => f.EnumerateFiles(expectedPath))
            .Returns(fileSystemBuilder.ContentItemFileNames)
            .Verifiable();

            var container = new ServiceCollection();

            container.AddSingleton <IFile>(fileSystemBuilder.Build());
            container.AddSingleton <IDirectory>(directoryProvider.Object);

            var target = new Repository(container.BuildServiceProvider(), sourceConnection);
            var pages  = target.GetAllPages();

            directoryProvider.VerifyAll();
        }
예제 #2
0
        private static void ExecutePropertyTest <T>(String fileContents, T expected, Func <ContentItem, T> fieldValueDelegate, Func <IContentRepository, IEnumerable <ContentItem> > methodDelegate, IEnumerable <Category> categories)
        {
            var fileSystemBuilder = new FileSystemBuilder()
                                    .AddContentItemFile($"{string.Empty.GetRandom()}.md", fileContents);

            if (categories.IsNotNull() && categories.Any())
            {
                fileSystemBuilder.AddCategories(categories);
            }
            else
            {
                fileSystemBuilder.AddRandomCategories();
            }

            var directoryProvider = new Mock <IDirectory>();

            directoryProvider.Setup(f => f.EnumerateFiles(It.IsAny <string>()))
            .Returns(fileSystemBuilder.ContentItemFileNames);

            var target       = (null as IContentRepository).Create(fileSystemBuilder.Build(), directoryProvider.Object, "c:\\");
            var contentItems = methodDelegate.Invoke(target);
            var actual       = contentItems.ToArray()[0];

            Assert.Equal(expected, fieldValueDelegate(actual));
        }
예제 #3
0
        public void ThrowAnInvalidOperationExceptionIfAnyPostHasAnInvalidFormat()
        {
            var fileSystemBuilder = new FileSystemBuilder()
                                    .AddContentItemFile($"{string.Empty.GetRandom()}.md", "Not a valid post")
                                    .AddRandomCategories();

            var directoryProvider = new Mock <IDirectory>();

            directoryProvider.Setup(f => f.EnumerateFiles(It.IsAny <string>()))
            .Returns(fileSystemBuilder.ContentItemFileNames);

            var target = (null as IContentRepository).Create(fileSystemBuilder.Build(), directoryProvider.Object, "c:\\");

            Assert.Throws <InvalidOperationException>(() => _ = target.GetAllPosts());
        }
예제 #4
0
        public void ReturnAllPostsIfAllAreValid()
        {
            int expected = 20.GetRandom(5);

            var fileSystemBuilder = new FileSystemBuilder()
                                    .AddRandomContentItemFiles(expected)
                                    .AddRandomCategories();

            var directoryProvider = new Mock <IDirectory>();

            directoryProvider.Setup(f => f.EnumerateFiles(It.IsAny <string>()))
            .Returns(fileSystemBuilder.ContentItemFileNames);

            var target = (null as IContentRepository).Create(fileSystemBuilder.Build(), directoryProvider.Object, "c:\\");
            var posts  = target.GetAllPosts();

            Assert.Equal(expected, posts.Count());
        }
        public void IgnoreFilesWithoutMDExtension()
        {
            var fileSystemBuilder = new FileSystemBuilder()
                                    .AddRandomContentItemFiles(2)
                                    .AddContentItemFileWithRandomContent(string.Empty.GetRandom())
                                    .AddRandomContentItemFiles(1)
                                    .AddContentItemFileWithRandomContent($"{string.Empty.GetRandom()}.ppt")
                                    .AddRandomContentItemFiles(1)
                                    .AddContentItemFileWithRandomContent($"{string.Empty.GetRandom()}.txt")
                                    .AddRandomContentItemFiles(3)
                                    .AddContentItemFileWithRandomContent($"{string.Empty.GetRandom()}.com")
                                    .AddRandomContentItemFiles(1)
                                    .AddRandomCategories();

            var directoryProvider = new Mock <IDirectory>();

            directoryProvider.Setup(f => f.EnumerateFiles(It.IsAny <string>()))
            .Returns(fileSystemBuilder.ContentItemFileNames);

            var target = (null as IContentRepository).Create(fileSystemBuilder.Build(), directoryProvider.Object, "c:\\");
            var pages  = target.GetAllPages();

            Assert.Equal(8, pages.Count());
        }