Test TagHelperScopeManager functionality.

#155
This commit is contained in:
NTaylorMullen 2014-09-25 01:34:35 -07:00 committed by N. Taylor Mullen
parent 66aea52542
commit d080dc8f71
3 changed files with 101 additions and 10 deletions

View File

@ -7,13 +7,13 @@ using Xunit;
namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
public class TagHelpersExecutionContextTest
public class TagHelperExecutionContextTest
{
[Fact]
public void AddHtmlAttribute_MaintainsHTMLAttributes()
{
// Arrange
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var expectedAttributes = new Dictionary<string, string>
{
{ "class", "btn" },
@ -29,10 +29,10 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
}
[Fact]
public void TagHelpersExecutionContext_MaintainsAllAttributes()
public void TagHelperExecutionContext_MaintainsAllAttributes()
{
// Arrange
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var expectedAttributes = new Dictionary<string, object>
{
{ "class", "btn" },
@ -53,7 +53,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
public void Add_MaintainsTagHelpers()
{
// Arrange
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var tagHelper = new PTagHelper();
// Act
@ -68,7 +68,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
public void Add_MaintainsMultipleTagHelpers()
{
// Arrange
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var tagHelper1 = new PTagHelper();
var tagHelper2 = new PTagHelper();

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
// Arrange
var runner = new TagHelperRunner();
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var executableTagHelper1 = new ExecutableTagHelper();
var executableTagHelper2 = new ExecutableTagHelper();
@ -34,7 +34,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
// Arrange
var runner = new TagHelperRunner();
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var executableTagHelper = new ExecutableTagHelper();
// Act
@ -54,7 +54,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
// Arrange
var runner = new TagHelperRunner();
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var tagHelper = new TagHelperContextTouchingTagHelper();
// Act
@ -71,7 +71,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
// Arrange
var runner = new TagHelperRunner();
var executionContext = new TagHelpersExecutionContext("p");
var executionContext = new TagHelperExecutionContext("p");
var tagHelper = new ExecutableTagHelper();
var contentWriter = new StringWriter(new StringBuilder("Hello World"));

View File

@ -0,0 +1,91 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using Xunit;
namespace Microsoft.AspNet.Razor.Runtime.Test.TagHelpers
{
public class TagHelperScopeManagerTest
{
[Fact]
public void Begin_CreatesContextWithAppropriateTagName()
{
// Arrange
var scopeManager = new TagHelperScopeManager();
// Act
var executionContext = scopeManager.Begin("p");
// Assert
Assert.Equal("p", executionContext.TagName);
}
[Fact]
public void Begin_CanNest()
{
// Arrange
var scopeManager = new TagHelperScopeManager();
// Act
var executionContext = scopeManager.Begin("p");
executionContext = scopeManager.Begin("div");
// Assert
Assert.Equal("div", executionContext.TagName);
}
[Fact]
public void End_ReturnsParentExecutionContext()
{
// Arrange
var scopeManager = new TagHelperScopeManager();
// Act
var executionContext = scopeManager.Begin("p");
executionContext = scopeManager.Begin("div");
executionContext = scopeManager.End();
// Assert
Assert.Equal("p", executionContext.TagName);
}
[Fact]
public void End_ReturnsNullIfNoNestedContext()
{
// Arrange
var scopeManager = new TagHelperScopeManager();
// Act
var executionContext = scopeManager.Begin("p");
executionContext = scopeManager.Begin("div");
executionContext = scopeManager.End();
executionContext = scopeManager.End();
// Assert
Assert.Null(executionContext);
}
[Fact]
public void End_ThrowsIfNoScope()
{
// Arrange
var scopeManager = new TagHelperScopeManager();
var expectedError = string.Format(
"Must call '{2}.{1}' before calling '{2}.{0}'.",
nameof(TagHelperScopeManager.End),
nameof(TagHelperScopeManager.Begin),
nameof(TagHelperScopeManager));
// Act & Assert
var ex = Assert.Throws<InvalidOperationException>(() =>
{
scopeManager.End();
});
Assert.Equal(expectedError, ex.Message);
}
}
}