public async Task ProcessAsync_AddsValueToContext() { // Arrange var summaryListContext = new SummaryListContext(); var rowContext = new SummaryListRowContext(); var context = new TagHelperContext( tagName: "govuk-summary-list-row-key", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext }, { typeof(SummaryListRowContext), rowContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row-key", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetContent("Key content"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowKeyTagHelper(); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Equal("Key content", rowContext.Key.Value.Content.RenderToString()); }
public async Task ProcessAsync_RowAlreadyHasValueThrowsInvalidOperationException() { // Arrange var summaryListContext = new SummaryListContext(); var rowContext = new SummaryListRowContext(); rowContext.TrySetValue(new HtmlString("Existing value")); var context = new TagHelperContext( tagName: "govuk-summary-list-row-value", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext }, { typeof(SummaryListRowContext), rowContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row-value", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetContent("Value content"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowValueTagHelper(); // Act & Assert var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => tagHelper.ProcessAsync(context, output)); Assert.Equal("Cannot render <govuk-summary-list-row-value> here.", ex.Message); }
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-actions", attributes: new TagHelperAttributeList() { { "href", "#" } }, getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetContent("Change"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowActionTagHelper() { VisuallyHiddenText = "vht" }; // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Collection( rowContext.Actions, action => { Assert.Equal("Change", action.Content.RenderToString()); Assert.Equal("vht", action.VisuallyHiddenText); Assert.Collection( action.Attributes, kvp => { Assert.Equal("href", kvp.Key); Assert.Equal("#", kvp.Value); }); }); }
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_AddsAttributesToContext() { // Arrange var summaryListContext = new SummaryListContext(); var rowContext = new SummaryListRowContext(); var context = new TagHelperContext( tagName: "govuk-summary-list-row-actions", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext }, { typeof(SummaryListRowContext), rowContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row-actions", attributes: new TagHelperAttributeList() { { "class", "additional-class" } }, getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowActionsTagHelper(); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Collection( rowContext.ActionsAttributes, kvp => { Assert.Equal("class", kvp.Key); Assert.Equal("additional-class", kvp.Value); }); }
public async Task ProcessAsync_ParentAlreadyHasAction_ThrowsInvalidOperationException() { // Arrange var summaryListContext = new SummaryListContext(); var rowContext = new SummaryListRowContext(); rowContext.AddAction(new HtmlGeneration.SummaryListRowAction() { Content = new HtmlString("Action") }); var context = new TagHelperContext( tagName: "govuk-summary-list-row-actions", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext }, { typeof(SummaryListRowContext), rowContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row-actions", attributes: new TagHelperAttributeList() { { "class", "additional-class" } }, getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowActionsTagHelper(); // Act var ex = await Record.ExceptionAsync(() => tagHelper.ProcessAsync(context, output)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<govuk-summary-list-row-actions> must be specified before <govuk-summary-list-row-action>.", ex.Message); }
public async Task ProcessAsync_ParentAlreadyHasKey_ThrowsInvalidOperationException() { // Arrange var summaryListContext = new SummaryListContext(); var rowContext = new SummaryListRowContext(); rowContext.SetKey(new AttributeDictionary(), new HtmlString("Key")); var context = new TagHelperContext( tagName: "govuk-summary-list-row-key", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext }, { typeof(SummaryListRowContext), rowContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row-key", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetContent("Key content"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowKeyTagHelper(); // Act var ex = await Record.ExceptionAsync(() => tagHelper.ProcessAsync(context, output)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("Only one <govuk-summary-list-row-key> element is permitted within each <govuk-summary-list-row>.", ex.Message); }