Exemple #1
0
        public async Task ProcessAsync_CallsIntoRouteLinkWithExpectedParameters()
        {
            // Arrange
            var context = new TagHelperContext(
                allAttributes: new TagHelperAttributeList(
                    Enumerable.Empty <TagHelperAttribute>()),
                items: new Dictionary <object, object>(),
                uniqueId: "test");
            var output = new TagHelperOutput(
                "a",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            output.Content.SetContent(string.Empty);

            var generator = new Mock <IHtmlGenerator>(MockBehavior.Strict);

            generator
            .Setup(mock => mock.GenerateRouteLink(
                       It.IsAny <ViewContext>(),
                       string.Empty,
                       "Default",
                       "http",
                       "contoso.com",
                       "hello=world",
                       It.IsAny <IDictionary <string, object> >(),
                       null))
            .Returns(new TagBuilder("a"))
            .Verifiable();
            var anchorTagHelper = new AnchorTagHelper(generator.Object)
            {
                Fragment = "hello=world",
                Host     = "contoso.com",
                Protocol = "http",
                Route    = "Default",
            };

            // Act & Assert
            await anchorTagHelper.ProcessAsync(context, output);

            generator.Verify();
            Assert.Equal("a", output.TagName);
            Assert.Empty(output.Attributes);
            Assert.True(output.Content.GetContent().Length == 0);
        }
    public void CanGetContent()
    {
        // Arrange
        var tagHelperContent = new DefaultTagHelperContent();
        var expected         = "Hello World!";

        tagHelperContent.SetContent(expected);

        // Act
        var actual = tagHelperContent.GetContent();

        // Assert
        Assert.Equal(expected, actual);
    }
Exemple #3
0
        public async Task Process_GeneratesExpectedOutput(
            Column column,
            DataRow dataRow,
            NameAndId nameAndId,
            string expectedContent)
        {
            // Arrange
            var expectedAttributes = new TagHelperAttributeList
            {
                { "class", "form-control" },
                { "id", nameAndId.Id },
                { "name", nameAndId.Name },
            };
            var expectedTagName = "not-textarea";

            var tagHelper = GetTagHelper(column, dataRow: dataRow);

            var tagHelperContext = new TagHelperContext(
                tagName: "text-area",
                allAttributes: new TagHelperAttributeList(Enumerable.Empty <TagHelperAttribute>()),
                items: new Dictionary <object, object>(),
                uniqueId: "test");
            var htmlAttributes = new TagHelperAttributeList
            {
                { "class", "form-control" },
            };
            var output = new TagHelperOutput(
                expectedTagName,
                htmlAttributes,
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            })
            {
                TagMode = TagMode.SelfClosing,
            };

            output.Content.SetContent("original content");

            // Act
            await tagHelper.ProcessAsync(tagHelperContext, output);

            // Assert
            Assert.Equal(TagMode.SelfClosing, output.TagMode);
            Assert.Equal(expectedAttributes, output.Attributes);
            Assert.Equal(expectedContent, HtmlContentUtilities.HtmlContentToString(output.Content));
            Assert.Equal(expectedTagName, output.TagName);
        }
    public void Fluent_Clear_Set_Append_WritesExpectedContent()
    {
        // Arrange
        var tagHelperContent = new DefaultTagHelperContent();
        var expected         = "HtmlEncode[[Hello ]]HtmlEncode[[World!]]";

        tagHelperContent.SetContent("Some Random Content");

        // Act
        tagHelperContent.Clear().SetContent("Hello ").Append("World!");

        // Assert
        Assert.Equal(expected, tagHelperContent.GetContent(new HtmlTestEncoder()));
    }
        public async Task ProcessAsync_CallsIntoGenerateValidationMessageWithExpectedParameters()
        {
            // Arrange
            var expectedViewContext = CreateViewContext();
            var generator           = new Mock <IHtmlGenerator>();

            generator
            .Setup(mock =>
                   mock.GenerateValidationMessage(expectedViewContext, "Hello", null, null, null))
            .Returns(new TagBuilder("span"))
            .Verifiable();

            var validationMessageTagHelper = new ValidationMessageTagHelper(generator.Object)
            {
                For = CreateModelExpression("Hello")
            };
            var expectedPreContent  = "original pre-content";
            var expectedContent     = "original content";
            var expectedPostContent = "original post-content";
            var context             = new TagHelperContext(
                allAttributes: new ReadOnlyTagHelperAttributeList <IReadOnlyTagHelperAttribute>(
                    Enumerable.Empty <IReadOnlyTagHelperAttribute>()),
                items: new Dictionary <object, object>(),
                uniqueId: "test",
                getChildContentAsync: useCachedResult =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });
            var output = new TagHelperOutput(
                "span",
                attributes: new TagHelperAttributeList());

            output.PreContent.SetContent(expectedPreContent);
            output.Content.SetContent(expectedContent);
            output.PostContent.SetContent(expectedPostContent);

            validationMessageTagHelper.ViewContext = expectedViewContext;

            // Act & Assert
            await validationMessageTagHelper.ProcessAsync(context, output : output);

            generator.Verify();
            Assert.Equal("span", output.TagName);
            Assert.Empty(output.Attributes);
            Assert.Equal(expectedPreContent, output.PreContent.GetContent());
            Assert.Equal(expectedContent, output.Content.GetContent());
            Assert.Equal(expectedPostContent, output.PostContent.GetContent());
        }
