Example #1
0
        public void TestRenderPanel()
        {
            InitializeHttpContext();
            FeedbackMessageSettings.CreateInitializer()
            .SetScriptBuilderInstance(new FeedbackMessageScriptBuilder(msg => $"alert('{msg.ToString()}');"))
            .Initialize();


            InfoMessage("InfoMessage");
            ErrorMessage("ErrorMessage");


            var tagHelper = new FeedbackMessageScriptTagHelper();

            var tagHelperContext = new TagHelperContext(new TagHelperAttributeList(), new Dictionary <object, object>(), Guid.NewGuid().ToString("N"));
            var tagHelperOutput  = new TagHelperOutput("feedback-message-script", new TagHelperAttributeList(), (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(tagHelperContext, tagHelperOutput);


            // render, parse
            var script = tagHelperOutput.Content.GetContent();

            Assert.IsTrue(script.Contains("document.addEventListener(\"DOMContentLoaded\", function(){alert('InfoMessage');alert('ErrorMessage');});"));
        }
Example #2
0
        public async Task ProcessAsync_Script_AddsHashToHttpContextForMultiLineSnippets()
        {
            // Arrange
            var id               = Guid.NewGuid().ToString();
            var tagName          = "script";
            var tagHelperContext = GetTagHelperContext(id, tagName);
            var tagHelper        = new HashTagHelper()
            {
                CSPHashType = CSPHashType.SHA256,
                ViewContext = GetViewContext(),
            };

            var output = new TagHelperOutput(
                tagName,
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(scriptSnippet);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

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

            // Assert
            var hash     = Assert.Single(tagHelper.ViewContext.HttpContext.GetScriptCSPHashes());
            var expected = "'sha256-Oro8tit8euyKzxqyJteBRTdQBlipvXGQWfS5epMHmUU='";

            Assert.Equal(expected, hash);
        }
        public void DisplayNameForNotSet()
        {
            var m = new Model();

            var th = new DisplayNameForTagHelper
            {
                DisplayNameFor = CreateModelExpression("Something")
            };

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

            var tagHelperOutput = new TagHelperOutput("div",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            th.Process(tagHelperContext, tagHelperOutput);

            var html = tagHelperOutput.ToHtml();

            Assert.Equal("<div>Something</div>", html);
        }
Example #4
0
        public async Task ProcessAsync_Script_GeneratesExpectedOutput()
        {
            // Arrange
            var id               = Guid.NewGuid().ToString();
            var tagName          = "script";
            var tagHelperContext = GetTagHelperContext(id, tagName);
            var tagHelper        = new HashTagHelper()
            {
                CSPHashType = CSPHashType.SHA256,
                ViewContext = GetViewContext(),
            };

            var output = new TagHelperOutput(
                tagName,
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(scriptSnippet);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            output.Content.SetHtmlContent(shortSnippet);

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

            // Assert
            Assert.Equal(tagName, output.TagName);
            Assert.Empty(output.Attributes);
            Assert.Equal(shortSnippet, output.Content.GetContent());
        }
Example #5
0
        public async Task ProcessAsync_Script_AddsHashToHttpContextForOneLineSnippets()
        {
            // Arrange
            var id               = Guid.NewGuid().ToString();
            var tagName          = "script";
            var tagHelperContext = GetTagHelperContext(id, tagName);
            var tagHelper        = new HashTagHelper()
            {
                CSPHashType = CSPHashType.SHA256,
                ViewContext = GetViewContext(),
            };

            var output = new TagHelperOutput(
                tagName,
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(shortSnippet);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

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

            // Assert
            var hash     = Assert.Single(tagHelper.ViewContext.HttpContext.GetScriptCSPHashes());
            var expected = "'sha256-1yLcYHZUiV92moZ6snTrg6e0yBO8emEEpUSB2wlMFz8='";

            Assert.Equal(expected, hash);
        }
Example #6
0
        public async Task ProcessAsync_Style_AddsHashToHttpContextForOneLineSnippets()
        {
            // Arrange
            var id               = Guid.NewGuid().ToString();
            var tagName          = "style";
            var tagHelperContext = GetTagHelperContext(id, tagName);
            var tagHelper        = new HashTagHelper()
            {
                CSPHashType = CSPHashType.SHA256,
                ViewContext = GetViewContext(),
            };

            var output = new TagHelperOutput(
                tagName,
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(styleSnippet);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

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

            // Assert
            var hash     = Assert.Single(tagHelper.ViewContext.HttpContext.GetStyleCSPHashes());
            var expected = "'sha256-Wz9o8J/ijdXtAzs95rmQ8OtBacYk6JfYTXQlM8yxIjg='";

            Assert.Equal(expected, hash);
        }
        public void AddCssClassTag3()
        {
            var accth = new AddCssClassTagHelper
            {
                CssClass    = "none",
                ClassValues = new Dictionary <string, bool>
                {
                    { "bar", false }
                }
            };

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

            var tagHelperOutput = new TagHelperOutput("div",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            accth.Process(tagHelperContext, tagHelperOutput);

            var html = tagHelperOutput.ToHtml();

            Assert.Equal("<div class=\"none\"></div>", html);
        }
        public async void NavItem_And_ShowSearch_False_Should_Set_ContentMenuOnly_Toggle()
        {
            _tagHelper.HeaderType = HeaderType.Standard;
            _tagHelper.ShowSearch = false;
            _tagHelper.ShowNav    = true;
            _tagHelperContext     = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));
            _tagHelperOutput = new TagHelperOutput(string.Empty,
                                                   new TagHelperAttributeList(),
                                                   (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                return(Task.FromResult(tagHelperContent.SetHtmlContent(taghelperNavContent)));
            });

            await _tagHelper.ProcessAsync(_tagHelperContext, _tagHelperOutput);

            var expected = string.Format("<div class=\"nhsuk-width-container nhsuk-header__container\">" +
                                         "<div class=\"nhsuk-header__logo\"><a class=\"nhsuk-header__link\" href=\"/\"aria-label=\"NHS homepage\"> <svg class=\"nhsuk-logo nhsuk-logo--white\"xmlns=\"http://www.w3.org/2000/svg\" role=\"presentation\" focusable=\"false\" viewBox=\"0 0 40 16\">" +
                                         " <path fill =\"#fff\" d=\"M0 0h40v16H0z\"></path> <path fill =\"#005eb8\" d=\"M3.9 1.5h4.4l2.6 9h.1l1.8-9h3.3l-2.8 13H9l-2.7-9h-.1l-1.8 9H1.1M17.3 1.5h3.6l-1 4.9h4L25 1.5h3.5l-2.7 13h-3.5l1.1-5.6h-4.1l-1.2 5.6h-3.4M37.7 4.4c-.7-.3-1.6-.6-2.9-.6-1.4 0-2.5.2-2.5 1.3 0 1.8 5.1 1.2 5.1 5.1 0 3.6-3.3 4.5-6.4 4.5-1.3 0-2.9-.3-4-.7l.8-2.7c.7.4 2.1.7 3.2.7s2.8-.2 2.8-1.5c0-2.1-5.1-1.3-5.1-5 0-3.4 2.9-4.4 5.8-4.4 1.6 0 3.1.2 4 .6\"></path>" +
                                         " <image src =\"https://assets.nhs.uk/images/nhs-logo.png\" xlink:href=\"\"></image></svg></a></div><div class=\"nhsuk-header__content\" id=\"content-header\"><div class=\"{0}\"><button class=\"nhsuk-header__menu-toggle\"" +
                                         " id=\"toggle-menu\" aria-controls=\"header-navigation\" aria-label=\"Open menu\">Menu</button></div></div></div>", CssClasses.NhsUkHeaderMenuOnly);
            var actual = _tagHelperOutput.PreContent.GetContent();

            Assert.Equal(expected, actual);
        }
        public void Process_Will_Render_Content_When_There_Is_No_PageDataContext_And_Initialized_Is_False()
        {
            var retriever = Substitute.For <IPageDataContextRetriever>();

            retriever.TryRetrieve <TreeNode>(out Arg.Any <IPageDataContext <TreeNode> >())
            .Returns(false);

            var tagHelper = new PageDataContextTagHelper(retriever)
            {
                Initialized = false
            };

            var tagHelperContext = new TagHelperContext(
                tagName: "page-data-context",
                new TagHelperAttributeList {
            },
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var tagHelperOutput = new TagHelperOutput("page-data-context",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(new HtmlString("<h1>Hello</h1>"));
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(tagHelperContext, tagHelperOutput);

            tagHelperOutput.TagName.Should().BeNull();
            tagHelperOutput.IsContentModified.Should().BeFalse();
        }
        public void Process_Will_Render_Child_Content_When_No_Included_Modes_Are_Provided(
            string modes,
            string currentModeName)
        {
            var context = Substitute.For <IPageBuilderContext>();

            SetContextFromModeName(context, currentModeName);

            var tagHelper = new PageBuilderModeTagHelper(context)
            {
                Include = modes
            };

            var tagHelperContext = new TagHelperContext(
                tagName: "page-builder-mode",
                new TagHelperAttributeList {
            },
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var tagHelperOutput = new TagHelperOutput("page-builder-mode",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(new HtmlString("<h1>Hello</h1>"));
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(tagHelperContext, tagHelperOutput);

            tagHelperOutput.TagName.Should().BeNull();
            tagHelperOutput.IsContentModified.Should().BeFalse();
        }
Example #11
0
        public void Process_ShowPageNumbers_GeneratesExpectedOutput()
        {
            // Arrange
            var paginationInfoTagHelper = new PaginationInfoTagHelper();

            paginationInfoTagHelper.TextMode   = TextMode.ShowPageNumbers;
            paginationInfoTagHelper.Page       = 2;
            paginationInfoTagHelper.PageSize   = 10;
            paginationInfoTagHelper.TotalItems = 500;


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

            var tagHelperOutput = new TagHelperOutput("pagination-info",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            // Act
            paginationInfoTagHelper.Process(tagHelperContext, tagHelperOutput);

            // Assert
            var expectedHtml = "<li>Page 2 of 50</li>";

            var actualHtml = tagHelperOutput.Content.GetContent();

            Assert.Equal(expectedHtml, actualHtml);
        }
        public void Test1()
        {
            var sut = new ShareButtonTagHelper();

            sut.Provider = ShareProvider.Facebook;

            var tagHelperContext = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));
            var tagHelperOutput = new TagHelperOutput(
                "shareButton",
                new TagHelperAttributeList(),
                (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            sut.Process(tagHelperContext, tagHelperOutput);

            string output = tagHelperOutput.Content.GetContent();

            Assert.Equal("<a></p>", output);
        }
Example #13
0
        protected TagHelperOutput ProcessTag <TTag>(
            TTag tag,
            string html,
            object attributes,
            string childContent = "") where TTag : TagHelper
        {
            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var dictionary          = HtmlHelper.AnonymousObjectToHtmlAttributes(attributes);
            var tagHelperAttributes = new TagHelperAttributeList();

            dictionary.ForEach(item => tagHelperAttributes.Add(item.Key, item.Value));

            var output = new TagHelperOutput(
                html,
                tagHelperAttributes,
                (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(childContent);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tag.Process(context, output);

            return(output);
        }
Example #14
0
        protected TagHelperOutput ProcessTag <TTag>(
            TTag tag,
            string html,
            string childContent = "") where TTag : TagHelper
        {
            var context = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var attributes = new TagHelperAttributeList();

            var output = new TagHelperOutput(
                html,
                attributes,
                (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(childContent);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tag.Process(context, output);

            return(output);
        }
        public async Task ProcessAsync_InvalidheadingLevelThrowsInvalidOperationException(int level)
        {
            // Arrange
            var panelContext = new PanelContext();

            var context = new TagHelperContext(
                tagName: "govuk-panel-title",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>()
            {
                { typeof(PanelContext), panelContext }
            },
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-panel-title",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("Title");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new PanelTitleTagHelper()
            {
                HeadingLevel = level
            };

            // Act & Assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => tagHelper.ProcessAsync(context, output));

            Assert.Equal("The 'heading-level' attribute must be between 1 and 6.", ex.Message);
        }
        public async Task ProcessAsync_NoTitleThrowsInvalidOperationException()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-panel",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-panel",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var panelContext = (PanelContext)context.Items[typeof(PanelContext)];

                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("Body");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new PanelTagHelper(new DefaultGovUkHtmlGenerator());

            // Act & Assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => tagHelper.ProcessAsync(context, output));

            Assert.Equal("Missing <govuk-panel-title> element.", ex.Message);
        }
        public async Task ProcessAsync_GeneratesExpectedOutput()
        {
            // Arrange
            var context = new TagHelperContext(
                tagName: "govuk-panel",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>(),
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-panel",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var panelContext = (PanelContext)context.Items[typeof(PanelContext)];
                panelContext.TrySetHeading(3, new HtmlString("Title"));

                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("Body");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new PanelTagHelper(new DefaultGovUkHtmlGenerator());

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

            // Assert
            Assert.Equal(
                "<div class=\"govuk-panel--confirmation govuk-panel\"><h3 class=\"govuk-panel__title\">Title</h3><div class=\"govuk-panel__body\">Body</div></div>",
                output.AsString());
        }
Example #18
0
        public void Process()
        {
            var mock = new Mock <TagHelper>();

            mock.Setup(t => t.Process(It.IsAny <TagHelperContext>(), It.IsAny <TagHelperOutput>()))
            .Callback <TagHelperContext, TagHelperOutput>((c, o) =>
            {
                o.TagName = "div";
                o.Content.Append("test");
            }).CallBase();
            mock.Setup(t => t.ProcessAsync(It.IsAny <TagHelperContext>(), It.IsAny <TagHelperOutput>())).CallBase();
            var tagHelper        = mock.Object;
            var tagHelperContext = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));
            var tagHelperOutput = new TagHelperOutput("test",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            Should.NotThrow(() => tagHelper.ProcessAsync(tagHelperContext, tagHelperOutput));
            tagHelperOutput.TagName.ShouldBe("div");
            tagHelperOutput.Content.GetContent().ShouldBe("test");
        }
        public static string GetHtml(
            this TagHelper tagHelper,
            string tagName)
        {
            var tagHelperContext = new TagHelperContext(
                new TagHelperAttributeList(),
                new Dictionary <object, object>(),
                Guid.NewGuid().ToString("N"));

            var tagHelperOutput = new TagHelperOutput(tagName,
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);

                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            tagHelper.Process(tagHelperContext, tagHelperOutput);

            string html;

            using (var writer = new StringWriter())
            {
                tagHelperOutput.WriteTo(writer, HtmlEncoder.Default);

                html = writer.ToString();
            }

            return(html);
        }
Example #20
0
        public async Task ProcessAsync_SetsLegendOnContext()
        {
            // Arrange
            var fieldsetContext = new CheckboxesFieldsetContext();

            var context = new TagHelperContext(
                tagName: "govuk-checkboxes-fieldset-legend",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>()
            {
                { typeof(CheckboxesFieldsetContext), fieldsetContext }
            },
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-checkboxes-fieldset-legend",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(new HtmlString("Legend"));
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new CheckboxesFieldsetLegendTagHelper();

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

            // Assert
            Assert.Equal("Legend", fieldsetContext.Legend?.content?.AsString());
        }
        public async Task ProcessAsync_AddsTitleToContext()
        {
            // Arrange
            var panelContext = new PanelContext();

            var context = new TagHelperContext(
                tagName: "govuk-panel-title",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>()
            {
                { typeof(PanelContext), panelContext }
            },
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-panel-title",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("Title");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new PanelTitleTagHelper();

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

            // Assert
            Assert.NotNull(panelContext.Title);
            Assert.Equal("Title", panelContext.Title.AsString());
        }
        public async Task ProcessAsync_NoLink_AddsItemToContext()
        {
            // Arrange
            var breadcrumbsContext = new BreadcrumbsContext();

            var context = new TagHelperContext(
                tagName: "govuk-breadcrumbs-item",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>()
            {
                { typeof(BreadcrumbsContext), breadcrumbsContext }
            },
                uniqueId: "test");

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

            var tagHelper = new BreadcrumbsItemTagHelper();

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

            // Assert
            var lastItem = breadcrumbsContext.Items.Last();

            Assert.Null(lastItem.Href);
            Assert.Equal("The item", lastItem.Content.RenderToString());
        }
        public async Task ProcessAsync_ItemAlreadyHasTitleThrowsInvalidOperationException()
        {
            // Arrange
            var panelContext = new PanelContext();

            panelContext.TrySetHeading(headingLevel: null, content: new HtmlString("Existing title"));

            var context = new TagHelperContext(
                tagName: "govuk-panel-title",
                allAttributes: new TagHelperAttributeList(),
                items: new Dictionary <object, object>()
            {
                { typeof(PanelContext), panelContext }
            },
                uniqueId: "test");

            var output = new TagHelperOutput(
                "govuk-panel-title",
                attributes: new TagHelperAttributeList(),
                getChildContentAsync: (useCachedResult, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent("Title");
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            var tagHelper = new PanelTitleTagHelper();

            // Act & Assert
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => tagHelper.ProcessAsync(context, output));

            Assert.Equal("Cannot render <govuk-panel-title> here.", ex.Message);
        }
Example #24
0
 private static TagHelperOutput CreateRenderTag()
 => new TagHelperOutput("render",
                        new TagHelperAttributeList(),
                        (result, encoder) =>
 {
     var tagHelperContent = new DefaultTagHelperContent();
     tagHelperContent.SetHtmlContent(string.Empty);
     return(Task.FromResult <TagHelperContent>(tagHelperContent));
 });
Example #25
0
 private static TagHelperOutput CreateCaptureTagWith(string content)
 => new TagHelperOutput("capture",
                        new TagHelperAttributeList(),
                        (result, encoder) =>
 {
     var tagHelperContent = new DefaultTagHelperContent();
     tagHelperContent.SetHtmlContent(content);
     return(Task.FromResult <TagHelperContent>(tagHelperContent));
 });
Example #26
0
 public TagHelperOutput Build()
 {
     return(new TagHelperOutput(tag, new TagHelperAttributeList(), (result, encoder) =>
     {
         var tagHelperContent = new DefaultTagHelperContent();
         tagHelperContent.SetHtmlContent(string.Empty);
         return Task.FromResult <TagHelperContent>(tagHelperContent);
     }));
 }
        public void Process_OnFirstPage_GeneratesExpectedOutput()
        {
            // Arrange
            var pth = new PaginationTagHelper();

            pth.Page       = 1;
            pth.PageSize   = 10;
            pth.TotalItems = 50;
            pth.Url        = "/home/pager";
            var query = QueryHelpers.ParseQuery($"page={pth.Page}&pageSize={pth.PageSize}");

            request.Setup(x => x.Query).Returns(new QueryCollection(query));
            context.Setup(x => x.HttpContext.Request).Returns(request.Object);
            viewContext.HttpContext = context.Object.HttpContext;

            pth.ViewContext = viewContext;

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

            var tagHelperOutput = new TagHelperOutput("pagination",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            // Act
            pth.Process(tagHelperContext, tagHelperOutput);

            // Assert
            var expectedHtml =
                $"<ul class=\"pagination\">" +
                $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.FirstPageAriaLabel}\">{pth.FirstPageLinkText}</a></li>" +
                $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.PreviousPageAriaLabel}\">{pth.PreviousLinkText}</a></li>" +
                $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.SkipBackAriaLabel.Replace("{0}", "1")}\">{pth.SkipBackPageLink}</a></li>" +
                $"<li class=\"page-item active\"><a class=\"page-link\" aria-current=\"true\" aria-label=\"{pth.CurrentPageAriaLabel} 1\" href=\"/home/pager?page=1&pageSize={pth.PageSize}\">1</a></li>" +
                $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 2\" href=\"/home/pager?page=2&pageSize={pth.PageSize}\">2</a></li>" +
                $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 3\" href=\"/home/pager?page=3&pageSize={pth.PageSize}\">3</a></li>" +
                $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 4\" href=\"/home/pager?page=4&pageSize={pth.PageSize}\">4</a></li>" +
                $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.GotoPageAriaLabel} 5\" href=\"/home/pager?page=5&pageSize={pth.PageSize}\">5</a></li>" +
                $"<li class=\"page-item disabled\" tabindex=\"-1\"><a class=\"page-link\" aria-label=\"{pth.SkipForwardAriaLabel.Replace("{0}", "5")}\">{pth.SkipForwardPageLink}</a></li>" +
                $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.NextPageAriaLabel}\" href=\"/home/pager?page=2&pageSize={pth.PageSize}\">{pth.NextLinkText}</a></li>" +
                $"<li class=\"page-item\"><a class=\"page-link\" aria-label=\"{pth.LastPageAriaLabel}\" href=\"/home/pager?page=5&pageSize={pth.PageSize}\">{pth.LastPageLinkText}</a></li>" +
                $"</ul>";

            var actualHtml = tagHelperOutput.Content.GetContent();

            Assert.Equal(expectedHtml, actualHtml);
        }
    public void SetHtmlContent_TextIsNotFurtherEncoded()
    {
        // Arrange
        var tagHelperContent = new DefaultTagHelperContent();

        // Act
        tagHelperContent.SetHtmlContent("Hi");

        // Assert
        Assert.Equal("Hi", tagHelperContent.GetContent(new HtmlTestEncoder()));
    }
Example #29
0
        internal static TagHelperOutput GetTagHelperOutput(string tagName)
        {
            var tagHelperOutput = new TagHelperOutput(tagName,
                                                      new TagHelperAttributeList(), (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            return(tagHelperOutput);
        }
        public TagHelperOutput GetTagHelperOutput()
        {
            var tagHelperOutput = new TagHelperOutput("testOut",
                                                      new TagHelperAttributeList(),
                                                      (result, encoder) =>
            {
                var tagHelperContent = new DefaultTagHelperContent();
                tagHelperContent.SetHtmlContent(string.Empty);
                return(Task.FromResult <TagHelperContent>(tagHelperContent));
            });

            return(tagHelperOutput);
        }