mfgames-cil/tests/MfGames.Nitride.Markdown.Tests/ExtractMarkdownHeading1Tests.cs
D. Moonfire 7aa761c4cd
All checks were successful
deploy / deploy (push) Successful in 10m48s
feat: renaming the extract markdown header
2024-04-19 00:32:20 -05:00

155 lines
4.8 KiB
C#

using System.Collections.Generic;
using System.Linq;
using MfGames.Gallium;
using MfGames.Nitride.Contents;
using MfGames.TestSetup;
using Xunit;
using Xunit.Abstractions;
namespace MfGames.Nitride.Markdown.Tests;
/// <summary>
/// Tests the functionality of the ParseMarkdownHeadingOne operation.
/// </summary>
public class ExtractMarkdownHeading1Tests : TestBase<MarkdownTestContext>
{
public ExtractMarkdownHeading1Tests(ITestOutputHelper output)
: base(output) { }
[Fact]
public void ParseComplexHeader()
{
using MarkdownTestContext context = this.CreateContext();
List<Entity> input =
new()
{
new Entity()
.Set(IsMarkdown.Instance)
.SetTextContent("# Heading [One](/test)\n\nContent\nsecond\n\nline"),
};
ExtractMarkdownHeading1 op = context
.Resolve<ExtractMarkdownHeading1>()
.WithAddModelCallback((entity, heading) => entity.Set(heading));
IEnumerable<Entity> output = op.Run(input);
Entity first = output.First();
string content = first.GetTextContentString()!.Trim();
Assert.Equal("Content\nsecond\n\nline", content);
Assert.Equal("Heading [One](/test)", first.Get<string>());
}
[Fact]
public void ParseEmptyHeader()
{
using MarkdownTestContext context = this.CreateContext();
List<Entity> input =
new() { new Entity().Set(IsMarkdown.Instance).SetTextContent("#\nContent"), };
ExtractMarkdownHeading1 op = context
.Resolve<ExtractMarkdownHeading1>()
.WithAddModelCallback((entity, heading) => entity.Set(heading));
IEnumerable<Entity> output = op.Run(input);
Entity first = output.First();
string content = first.GetTextContentString()!.Trim();
Assert.Equal("Content", content);
Assert.Equal("", first.Get<string>());
}
[Fact]
public void ParseHeaderTwo()
{
using MarkdownTestContext context = this.CreateContext();
List<Entity> input =
new()
{
new Entity().Set(IsMarkdown.Instance).SetTextContent("## Heading Two\nContent"),
};
ExtractMarkdownHeading1 op = context
.Resolve<ExtractMarkdownHeading1>()
.WithAddModelCallback((entity, heading) => entity.Set(heading));
IEnumerable<Entity> output = op.Run(input);
Entity first = output.First();
string content = first.GetTextContentString()!.Trim();
Assert.Equal("## Heading Two\nContent", content);
Assert.False(first.Has<string>());
}
[Fact]
public void ParseMultipleHeaderOne()
{
using MarkdownTestContext context = this.CreateContext();
List<Entity> input =
new()
{
new Entity()
.Set(IsMarkdown.Instance)
.SetTextContent("# Heading One\n\n# Heading Two\n Content"),
};
ExtractMarkdownHeading1 op = context
.Resolve<ExtractMarkdownHeading1>()
.WithAddModelCallback((entity, heading) => entity.Set(heading));
IEnumerable<Entity> output = op.Run(input);
Entity first = output.First();
string content = first.GetTextContentString()!.Trim();
Assert.Equal("# Heading Two\n Content", content);
Assert.Equal("Heading One", first.Get<string>());
}
[Fact]
public void ParseNoHeader()
{
using MarkdownTestContext context = this.CreateContext();
List<Entity> input =
new() { new Entity().Set(IsMarkdown.Instance).SetTextContent("Content"), };
ExtractMarkdownHeading1 op = context
.Resolve<ExtractMarkdownHeading1>()
.WithAddModelCallback((entity, heading) => entity.Set(heading));
IEnumerable<Entity> output = op.Run(input);
Entity first = output.First();
string content = first.GetTextContentString()!.Trim();
Assert.Equal("Content", content);
Assert.False(first.Has<string>());
}
[Fact]
public void ParseSimpleHeader()
{
using MarkdownTestContext context = this.CreateContext();
List<Entity> input =
new()
{
new Entity().Set(IsMarkdown.Instance).SetTextContent("# Heading One\n\nContent"),
};
ExtractMarkdownHeading1 op = context
.Resolve<ExtractMarkdownHeading1>()
.WithAddModelCallback((entity, heading) => entity.Set(heading));
IEnumerable<Entity> output = op.Run(input);
Entity first = output.First();
string content = first.GetTextContentString()!.Trim();
Assert.Equal("Content", content);
Assert.Equal("Heading One", first.Get<string>());
}
}