Exemple #6
0
        protected TagHelperOutput GetSimpleTagHelperOutput()
        {
            var output = new TagHelperOutput("a", attributes: new TagHelperAttributeList(),
                                             getChildContentAsync: useCachedResult =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            output.Content.SetContent(string.Empty);

            return(output);
        }
 private static TagHelperContext MakeTagHelperContext(
     TagHelperAttributeList attributes)
 {
     return(new TagHelperContext(
                attributes,
                items: new Dictionary <object, object>(),
                uniqueId: Guid.NewGuid().ToString("N"),
                getChildContentAsync: useCachedResult =>
     {
         var tagHelperContent = new DefaultTagHelperContent();
         tagHelperContent.SetContent(default(string));
         return Task.FromResult <TagHelperContent>(tagHelperContent);
     }));
 }
 private static TagHelperContext GetTagHelperContext(string id           = "testid",
                                                     string childContent = "some child content")
 {
     return(new TagHelperContext(
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: id,
                getChildContentAsync: useCachedResult =>
     {
         var tagHelperContent = new DefaultTagHelperContent();
         tagHelperContent.SetContent(childContent);
         return Task.FromResult <TagHelperContent>(tagHelperContent);
     }));
 }
Exemple #9
0
        private static TagHelperOutput MakeImageTagHelperOutput(TagHelperAttributeList attributes)
        {
            attributes = attributes ?? new TagHelperAttributeList();

            return(new TagHelperOutput(
                       "img",
                       attributes,
                       getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(default(string));
                return Task.FromResult <TagHelperContent>(tagHelperContent);
            }));
        }
    public void SetHtmlContent_WithTagHelperContent_WorksAsExpected(string content, string expected)
    {
        // Arrange
        var tagHelperContent       = new DefaultTagHelperContent();
        var copiedTagHelperContent = new DefaultTagHelperContent();

        tagHelperContent.SetContent(content);

        // Act
        copiedTagHelperContent.SetHtmlContent(tagHelperContent);

        // Assert
        Assert.Equal(expected, copiedTagHelperContent.GetContent(new HtmlTestEncoder()));
    }
        public async Task ProcessAsync_CallsIntoGenerateFormWithExpectedParameters()
        {
            // Arrange
            var viewContext = CreateViewContext();
            var context = new TagHelperContext(
                tagName: "form",
                allAttributes: new TagHelperAttributeList(
                    Enumerable.Empty<TagHelperAttribute>()),
                items: new Dictionary<object, object>(),
                uniqueId: "test");
            var output = new TagHelperOutput(
                "form",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
                {
                    var tagHelperContent = new DefaultTagHelperContent();
                    tagHelperContent.SetContent("Something");
                    return Task.FromResult<TagHelperContent>(tagHelperContent);
                });
            var generator = new Mock<IHtmlGenerator>(MockBehavior.Strict);
            generator
                .Setup(mock => mock.GenerateForm(
                    viewContext,
                    "Index",
                    "Home",
                    It.IsAny<IDictionary<string, object>>(),
                    null,
                    null))
                .Returns(new TagBuilder("form"))
                .Verifiable();
            var formTagHelper = new FormTagHelper(generator.Object)
            {
                Action = "Index",
                Antiforgery = false,
                Controller = "Home",
                ViewContext = viewContext,
            };

            // Act & Assert
            await formTagHelper.ProcessAsync(context, output);
            generator.Verify();

            Assert.Equal("form", output.TagName);
            Assert.Equal(TagMode.StartTagAndEndTag, output.TagMode);
            Assert.Empty(output.Attributes);
            Assert.Empty(output.PreElement.GetContent());
            Assert.Empty(output.PreContent.GetContent());
            Assert.True(output.Content.GetContent().Length == 0);
            Assert.Empty(output.PostContent.GetContent());
        }
