Beispiel #1
0
    public void Process_DoesNothingIfTagNameIsNull()
    {
        // Arrange
        var tagHelperOutput = new TagHelperOutput(
            tagName: null,
            attributes: new TagHelperAttributeList
        {
            { "href", "~/home/index.html" }
        },
            getChildContentAsync: (useCachedResult, encoder) => Task.FromResult <TagHelperContent>(null));

        var tagHelper = new UrlResolutionTagHelper(Mock.Of <IUrlHelperFactory>(), new HtmlTestEncoder());
        var context   = new TagHelperContext(
            allAttributes: new TagHelperAttributeList(
                Enumerable.Empty <TagHelperAttribute>()),
            items: new Dictionary <object, object>(),
            uniqueId: "test");

        // Act
        tagHelper.Process(context, tagHelperOutput);

        // Assert
        var attribute = Assert.Single(tagHelperOutput.Attributes);

        Assert.Equal("href", attribute.Name, StringComparer.Ordinal);
        var attributeValue = Assert.IsType <string>(attribute.Value);

        Assert.Equal("~/home/index.html", attributeValue, StringComparer.Ordinal);
    }
Beispiel #2
0
    public void Process_IgnoresNonHtmlStringOrStringValues()
    {
        // Arrange
        var tagHelperOutput = new TagHelperOutput(
            tagName: "a",
            attributes: new TagHelperAttributeList
        {
            { "href", true }
        },
            getChildContentAsync: (useCachedResult, encoder) => Task.FromResult <TagHelperContent>(null));
        var tagHelper = new UrlResolutionTagHelper(urlHelperFactory: null, htmlEncoder: null);

        var context = new TagHelperContext(
            tagName: "a",
            allAttributes: new TagHelperAttributeList(
                Enumerable.Empty <TagHelperAttribute>()),
            items: new Dictionary <object, object>(),
            uniqueId: "test");

        // Act
        tagHelper.Process(context, tagHelperOutput);

        // Assert
        var attribute = Assert.Single(tagHelperOutput.Attributes);

        Assert.Equal("href", attribute.Name, StringComparer.Ordinal);
        Assert.True(Assert.IsType <bool>(attribute.Value));
        Assert.Equal(HtmlAttributeValueStyle.DoubleQuotes, attribute.ValueStyle);
    }
Beispiel #3
0
    public void Process_ThrowsWhenEncodingNeededAndIUrlHelperActsUnexpectedly()
    {
        // Arrange
        var relativeUrl = "~/home/index.html";
        var expectedExceptionMessage = Resources.FormatCouldNotResolveApplicationRelativeUrl_TagHelper(
            relativeUrl,
            nameof(IUrlHelper),
            nameof(IUrlHelper.Content),
            "removeTagHelper",
            typeof(UrlResolutionTagHelper).FullName,
            typeof(UrlResolutionTagHelper).Assembly.GetName().Name);
        var tagHelperOutput = new TagHelperOutput(
            tagName: "a",
            attributes: new TagHelperAttributeList
        {
            { "href", new HtmlString(relativeUrl) }
        },
            getChildContentAsync: (useCachedResult, encoder) => Task.FromResult <TagHelperContent>(null));
        var urlHelperMock = new Mock <IUrlHelper>();

        urlHelperMock
        .Setup(urlHelper => urlHelper.Content(It.IsAny <string>()))
        .Returns("UnexpectedResult");
        var urlHelperFactory = new Mock <IUrlHelperFactory>();

        urlHelperFactory
        .Setup(f => f.GetUrlHelper(It.IsAny <ActionContext>()))
        .Returns(urlHelperMock.Object);
        var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder());

        var context = new TagHelperContext(
            tagName: "a",
            allAttributes: new TagHelperAttributeList(
                Enumerable.Empty <TagHelperAttribute>()),
            items: new Dictionary <object, object>(),
            uniqueId: "test");

        // Act & Assert
        var exception = Assert.Throws <InvalidOperationException>(
            () => tagHelper.Process(context, tagHelperOutput));

        Assert.Equal(expectedExceptionMessage, exception.Message, StringComparer.Ordinal);
    }
Beispiel #4
0
    public void Process_ResolvesTildeSlashValues(string url, string expectedHref)
    {
        // Arrange
        var tagHelperOutput = new TagHelperOutput(
            tagName: "a",
            attributes: new TagHelperAttributeList
        {
            { "href", url }
        },
            getChildContentAsync: (useCachedResult, encoder) => Task.FromResult <TagHelperContent>(null));
        var urlHelperMock = new Mock <IUrlHelper>();

        urlHelperMock
        .Setup(urlHelper => urlHelper.Content(It.IsAny <string>()))
        .Returns(new Func <string, string>(value => "/approot" + value.Substring(1)));
        var urlHelperFactory = new Mock <IUrlHelperFactory>();

        urlHelperFactory
        .Setup(f => f.GetUrlHelper(It.IsAny <ActionContext>()))
        .Returns(urlHelperMock.Object);
        var tagHelper = new UrlResolutionTagHelper(urlHelperFactory.Object, new HtmlTestEncoder());

        var context = new TagHelperContext(
            tagName: "a",
            allAttributes: new TagHelperAttributeList(
                Enumerable.Empty <TagHelperAttribute>()),
            items: new Dictionary <object, object>(),
            uniqueId: "test");

        // Act
        tagHelper.Process(context, tagHelperOutput);

        // Assert
        var attribute = Assert.Single(tagHelperOutput.Attributes);

        Assert.Equal("href", attribute.Name, StringComparer.Ordinal);
        var attributeValue = Assert.IsType <string>(attribute.Value);

        Assert.Equal(expectedHref, attributeValue, StringComparer.Ordinal);
        Assert.Equal(HtmlAttributeValueStyle.DoubleQuotes, attribute.ValueStyle);
    }