public async Task ProcessAsync_RowIsMissingKey_ThrowsInvalidOperationException() { // Arrange var summaryListContext = new SummaryListContext(); var context = new TagHelperContext( tagName: "govuk-summary-list-row", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowTagHelper(); // Act var ex = await Record.ExceptionAsync(() => tagHelper.ProcessAsync(context, output)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("A <govuk-summary-list-row-key> element must be provided.", ex.Message); }
public async Task ProcessAsync_AddsRowToContext() { // Arrange var summaryListContext = new SummaryListContext(); var context = new TagHelperContext( tagName: "govuk-summary-list-row", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var rowContext = (SummaryListRowContext)context.Items[typeof(SummaryListRowContext)]; rowContext.TrySetKey(new HtmlString("Key")); rowContext.TrySetValue(new HtmlString("Value")); rowContext.AddAction(new SummaryListRowAction() { Content = new HtmlString("First action"), Href = "first", VisuallyHiddenText = "vht1" }); rowContext.AddAction(new SummaryListRowAction() { Content = new HtmlString("Second action"), Href = "second", VisuallyHiddenText = "vht2" }); var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowTagHelper(); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Equal(1, summaryListContext.Rows.Count); var firstRow = summaryListContext.Rows.First(); Assert.Equal("Key", firstRow.Key.AsString()); Assert.Equal("Value", firstRow.Value.AsString()); Assert.Equal(2, firstRow.Actions.Count()); Assert.Equal("First action", firstRow.Actions.First().Content.AsString()); Assert.Equal("first", firstRow.Actions.First().Href); Assert.Equal("vht1", firstRow.Actions.First().VisuallyHiddenText); Assert.Equal("Second action", firstRow.Actions.Skip(1).First().Content.AsString()); Assert.Equal("second", firstRow.Actions.Skip(1).First().Href); Assert.Equal("vht2", firstRow.Actions.Skip(1).First().VisuallyHiddenText); }
public async Task ProcessAsync_AddsRowToContext() { // Arrange var summaryListContext = new SummaryListContext(); var context = new TagHelperContext( tagName: "govuk-summary-list-row", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(SummaryListContext), summaryListContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-summary-list-row", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var rowContext = (SummaryListRowContext)context.Items[typeof(SummaryListRowContext)]; rowContext.SetKey(new AttributeDictionary(), new HtmlString("Key")); rowContext.SetValue(new AttributeDictionary(), new HtmlString("Value")); rowContext.AddAction(new SummaryListRowAction() { Attributes = new AttributeDictionary() { { "href", "first" } }, Content = new HtmlString("First action"), VisuallyHiddenText = "vht1" }); rowContext.AddAction(new SummaryListRowAction() { Attributes = new AttributeDictionary() { { "href", "second" } }, Content = new HtmlString("Second action"), VisuallyHiddenText = "vht2" }); var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new SummaryListRowTagHelper(); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Equal(1, summaryListContext.Rows.Count); Assert.Collection( summaryListContext.Rows, row => { Assert.Equal("Key", row.Key.Content.RenderToString()); Assert.Equal("Value", row.Value.Content.RenderToString()); Assert.Collection( row.Actions.Items, action => { Assert.Equal("First action", action.Content.RenderToString()); Assert.Contains(action.Attributes, kvp => kvp.Key == "href" && kvp.Value == "first"); Assert.Equal("vht1", action.VisuallyHiddenText); }, action => { Assert.Equal("Second action", action.Content.RenderToString()); Assert.Contains(action.Attributes, kvp => kvp.Key == "href" && kvp.Value == "second"); Assert.Equal("vht2", action.VisuallyHiddenText); }); }); }