public void DashStringDoesNotSplitAtNonmatchingDashes() { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(@"FM1 FM2 --- Content1 Content2") }; bool executed = false; FrontMatter frontMatter = new FrontMatter("-", new Execute((x, ctx) => { executed = true; return new[] {x}; })); // When IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context); // Then Assert.AreEqual(1, documents.Count()); Assert.IsFalse(executed); Assert.AreEqual(@"FM1 FM2 --- Content1 Content2", documents.First().Content); }
public void DefaultCtorSplitsAtDashes() { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(@"FM1 FM2 --- Content1 Content2") }; string frontMatterContent = null; FrontMatter frontMatter = new FrontMatter(new Execute((x, ctx) => { frontMatterContent = x.Content; return new[] {x}; })); // When IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context); // Then Assert.AreEqual(1, documents.Count()); Assert.AreEqual(@"FM1 FM2 ", frontMatterContent); Assert.AreEqual(@"Content1 Content2", documents.First().Content); }
public void SetUp() { Engine = new Engine(); Engine.FileSystem.FileProviders.Add(NormalizedPath.DefaultFileProvider.Scheme, GetFileProvider()); Engine.FileSystem.RootPath = "/"; Pipeline = new Pipeline("Pipeline", null); Context = new ExecutionContext(Engine, Pipeline); }
public void SetUp() { Engine = new Engine(); Engine.FileSystem.FileProviders.Add(NormalizedPath.DefaultFileProvider.Scheme, GetFileProvider()); Engine.FileSystem.RootPath = "/"; Engine.FileSystem.InputPaths.Clear(); Engine.FileSystem.InputPaths.Add("/TestFiles/Input"); Pipeline = new Pipeline("Pipeline", null); Context = new ExecutionContext(Engine, Pipeline); Inputs = new[] { Context.GetDocument() }; }
public IPipeline Add(string name, bool processDocumentsOnce, params IModule[] modules) { if (string.IsNullOrWhiteSpace(name)) { name = "Pipeline " + (_pipelines.Count + 1); } if (_pipelines.ContainsKey(name)) { throw new ArgumentException("Pipelines must have a unique name."); } Pipeline pipeline = new Pipeline(name, processDocumentsOnce, modules); _pipelines.Add(name, pipeline); return pipeline; }
public void FileNameIsConvertedCorrectly(string input, string output) { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(new MetadataItems { new MetadataItem(Keys.SourceFileName, input) }) }; FileName fileName = new FileName(); // When IEnumerable<IDocument> documents = fileName.Execute(inputs, context); // Then Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath); }
public void FileNameShouldBeLowercase() { // Given string input = "FileName With MiXeD CapS"; string output = "filename-with-mixed-caps"; Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(new MetadataItems { new MetadataItem(Keys.SourceFileName, new FilePath(input)) }) }; FileName fileName = new FileName(); // When IEnumerable<IDocument> documents = fileName.Execute(inputs, context); // Then Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath); }
public void WithAllowedCharactersDoesNotReplaceProvidedCharacters() { // Given string input = "this-is-a-.net-tag"; string output = "this-is-a-.net-tag"; Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(new MetadataItems { new MetadataItem(Keys.SourceFileName, new FilePath(input)) }) }; FileName fileName = new FileName(); // When fileName = fileName.WithAllowedCharacters(new string[] { "-" }); IEnumerable<IDocument> documents = fileName.Execute(inputs, context); // Then Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath); }
public void SitemapGeneratedWithSitemapItemAsString(string hostname, string formatterString, string expected) { // Given Engine engine = new Engine(); if (!string.IsNullOrWhiteSpace(hostname)) { engine.Settings.Host = hostname; } Pipeline contentPipeline = new Pipeline("Content", null); IExecutionContext context = new ExecutionContext(engine, contentPipeline); IDocument doc = context.GetDocument("Test", new[] { new KeyValuePair<string, object>(Keys.RelativeFilePath, "sub/testfile.html") }); IDocument[] inputs = {doc}; Core.Modules.Metadata.Meta m = new Core.Modules.Metadata.Meta(Keys.SitemapItem, (d, c) => d[Keys.RelativeFilePath].ToString()); var outputs = m.Execute(inputs, context); Func<string, string> formatter = null; if (!string.IsNullOrWhiteSpace(formatterString)) formatter = f => string.Format(formatterString, f); // When Sitemap sitemap = new Sitemap(formatter); List<IDocument> results = sitemap.Execute(outputs.ToList(), context).ToList(); foreach (IDocument document in inputs.Concat(outputs.ToList())) { ((IDisposable) document).Dispose(); } // Then Assert.AreEqual(1, results.Count); Assert.That(results[0].Content, Does.Contain($"<loc>{expected}</loc>")); }
public void TrimWhitespace() { // Given string input = " myfile.html "; string output = "myfile.html"; Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(new MetadataItems { new MetadataItem("MyKey", input) }) }; FileName fileName = new FileName("MyKey"); // When IEnumerable<IDocument> documents = fileName.Execute(inputs, context); // Then Assert.AreEqual(output, documents.First().FilePath(Keys.WriteFileName).FullPath); }
public void IgnoresNullOrWhiteSpaceStrings(string input) { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(new MetadataItems { new MetadataItem(Keys.SourceFileName, input) }) }; FileName fileName = new FileName(); // When IEnumerable<IDocument> documents = fileName.Execute(inputs, context); // Then Assert.IsFalse(documents.First().ContainsKey(Keys.WriteFileName)); }
public void FileNameIsConvertedCorrectlyWithReservedChar(string character) { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); string manyCharactersWow = new String(character[0], 10); IDocument[] inputs = { context.GetDocument(new MetadataItems { new MetadataItem(Keys.SourceFileName, string.Format("testing {0} some of {0} these {0}", manyCharactersWow)) }) }; FileName fileName = new FileName(); // When IEnumerable<IDocument> documents = fileName.Execute(inputs, context); // Then Assert.AreEqual("testing-some-of-these-", documents.First().FilePath(Keys.WriteFileName).FullPath); }
public void MultipleInputDocumentsResultsInMultipleOutputs() { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(@"AA - XX"), context.GetDocument(@"BB - YY") }; string frontMatterContent = string.Empty; FrontMatter frontMatter = new FrontMatter(new Execute((x, ctx) => { frontMatterContent += x.Content; return new[] {x}; })); // When IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context); // Then Assert.AreEqual(2, documents.Count()); Assert.AreEqual(@"AA BB ", frontMatterContent); Assert.AreEqual(@"XX", documents.First().Content); Assert.AreEqual(@"YY", documents.Skip(1).First().Content); }
public void SingleCharWithSingleDelimiterSplitsAtCorrectLocation() { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(@"FM1 FM2 ! Content1 Content2") }; string frontMatterContent = null; FrontMatter frontMatter = new FrontMatter('!', new Execute((x, ctx) => { frontMatterContent = x.Content; return new[] {x}; })); // When IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context); // Then Assert.AreEqual(1, documents.Count()); Assert.AreEqual(@"FM1 FM2 ", frontMatterContent); Assert.AreEqual(@"Content1 Content2", documents.First().Content); }
public void SingleCharWithRepeatedDelimiterWithLeadingSpacesDoesNotSplit() { // Given Engine engine = new Engine(); Pipeline pipeline = new Pipeline("Pipeline", null); IExecutionContext context = new ExecutionContext(engine, pipeline); IDocument[] inputs = { context.GetDocument(@"FM1 FM2 !!!! Content1 Content2") }; bool executed = false; FrontMatter frontMatter = new FrontMatter('!', new Execute((x, ctx) => { executed = true; return new[] {x}; })); // When IEnumerable<IDocument> documents = frontMatter.Execute(inputs, context); // Then Assert.AreEqual(1, documents.Count()); Assert.IsFalse(executed); Assert.AreEqual(@"FM1 FM2 !!!! Content1 Content2", documents.First().Content); }