146 lines
4.0 KiB
C#
146 lines
4.0 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System.IO;
|
|
using System.Text.Encodings.Web;
|
|
using Microsoft.AspNetCore.Html;
|
|
using Microsoft.Extensions.WebEncoders.Testing;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.Extensions.Internal
|
|
{
|
|
public class HtmlContentBuilderTest
|
|
{
|
|
[Fact]
|
|
public void AppendString_AppendsAString()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
|
|
// Act
|
|
content.Append("Hello");
|
|
|
|
// Assert
|
|
var result = Assert.Single(content.Entries);
|
|
Assert.IsType<string>(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void AppendString_WrittenAsEncoded()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
content.Append("Hello");
|
|
|
|
var writer = new StringWriter();
|
|
|
|
// Act
|
|
content.WriteTo(writer, new HtmlTestEncoder());
|
|
|
|
// Assert
|
|
Assert.Equal("HtmlEncode[[Hello]]", writer.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void AppendHtml_DoesNotGetWrittenAsEncoded()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
content.AppendHtml("Hello");
|
|
|
|
var writer = new StringWriter();
|
|
|
|
// Act
|
|
content.WriteTo(writer, new HtmlTestEncoder());
|
|
|
|
// Assert
|
|
Assert.Equal("Hello", writer.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void AppendIHtmlContent_AppendsAsIs()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
var writer = new StringWriter();
|
|
|
|
// Act
|
|
content.AppendHtml(new TestHtmlContent("Hello"));
|
|
|
|
// Assert
|
|
var result = Assert.Single(content.Entries);
|
|
var testHtmlContent = Assert.IsType<TestHtmlContent>(result);
|
|
testHtmlContent.WriteTo(writer, new HtmlTestEncoder());
|
|
Assert.Equal("Written from TestHtmlContent: Hello", writer.ToString());
|
|
}
|
|
|
|
[Fact]
|
|
public void CanAppendMultipleItems()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
|
|
// Act
|
|
content.AppendHtml(new TestHtmlContent("hello"));
|
|
content.Append("Test");
|
|
|
|
// Assert
|
|
Assert.Equal(2, content.Entries.Count);
|
|
Assert.Equal("Written from TestHtmlContent: hello", content.Entries[0].ToString());
|
|
Assert.Equal("Test", content.Entries[1]);
|
|
}
|
|
|
|
[Fact]
|
|
public void Clear_DeletesAllItems()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
content.AppendHtml(new TestHtmlContent("hello"));
|
|
content.Append("Test");
|
|
|
|
// Act
|
|
content.Clear();
|
|
|
|
// Assert
|
|
Assert.Equal(0, content.Entries.Count);
|
|
}
|
|
|
|
[Fact]
|
|
public void WriteTo_WritesAllItems()
|
|
{
|
|
// Arrange
|
|
var content = new HtmlContentBuilder();
|
|
var writer = new StringWriter();
|
|
content.AppendHtml(new TestHtmlContent("Hello"));
|
|
content.Append("Test");
|
|
|
|
// Act
|
|
content.WriteTo(writer, new HtmlTestEncoder());
|
|
|
|
// Assert
|
|
Assert.Equal(2, content.Entries.Count);
|
|
Assert.Equal("Written from TestHtmlContent: HelloHtmlEncode[[Test]]", writer.ToString());
|
|
}
|
|
|
|
private class TestHtmlContent : IHtmlContent
|
|
{
|
|
private string _content;
|
|
|
|
public TestHtmlContent(string content)
|
|
{
|
|
_content = content;
|
|
}
|
|
|
|
public void WriteTo(TextWriter writer, HtmlEncoder encoder)
|
|
{
|
|
writer.Write(ToString());
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return "Written from TestHtmlContent: " + _content;
|
|
}
|
|
}
|
|
}
|
|
}
|