public async Task ProcessAsync_GeneratesExpectedOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-button-link",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-button-link",
                attributes: new TagHelperAttributeList()
            {
                { "href", "http://foo.com" }
            },
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Button text");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new ButtonLinkTagHelper();

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

            // Assert
            var expectedHtml = @"
<a class=""govuk-button"" data-module=""govuk-button"" draggable=""false"" href=""http://foo.com"" role=""button"">
    Button text
</a>";

            AssertEx.HtmlEqual(expectedHtml, output.RenderToString());
        }
        public async Task ProcessAsync_Disabled_AddsDisabledAttributesToOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-button-link",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-button-link",
                attributes: new TagHelperAttributeList()
            {
                { "href", "http://foo.com" }
            },
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetContent("Button text");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new ButtonLinkTagHelper()
            {
                Disabled = true
            };

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

            // Assert
            var element = output.RenderToElement();

            Assert.Contains("govuk-button--disabled", element.ClassList);
        }
        public async Task WhenButtonLinkTagHelperCalled_ThenCorrectClassCalled()
        {
            var tagHelper = Substitute.For <IMockViewComponentHelper>();

            var componentTag = new ButtonLinkTagHelper(tagHelper)
            {
                AdditionalClass = "AdditionalClass",
                Id           = "ID",
                LinkHref     = "Link",
                LinkTabIndex = 1,
                LinkText     = "Text",
                LinkTitle    = "Title"
            };

            string additionalClass = componentTag.AdditionalClass;
            string id           = componentTag.Id;
            string linkHref     = componentTag.LinkHref;
            int    linkTabIndex = componentTag.LinkTabIndex;
            string linkText     = componentTag.LinkText;
            string linkTitle    = componentTag.LinkTitle;

            await ViewComponentTestHelper.CallTagHelper("ButtonLink", tagHelper, componentTag);
        }