using ChatAgent.Client.Services;
namespace ChatAgent.Client.Tests;
///
", result);
Assert.Contains("", result);
Assert.Contains("var x = 1;", result);
}
[Fact]
public void ConvertToHtml_InlineCode_RendersCode()
{
var result = _sut.ConvertToHtml("Use `Console.WriteLine` here");
Assert.Contains("Console.WriteLine", result);
}
[Fact]
public void ConvertToHtml_UnorderedList_RendersUlLi()
{
var result = _sut.ConvertToHtml("- item one\n- item two");
Assert.Contains("", result);
Assert.Contains("- item one
", result);
Assert.Contains("- item two
", result);
}
[Fact]
public void ConvertToHtml_OrderedList_RendersOlLi()
{
var result = _sut.ConvertToHtml("1. first\n2. second");
Assert.Contains("", result);
Assert.Contains("- first
", result);
}
[Fact]
public void ConvertToHtml_Heading_RendersH2()
{
var result = _sut.ConvertToHtml("## My Heading");
Assert.Contains("My Heading
", result);
}
[Fact]
public void ConvertToHtml_Table_RendersTableElements()
{
var markdown = "| Name | Value |\n|------|-------|\n| A | 1 |";
var result = _sut.ConvertToHtml(markdown);
Assert.Contains("", result);
Assert.Contains("", result);
Assert.Contains(" ", result);
}
[Fact]
public void ConvertToHtml_Link_RendersAnchorWithHref()
{
var result = _sut.ConvertToHtml("[click here](https://example.com)");
Assert.Contains("", result);
}
[Fact]
public void ConvertToHtml_EmptyString_ReturnsEmpty()
{
Assert.Equal(string.Empty, _sut.ConvertToHtml(""));
Assert.Equal(string.Empty, _sut.ConvertToHtml(null!));
}
// --- Sanitization tests ---
[Fact]
public void ConvertToHtml_ScriptTag_IsStripped()
{
var result = _sut.ConvertToHtml("Hello world");
Assert.DoesNotContain("