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. // Protected to ensure subclasses are correctly activated. Internal for ease of use when testing.
[Activate] [Activate]
protected internal ILoggerFactory LoggerFactory { get; set; } protected internal ILogger<LinkTagHelper> Logger { get; set; }
/// <inheritdoc /> /// <inheritdoc />
public override void Process(TagHelperContext context, TagHelperOutput output) 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; return;
} }
@ -101,7 +99,7 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
JavaScriptUtility.JavaScriptStringEncode(FallbackTestValue), JavaScriptUtility.JavaScriptStringEncode(FallbackTestValue),
JavaScriptUtility.JavaScriptStringEncode(FallbackHref)); JavaScriptUtility.JavaScriptStringEncode(FallbackHref));
content.Append("</script>"); content.Append("</script>");
output.Content = content.ToString(); output.Content = content.ToString();
} }
} }

View File

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