internal ErrorSummaryItemTagHelper( IOptions <GovUkFrontendAspNetCoreOptions> optionsAccessor, DateInputParseErrorsProvider dateInputParseErrorsProvider, IModelHelper?modelHelper = null) { _options = Guard.ArgumentNotNull(nameof(optionsAccessor), optionsAccessor).Value; _dateInputParseErrorsProvider = Guard.ArgumentNotNull(nameof(dateInputParseErrorsProvider), dateInputParseErrorsProvider); _modelHelper = modelHelper ?? new DefaultModelHelper(); }
public async Task ProcessAsync_BothHrefAndAspForSpecified_UsesHrefAttribute() { // Arrange var errorSummaryContext = new ErrorSummaryContext(); var context = new TagHelperContext( tagName: "govuk-error-summary-item", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(ErrorSummaryContext), errorSummaryContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-error-summary-item", attributes: new TagHelperAttributeList() { { "href", "#SomeHref" } }, getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); output.TagMode = TagMode.SelfClosing; var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(Model), new Model()) .GetExplorerForProperty(nameof(Model.Field)); var viewContext = new ViewContext(); var options = Options.Create(new GovUkFrontendAspNetCoreOptions()); var dateInputParseErrorsProvider = new DateInputParseErrorsProvider(); viewContext.ModelState.AddModelError(nameof(Model.Field), "ModelState error message"); var tagHelper = new ErrorSummaryItemTagHelper(options, dateInputParseErrorsProvider) { AspFor = new ModelExpression(nameof(Model.Field), modelExplorer), ViewContext = viewContext }; // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Collection( errorSummaryContext.Items, item => { Assert.Equal("#SomeHref", item.Href); }); }
internal DateInputTagHelper( IOptions <GovUkFrontendAspNetCoreOptions> optionsAccessor, DateInputParseErrorsProvider dateInputParseErrorsProvider, IGovUkHtmlGenerator?htmlGenerator = null, IModelHelper?modelHelper = null) : base( htmlGenerator ?? new ComponentGenerator(), modelHelper ?? new DefaultModelHelper()) { _options = Guard.ArgumentNotNull(nameof(optionsAccessor), optionsAccessor).Value; _dateInputParseErrorsProvider = Guard.ArgumentNotNull(nameof(dateInputParseErrorsProvider), dateInputParseErrorsProvider); }
public async Task ProcessAsync_HrefAttributeSpecifiedOrDerived_SetsHrefOnItem() { // Arrange var errorSummaryContext = new ErrorSummaryContext(); var context = new TagHelperContext( tagName: "govuk-error-summary-item", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(ErrorSummaryContext), errorSummaryContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-error-summary-item", attributes: new TagHelperAttributeList() { { "href", "#TheField" } }, getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetContent("Error message"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var options = Options.Create(new GovUkFrontendAspNetCoreOptions()); var dateInputParseErrorsProvider = new DateInputParseErrorsProvider(); var tagHelper = new ErrorSummaryItemTagHelper(options, dateInputParseErrorsProvider); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Collection( errorSummaryContext.Items, item => { Assert.Equal("#TheField", item.Href); }); }
public async Task ProcessAsync_NoContentOrAspNetFor_ThrowsInvalidOperationException() { // Arrange var errorSummaryContext = new ErrorSummaryContext(); var context = new TagHelperContext( tagName: "govuk-error-summary-item", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(ErrorSummaryContext), errorSummaryContext } }, uniqueId: "test"); var output = new TagHelperOutput( "govuk-error-summary-item", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); output.TagMode = TagMode.SelfClosing; var options = Options.Create(new GovUkFrontendAspNetCoreOptions()); var dateInputParseErrorsProvider = new DateInputParseErrorsProvider(); var tagHelper = new ErrorSummaryItemTagHelper(options, dateInputParseErrorsProvider); // Act var ex = await Record.ExceptionAsync(() => tagHelper.ProcessAsync(context, output)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("Content is required when the 'asp-for' attribute is not specified.", ex.Message); }
public DateInputTagHelper( IOptions <GovUkFrontendAspNetCoreOptions> optionsAccessor, DateInputParseErrorsProvider dateInputParseErrorsProvider) : this(optionsAccessor, dateInputParseErrorsProvider, htmlGenerator : null, modelHelper : null) { }
public ErrorSummaryItemTagHelper( IOptions <GovUkFrontendAspNetCoreOptions> optionsAccessor, DateInputParseErrorsProvider dateInputParseErrorsProvider) : this(optionsAccessor, dateInputParseErrorsProvider, modelHelper : null) { }