Exemple #12
0
        private static TagHelperOutput GetOutput()
        {
            var output = new TagHelperOutput(
                "test",
                new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Hello World");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            return(output);
        }
    public void IsEmptyOrWhiteSpace_FalseAfterAppendTagHelperContent()
    {
        // Arrange
        var tagHelperContent       = new DefaultTagHelperContent();
        var copiedTagHelperContent = new DefaultTagHelperContent();

        copiedTagHelperContent.SetContent("Hello");

        // Act
        tagHelperContent.AppendHtml(copiedTagHelperContent);

        // Assert
        Assert.False(tagHelperContent.IsEmptyOrWhiteSpace);
    }
Exemple #14
0
        public async Task ProcessAsync_SupportsAntiforgeryIfActionIsSpecified(
            bool?antiforgery,
            string expectedPostContent)
        {
            // Arrange
            var viewContext = CreateViewContext();
            var generator   = new Mock <IHtmlGenerator>();

            generator.Setup(mock => mock.GenerateAntiforgery(It.IsAny <ViewContext>()))
            .Returns(new HtmlString("<input />"));
            var formTagHelper = new FormTagHelper(generator.Object)
            {
                Antiforgery = antiforgery,
                ViewContext = viewContext,
            };

            var output = new TagHelperOutput(
                tagName: "form",
                attributes: new TagHelperAttributeList
            {
                { "aCTiON", "my-action" },
            },
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });
            var context = new TagHelperContext(
                tagName: "form",
                allAttributes: new TagHelperAttributeList(
                    Enumerable.Empty <TagHelperAttribute>()),
                items: new Dictionary <object, object>(),
                uniqueId: "test");


            // Act
            await formTagHelper.ProcessAsync(context, output);

            // Assert
            Assert.Equal("form", output.TagName);
            Assert.Equal(TagMode.StartTagAndEndTag, output.TagMode);
            var attribute = Assert.Single(output.Attributes);

            Assert.Equal(new TagHelperAttribute("aCTiON", "my-action"), attribute);
            Assert.Empty(output.PreContent.GetContent());
            Assert.True(output.Content.GetContent().Length == 0);
            Assert.Equal(expectedPostContent, output.PostContent.GetContent());
        }
    public void WriteTo_WritesToATextWriter()
    {
        // Arrange
        var tagHelperContent = new DefaultTagHelperContent();
        var writer           = new StringWriter();

        tagHelperContent.SetContent("Hello ");
        tagHelperContent.Append("World");

        // Act
        tagHelperContent.WriteTo(writer, new HtmlTestEncoder());

        // Assert
        Assert.Equal("HtmlEncode[[Hello ]]HtmlEncode[[World]]", writer.ToString());
    }
    public void Fluent_SetContent_AppendFormat_Append_WritesExpectedContent()
    {
        // Arrange
        var tagHelperContent = new DefaultTagHelperContent();
        var expected         = "HtmlEncode[[First ]]HtmlEncode[[Second]] Third HtmlEncode[[Fourth]]";

        // Act
        tagHelperContent
        .SetContent("First ")
        .AppendFormat(CultureInfo.InvariantCulture, "{0} Third ", "Second")
        .Append("Fourth");

        // Assert
        Assert.Equal(expected, tagHelperContent.GetContent(new HtmlTestEncoder()));
    }
    public void CanAppendDefaultTagHelperContent()
    {
        // Arrange
        var tagHelperContent  = new DefaultTagHelperContent();
        var helloWorldContent = new DefaultTagHelperContent();

        helloWorldContent.SetContent("HelloWorld");
        var expected = "Content was HtmlEncode[[HelloWorld]]";

        // Act
        tagHelperContent.AppendFormat(CultureInfo.InvariantCulture, "Content was {0}", helloWorldContent);

        // Assert
        Assert.Equal(expected, tagHelperContent.GetContent(new HtmlTestEncoder()));
    }
        public async Task RichTextTagHelperShouldGenerateCorrectHTmlOutputWithTags()
        {
            //Arrange
            var taghelper = new ContentfulRichTextTagHelper(new HtmlRenderer());

            taghelper.Document = new Document
            {
                Content = new List <IContent>
                {
                    new Paragraph
                    {
                        Content = new List <IContent>
                        {
                            new Text
                            {
                                Value = "Hello friends!",
                                Marks = new List <Mark>
                                {
                                    new Mark
                                    {
                                        Type = "bold"
                                    },
                                    new Mark
                                    {
                                        Type = "italic"
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var context = new TagHelperContext(new TagHelperAttributeList(), new Dictionary <object, object>(), "test");
            var output  = new TagHelperOutput("div", new TagHelperAttributeList(), (b, c) => {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            //Act
            await taghelper.ProcessAsync(context, output);

            var html = output.Content.GetContent();

            //Assert
            Assert.Equal("<p><strong><em>Hello friends!</em></strong></p>", html);
        }
        public async Task ProcessAsync_WithDisableAutoFocusSpecified_GeneratesExpectedOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-notification-banner",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-notification-banner",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("The message.");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new NotificationBannerTagHelper()
            {
                DisableAutoFocus = true,
                Type             = NotificationBannerType.Success
            };

            // Act
            await tagHelper.ProcessAsync(context, output);

            // Assert
            var expectedHtml = @"
<div
    class=""govuk-notification-banner govuk-notification-banner--success""
    role=""alert""
    aria-labelledby=""govuk-notification-banner-title""
    data-module=""govuk-notification-banner""
    data-disable-auto-focus=""true"">
    <div class=""govuk-notification-banner__header"">
        <h2 class=""govuk-notification-banner__title"" id=""govuk-notification-banner-title"">
            Success
        </h2>
    </div>
    <div class=""govuk-notification-banner__content"">
        The message.
    </div>
</div>";

            AssertEx.HtmlEqual(expectedHtml, output.RenderToString());
        }
Exemple #20
0
        public async Task ProcessAsync_InvokesGeneratePageForm_WithOnlyPageHandler()
        {
            // Arrange
            var viewContext = CreateViewContext();
            var context     = new TagHelperContext(
                tagName: "form",
                allAttributes: new TagHelperAttributeList()
            {
                { "asp-handler", "page-handler" },
                { "method", "get" }
            },
                items: new Dictionary <object, object>(),
                uniqueId: "test");
            var output = new TagHelperOutput(
                "form",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });
            var generator = new Mock <IHtmlGenerator>(MockBehavior.Strict);

            generator
            .Setup(mock => mock.GeneratePageForm(
                       viewContext,
                       null,
                       "page-handler",
                       null,
                       null,
                       null,
                       null))
            .Returns(new TagBuilder("form"))
            .Verifiable();
            var formTagHelper = new FormTagHelper(generator.Object)
            {
                ViewContext = viewContext,
                PageHandler = "page-handler",
                Method      = "get"
            };

            // Act & Assert
            await formTagHelper.ProcessAsync(context, output);

            generator.Verify();
        }
Exemple #21
0
        public async Task ProcessAsync_SupportsAntiForgeryIfActionIsSpecified(
            bool?antiForgery,
            string expectedPostContent)
        {
            // Arrange
            var viewContext = CreateViewContext();
            var generator   = new Mock <IHtmlGenerator>();

            generator.Setup(mock => mock.GenerateAntiForgery(It.IsAny <ViewContext>()))
            .Returns(new TagBuilder("input", new CommonTestEncoder()));
            var formTagHelper = new FormTagHelper(generator.Object)
            {
                AntiForgery = antiForgery,
                ViewContext = viewContext,
            };

            var output = new TagHelperOutput("form",
                                             attributes: new TagHelperAttributeList
            {
                { "aCTiON", "my-action" },
            });
            var context = new TagHelperContext(
                allAttributes: new ReadOnlyTagHelperAttributeList <IReadOnlyTagHelperAttribute>(
                    Enumerable.Empty <IReadOnlyTagHelperAttribute>()),
                items: new Dictionary <object, object>(),
                uniqueId: "test",
                getChildContentAsync: () =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });


            // Act
            await formTagHelper.ProcessAsync(context, output);

            // Assert
            Assert.Equal("form", output.TagName);
            Assert.False(output.SelfClosing);
            var attribute = Assert.Single(output.Attributes);

            Assert.Equal(new TagHelperAttribute("aCTiON", "my-action"), attribute);
            Assert.Empty(output.PreContent.GetContent());
            Assert.True(output.Content.IsEmpty);
            Assert.Equal(expectedPostContent, output.PostContent.GetContent());
        }
Exemple #22
0
        public void RenderMetaTags_ZeroValueForPlayerWidth_ExceptionThrown()
        {
            var       expected        = typeof(ArgumentOutOfRangeException);
            Exception thrownException = null;

            try
            {
                TwitterCardPlayer myTagHelper = new TwitterCardPlayer()
                {
                    Title        = TwitterCardAnswerKey.TitleValue,
                    Description  = TwitterCardAnswerKey.DescriptionValue,
                    SiteUsername = TwitterCardAnswerKey.SiteUsernameValue,
                    Image        = new TwitterImage(
                        TwitterCardAnswerKey.ImageUrlValue,
                        TwitterCardAnswerKey.ImageWidthValue,
                        TwitterCardAnswerKey.ImageHeightValue),
                    Player = new TwitterPlayer(
                        TwitterCardAnswerKey.PlayerUrlValue,
                        0,
                        TwitterCardAnswerKey.PlayerHeightValue)
                };

                var context = new TagHelperContext(
                    new TagHelperAttributeList(),
                    new Dictionary <object, object>(),
                    Guid.NewGuid().ToString("N"));

                var output = new TagHelperOutput(
                    "meta",
                    new TagHelperAttributeList(),
                    (cache, encoder) =>
                {
                    var tagHelperContent = new DefaultTagHelperContent();
                    tagHelperContent.SetContent(string.Empty);
                    return(Task.FromResult <TagHelperContent>(tagHelperContent));
                });

                myTagHelper.Process(context, output);
            }
            catch (Exception e)
            {
                thrownException = e;
            }

            Assert.Equal(expected, thrownException.GetType());
            Assert.Equal("width", ((ArgumentException)thrownException).ParamName.ToString());
        }
 public void TestInitialize()
 {
     _context = new TagHelperContext(
         new TagHelperAttributeList(),
         new Dictionary <object, object>(),
         Guid.NewGuid().ToString("N"));
     _output = new TagHelperOutput(
         "responsive-images",
         new TagHelperAttributeList(),
         (_, __) =>
     {
         var tagHelperContent = new DefaultTagHelperContent();
         tagHelperContent.SetContent(string.Empty);
         return(Task.FromResult <TagHelperContent>(tagHelperContent));
     }
         );
 }
Exemple #24
0
        public async Task ProcessAsync_InvokesGeneratePageForm()
        {
            // Arrange
            var viewContext = CreateViewContext();
            var context     = new TagHelperContext(
                tagName: "form",
                allAttributes: new TagHelperAttributeList(
                    Enumerable.Empty <TagHelperAttribute>()),
                items: new Dictionary <object, object>(),
                uniqueId: "test");
            var output = new TagHelperOutput(
                "form",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Something");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });
            var generator = new Mock <IHtmlGenerator>(MockBehavior.Strict);

            generator
            .Setup(mock => mock.GeneratePageForm(
                       viewContext,
                       "/Home/Admin/Post",
                       "page-handler",
                       null,
                       "hello-world",
                       null,
                       null))
            .Returns(new TagBuilder("form"))
            .Verifiable();
            var formTagHelper = new FormTagHelper(generator.Object)
            {
                Antiforgery = false,
                ViewContext = viewContext,
                Page        = "/Home/Admin/Post",
                PageHandler = "page-handler",
                Fragment    = "hello-world",
            };

            // Act & Assert
            await formTagHelper.ProcessAsync(context, output);

            generator.Verify();
        }
Exemple #25
0
        private TagHelperContext MakeTagHelperContext(
            TagHelperAttributeList attributes = null,
            string content = null)
        {
            attributes = attributes ?? new TagHelperAttributeList();

            return(new TagHelperContext(
                       attributes,
                       items: new Dictionary <object, object>(),
                       uniqueId: Guid.NewGuid().ToString("N"),
                       getChildContentAsync: () =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(content);
                return Task.FromResult <TagHelperContent>(tagHelperContent);
            }));
        }
        public async Task ProcessAsync_IsPageHeadingGeneratesExpectedOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-fieldset",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-fieldset",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var fieldsetContext = (FieldsetContext)context.Items[typeof(FieldsetContext)];
                fieldsetContext.TrySetLegend(
                    isPageHeading: true,
                    attributes: null,
                    content: new HtmlString("Legend text"));

                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Main text");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new FieldsetTagHelper(new DefaultGovUkHtmlGenerator())
            {
                DescribedBy = "describedby",
                Role        = "therole"
            };

            // Act
            await tagHelper.ProcessAsync(context, output);

            // Assert
            var html = output.AsString();

            Assert.Equal(
                "<fieldset aria-describedby=\"describedby\" class=\"govuk-fieldset\" role=\"therole\">" +
                "<legend class=\"govuk-fieldset__legend\">" +
                "<h1 class=\"govuk-fieldset__heading\">Legend text</h1>" +
                "</legend>" +
                "Main text" +
                "</fieldset>",
                html);
        }
        private TagHelperOutput MakeTagHelperOutput(
            string tagName,
            TagHelperAttributeList attributes = null,
            string childContent = null)
        {
            attributes = attributes ?? new TagHelperAttributeList();

            return(new TagHelperOutput(
                       tagName,
                       attributes,
                       getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent(childContent);
                return Task.FromResult <TagHelperContent>(tagHelperContent);
            }));
        }
        public async Task ProcessAsync_WithTitle_GeneratesExpectedOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-notification-banner",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-notification-banner",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var notificationBannerContext = context.GetContextItem <NotificationBannerContext>();
                notificationBannerContext.SetTitle(id: "title-id", headingLevel: 4, content: new HtmlString("Title"));

                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("The message.");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new NotificationBannerTagHelper();

            // Act
            await tagHelper.ProcessAsync(context, output);

            // Assert
            var expectedHtml = @"
<div
    class=""govuk-notification-banner""
    role=""region""
    aria-labelledby=""title-id""
    data-module=""govuk-notification-banner"">
    <div class=""govuk-notification-banner__header"">
        <h4 class=""govuk-notification-banner__title"" id=""title-id"">
            Title
        </h4>
    </div>
    <div class=""govuk-notification-banner__content"">
        The message.
    </div>
</div>";

            AssertEx.HtmlEqual(expectedHtml, output.RenderToString());
        }
Exemple #29
0
        public async Task ProcessAsync_AddsActionToContext()
        {
            // Arrange
            var summaryListContext = new SummaryListContext();
            var rowContext         = new SummaryListRowContext();

            var context = new TagHelperContext(
                tagName: "govuk-summary-list-row-action",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>()
            {
                { typeof(SummaryListContext), summaryListContext },
                { typeof(SummaryListRowContext), rowContext }
            },
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-summary-list-row-action",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Action content");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new SummaryListRowActionTagHelper(
                new DefaultGovUkHtmlGenerator(),
                Mock.Of <IUrlHelperFactory>())
            {
                Href = "href",
                VisuallyHiddenText = "vht"
            };

            // Act
            await tagHelper.ProcessAsync(context, output);

            // Assert
            Assert.Equal(1, rowContext.Actions.Count);

            var firstAction = rowContext.Actions.First();

            Assert.Equal("vht", firstAction.VisuallyHiddenText);
            Assert.Equal("href", firstAction.Href);
            Assert.Equal("Action content", firstAction.Content.AsString());
        }
        public async Task ProcessAsync_LegendHasIsPageHeading_GeneratesExpectedOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-fieldset",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-fieldset",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var fieldsetContext = context.GetContextItem <FieldsetContext>();

                fieldsetContext.SetLegend(
                    isPageHeading: true,
                    attributes: null,
                    content: new HtmlString("Legend text"));

                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Main content");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new FieldsetTagHelper()
            {
                DescribedBy = "describedby",
                Role        = "therole"
            };

            // Act
            await tagHelper.ProcessAsync(context, output);

            // Assert
            var expectedHtml = @"
<fieldset aria-describedby=""describedby"" class=""govuk-fieldset"" role=""therole"">
    <legend class=""govuk-fieldset__legend"">
        <h1 class=""govuk-fieldset__heading"">Legend text</h1>
    </legend>
    Main content
</fieldset>";

            AssertEx.HtmlEqual(expectedHtml, output.RenderToString());
        }