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);
        }
Пример #2
0
        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);
                });
            });
        }