LinkTagHelper activates ILogger directly from DI:

- #1948
This commit is contained in:
damianedwards 2015-02-03 11:41:50 -08:00
parent 3d33418f31
commit ad66a71eeb
2 changed files with 18 additions and 24 deletions

View File

@ -57,18 +57,16 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
// Protected to ensure subclasses are correctly activated. Internal for ease of use when testing.
[Activate]
protected internal ILoggerFactory LoggerFactory { get; set; }
protected internal ILogger<LinkTagHelper> Logger { get; set; }
/// <inheritdoc />
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var logger = LoggerFactory.Create<LinkTagHelper>();
if (!context.AllRequiredAttributesArePresent(RequiredAttributes, logger))
if (!context.AllRequiredAttributesArePresent(RequiredAttributes, Logger))
{
if (logger.IsEnabled(LogLevel.Verbose))
if (Logger.IsEnabled(LogLevel.Verbose))
{
logger.WriteVerbose("Skipping processing for {0} {1}", nameof(LinkTagHelper), context.UniqueId);
Logger.WriteVerbose("Skipping processing for {0} {1}", nameof(LinkTagHelper), context.UniqueId);
}
return;
}
@ -101,7 +99,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
JavaScriptUtility.JavaScriptStringEncode(FallbackTestValue),
JavaScriptUtility.JavaScriptStringEncode(FallbackHref));
content.Append("</script>");
output.Content = content.ToString();
}
}

View File

@ -26,12 +26,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
{ "asp-fallback-test-value", "hidden" },
});
var output = MakeTagHelperOutput("link");
var loggerFactory = new Mock<ILoggerFactory>();
var logger = new Mock<ILogger<LinkTagHelper>>();
// Act
var helper = new LinkTagHelper
{
LoggerFactory = loggerFactory.Object,
Logger = logger.Object,
FallbackHref = "test.css",
FallbackTestClass = "hidden",
FallbackTestProperty = "visible",
@ -44,7 +44,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
Assert.NotNull(output.Content);
Assert.True(output.ContentSet);
}
[Fact]
public void PreservesOrderOfSourceAttributesWhenRun()
{
@ -67,12 +67,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
{ "data-extra", "something"},
{ "href", "test.css"}
});
var loggerFactory = new Mock<ILoggerFactory>();
var logger = new Mock<ILogger<LinkTagHelper>>();
// Act
var helper = new LinkTagHelper
{
LoggerFactory = loggerFactory.Object,
Logger = logger.Object,
FallbackHref = "test.css",
FallbackTestClass = "hidden",
FallbackTestProperty = "visible",
@ -83,7 +83,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
// Assert
Assert.StartsWith("<link rel=\"stylesheet\" data-extra=\"something\" href=\"test.css\"", output.Content);
}
[Fact]
public void DoesNotRunWhenARequiredAttributeIsMissing()
{
@ -97,14 +97,12 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
{ "asp-fallback-test-value", "hidden" },
});
var output = MakeTagHelperOutput("link");
var logger = new Mock<ILogger>();
var loggerFactory = new Mock<ILoggerFactory>();
loggerFactory.Setup(f => f.Create(It.IsAny<string>())).Returns(logger.Object);
var logger = new Mock<ILogger<LinkTagHelper>>();
// Act
var helper = new LinkTagHelper
{
LoggerFactory = loggerFactory.Object,
Logger = logger.Object,
// This is commented out on purpose: FallbackHref = "test.css",
FallbackTestClass = "hidden",
FallbackTestProperty = "visible",
@ -116,21 +114,19 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
Assert.NotNull(output.TagName);
Assert.False(output.ContentSet);
}
[Fact]
public void DoesNotRunWhenAllRequiredAttributesAreMissing()
{
// Arrange
var context = MakeTagHelperContext();
var output = MakeTagHelperOutput("link");
var logger = new Mock<ILogger>();
var loggerFactory = new Mock<ILoggerFactory>();
loggerFactory.Setup(f => f.Create(It.IsAny<string>())).Returns(logger.Object);
var logger = new Mock<ILogger<LinkTagHelper>>();
// Act
var helper = new LinkTagHelper
{
LoggerFactory = loggerFactory.Object
Logger = logger.Object
};
helper.Process(context, output);
@ -138,7 +134,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers.Test
Assert.NotNull(output.TagName);
Assert.False(output.ContentSet);
}
private TagHelperContext MakeTagHelperContext(
IDictionary<string, object> attributes = null,
string content = null)