public async Task ProcessAsync_ParentAlreadyHasBody_ThrowsInvalidOperationException() { // Arrange var panelContext = new PanelContext(); panelContext.SetBody(new HtmlString("The body")); 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.SetContent("The title"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new PanelTitleTagHelper(); // Act var ex = await Record.ExceptionAsync(() => tagHelper.ProcessAsync(context, output)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<govuk-panel-title> must be specified before <govuk-panel-body>.", ex.Message); }
public async Task ProcessAsync_SetsTitleOnContext() { // 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.SetContent("The title"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new PanelTitleTagHelper(); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Equal("The title", panelContext.Title?.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); }
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_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() { HeadingLevel = 3 }; // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.NotNull(panelContext.Title); Assert.Equal(3, panelContext.Title.Value.headingLevel); Assert.Equal("Title", panelContext.Title.Value.content.AsString()); }