Add PreElement and PostElement to TagHelperOutput.
- These two new properties will enable TagHelper authors to render content before and after the TagHelper's HTML element. - Added tests to correspond with existing test coverage. - Modified existing tests to double check for TagHelperOutput.Pre/PostElement. - Refactored all DefaultTagHelperContent pieces of TagHelperOutput to be get only properties. #341
This commit is contained in:
parent
9722319762
commit
c9c8e802a7
|
|
@ -12,10 +12,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
/// </summary>
|
||||
public class TagHelperOutput
|
||||
{
|
||||
private readonly DefaultTagHelperContent _preContent;
|
||||
private readonly DefaultTagHelperContent _content;
|
||||
private readonly DefaultTagHelperContent _postContent;
|
||||
|
||||
// Internal for testing
|
||||
internal TagHelperOutput(string tagName)
|
||||
: this(tagName, new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase))
|
||||
|
|
@ -33,9 +29,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
TagName = tagName;
|
||||
Attributes = new Dictionary<string, object>(attributes, StringComparer.OrdinalIgnoreCase);
|
||||
_preContent = new DefaultTagHelperContent();
|
||||
_content = new DefaultTagHelperContent();
|
||||
_postContent = new DefaultTagHelperContent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -46,42 +39,36 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
/// </remarks>
|
||||
public string TagName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Content that precedes the HTML element.
|
||||
/// </summary>
|
||||
/// <remarks>Value is rendered before the HTML element.</remarks>
|
||||
public TagHelperContent PreElement { get; } = new DefaultTagHelperContent();
|
||||
|
||||
/// <summary>
|
||||
/// The HTML element's pre content.
|
||||
/// </summary>
|
||||
/// <remarks>Value is prepended to the <see cref="ITagHelper"/>'s final output.</remarks>
|
||||
public TagHelperContent PreContent
|
||||
{
|
||||
get
|
||||
{
|
||||
return _preContent;
|
||||
}
|
||||
}
|
||||
public TagHelperContent PreContent { get; } = new DefaultTagHelperContent();
|
||||
|
||||
/// <summary>
|
||||
/// The HTML element's main content.
|
||||
/// </summary>
|
||||
/// <remarks>Value occurs in the <see cref="ITagHelper"/>'s final output after <see cref="PreContent"/> and
|
||||
/// before <see cref="PostContent"/></remarks>
|
||||
public TagHelperContent Content
|
||||
{
|
||||
get
|
||||
{
|
||||
return _content;
|
||||
}
|
||||
}
|
||||
public TagHelperContent Content { get; } = new DefaultTagHelperContent();
|
||||
|
||||
/// <summary>
|
||||
/// The HTML element's post content.
|
||||
/// </summary>
|
||||
/// <remarks>Value is appended to the <see cref="ITagHelper"/>'s final output.</remarks>
|
||||
public TagHelperContent PostContent
|
||||
{
|
||||
get
|
||||
{
|
||||
return _postContent;
|
||||
}
|
||||
}
|
||||
public TagHelperContent PostContent { get; } = new DefaultTagHelperContent();
|
||||
|
||||
/// <summary>
|
||||
/// Content that follows the HTML element.
|
||||
/// </summary>
|
||||
/// <remarks>Value is rendered after the HTML element.</remarks>
|
||||
public TagHelperContent PostElement { get; } = new DefaultTagHelperContent();
|
||||
|
||||
/// <summary>
|
||||
/// <c>true</c> if <see cref="Content"/> has been set, <c>false</c> otherwise.
|
||||
|
|
@ -113,15 +100,17 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
/// Changes <see cref="TagHelperOutput"/> to generate nothing.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Sets <see cref="TagName"/> to <c>null</c>, and clears <see cref="PreContent"/>, <see cref="Content"/>,
|
||||
/// and <see cref="PostContent"/> to suppress output.
|
||||
/// Sets <see cref="TagName"/> to <c>null</c>, and clears <see cref="PreElement"/>, <see cref="PreContent"/>,
|
||||
/// <see cref="Content"/>, <see cref="PostContent"/>, and <see cref="PostElement"/> to suppress output.
|
||||
/// </remarks>
|
||||
public void SuppressOutput()
|
||||
{
|
||||
TagName = null;
|
||||
PreElement.Clear();
|
||||
PreContent.Clear();
|
||||
Content.Clear();
|
||||
PostContent.Clear();
|
||||
PostElement.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,6 +8,38 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
{
|
||||
public class TagHelperOutputTest
|
||||
{
|
||||
[Fact]
|
||||
public void PreElement_SetContent_ChangesValue()
|
||||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput("p");
|
||||
tagHelperOutput.PreElement.SetContent("Hello World");
|
||||
|
||||
// Act & Assert
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Equal("Hello World", tagHelperOutput.PreElement.GetContent());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PostElement_SetContent_ChangesValue()
|
||||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput("p");
|
||||
tagHelperOutput.PostElement.SetContent("Hello World");
|
||||
|
||||
// Act & Assert
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Equal("Hello World", tagHelperOutput.PostElement.GetContent());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TagName_CanSetToNullInCtor()
|
||||
{
|
||||
|
|
@ -39,9 +71,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
tagHelperOutput.PreContent.SetContent("Hello World");
|
||||
|
||||
// Act & Assert
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Equal("Hello World", tagHelperOutput.PreContent.GetContent());
|
||||
}
|
||||
|
||||
|
|
@ -53,9 +87,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
tagHelperOutput.Content.SetContent("Hello World");
|
||||
|
||||
// Act & Assert
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Equal("Hello World", tagHelperOutput.Content.GetContent());
|
||||
}
|
||||
|
||||
|
|
@ -67,14 +103,16 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
tagHelperOutput.PostContent.SetContent("Hello World");
|
||||
|
||||
// Act & Assert
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Equal("Hello World", tagHelperOutput.PostContent.GetContent());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SuppressOutput_Sets_TagName_Content_PreContent_PostContent_ToNull()
|
||||
public void SuppressOutput_Sets_AllContent_ToNullOrEmpty()
|
||||
{
|
||||
// Arrange
|
||||
var tagHelperOutput = new TagHelperOutput("p");
|
||||
|
|
@ -87,12 +125,16 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
|
||||
// Assert
|
||||
Assert.Null(tagHelperOutput.TagName);
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.Empty(tagHelperOutput.PreElement.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.Empty(tagHelperOutput.PreContent.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.Empty(tagHelperOutput.Content.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.Empty(tagHelperOutput.PostContent.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Empty(tagHelperOutput.PostElement.GetContent());
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -113,12 +155,16 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
|
|||
tagHelperOutput.SuppressOutput();
|
||||
|
||||
// Assert
|
||||
Assert.NotNull(tagHelperOutput.PreElement);
|
||||
Assert.Empty(tagHelperOutput.PreElement.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.PreContent);
|
||||
Assert.Empty(tagHelperOutput.PreContent.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.Content);
|
||||
Assert.Empty(tagHelperOutput.Content.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.PostContent);
|
||||
Assert.Empty(tagHelperOutput.PostContent.GetContent());
|
||||
Assert.NotNull(tagHelperOutput.PostElement);
|
||||
Assert.Empty(tagHelperOutput.PostElement.GetContent());
|
||||
}
|
||||
|
||||
[Theory]
|
||||
|
|
|
|||
Loading…
Reference in New Issue