public void GenerateHint_HintOnContext_ReturnsContent() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); formGroupContext.SetHint(attributes: null, content: new HtmlString("Hint")); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var hint = tagHelper.GenerateHint(tagHelperContext, formGroupContext); // Assert Assert.NotNull(hint); }
public async Task ProcessAsync_SetsErrorMessageOnContext() { // Arrange var formGroupContext = new TestFormGroupContext(); var context = new TagHelperContext( tagName: "test-hint", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(FormGroupContext), formGroupContext } }, uniqueId: "test"); var output = new TagHelperOutput( "test-hint", attributes: new TagHelperAttributeList(), getChildContentAsync: (useCachedResult, encoder) => { var tagHelperContent = new DefaultTagHelperContent(); tagHelperContent.SetContent("Hint"); return(Task.FromResult <TagHelperContent>(tagHelperContent)); }); var tagHelper = new FormGroupHintTagHelper(); // Act await tagHelper.ProcessAsync(context, output); // Assert Assert.Equal("Hint", formGroupContext.Hint?.Content?.ToString()); }
public void GenerateHint_NonEmptyModelMetadataDescription_ReturnsContent() { // Arrange var formGroupContext = new TestFormGroupContext(); var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(Model), new Model()) .GetExplorerForProperty(nameof(Model.SimpleProperty)); var viewContext = new ViewContext(); var modelExpression = nameof(Model.SimpleProperty); var modelHelper = new Mock <IModelHelper>(); modelHelper.Setup(mock => mock.GetDescription(modelExplorer)).Returns("ModelState hint"); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { AspFor = new ModelExpression(modelExpression, modelExplorer), Id = "test", ViewContext = viewContext }; // Act var hint = tagHelper.GenerateHint(tagHelperContext, formGroupContext); // Assert Assert.NotNull(hint); }
public void GenerateErrorMessage_NoErrorMessageOnContextOrModelStateErrors_ReturnsNull() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(Model), new Model()) .GetExplorerForProperty(nameof(Model.SimpleProperty)); var viewContext = new ViewContext(); var modelExpression = "Foo"; var modelHelper = new Mock <IModelHelper>(); modelHelper.Setup(mock => mock.GetValidationMessage(viewContext, modelExplorer, modelExpression)).Returns((string)null); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { AspFor = new ModelExpression(modelExpression, modelExplorer), Id = "test", ViewContext = viewContext }; // Act var errorMessage = tagHelper.GenerateErrorMessage(tagHelperContext, formGroupContext); // Assert Assert.Null(errorMessage); }
public void GenerateHint_NonEmptyHint_AddsHintIdToDescribedBy() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); formGroupContext.SetHint(attributes: null, content: new HtmlString("Hint")); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var hint = tagHelper.GenerateHint(tagHelperContext, formGroupContext); // Assert var element = hint.RenderToElement(); Assert.Equal("test-hint", element.GetAttribute("id")); Assert.Contains("test-hint", tagHelper.DescribedBy?.Split(' ') ?? Array.Empty <string>()); }
public void GenerateLabel_LabelContentOnContextAndAspFor_ReturnsContentFromContext() { // Arrange var formGroupContext = new TestFormGroupContext(); formGroupContext.SetLabel(isPageHeading: false, attributes: null, content: new HtmlString("Context label")); var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(Model), new Model()) .GetExplorerForProperty(nameof(Model.SimpleProperty)); var viewContext = new ViewContext(); var modelExpression = nameof(Model.SimpleProperty); var modelHelper = new Mock <IModelHelper>(); modelHelper.Setup(mock => mock.GetDisplayName(viewContext, modelExplorer, modelExpression)).Returns("ModelMetadata label"); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { AspFor = new ModelExpression(modelExpression, modelExplorer), Id = "test", ViewContext = viewContext }; // Act var label = tagHelper.GenerateLabel(formGroupContext); // Assert Assert.NotNull(label); Assert.Contains("Context label", label.RenderToString()); }
public void GenerateErrorMessage_ErrorMessageSetOnContext_ReturnsContent() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); formGroupContext.SetErrorMessage(visuallyHiddenText: "vht", attributes: null, content: new HtmlString("Error message")); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var errorMessage = tagHelper.GenerateErrorMessage(tagHelperContext, formGroupContext); // Assert Assert.NotNull(errorMessage); }
public void SetHint_SetsHintOnContext() { // Arrange var context = new TestFormGroupContext(); // Act context.SetHint(null, new HtmlString("Hint")); // Assert Assert.Equal("Hint", context.Hint?.Content?.ToString()); }
public void SetLabel_SetsLabelOnContext() { // Arrange var context = new TestFormGroupContext(); // Act context.SetLabel(isPageHeading: true, null, new HtmlString("Label")); // Assert Assert.True(context.Label?.IsPageHeading); Assert.Equal("Label", context.Label?.Content?.ToString()); }
public void SetErrorMessage_SetsErrorMessageOnContext() { // Arrange var context = new TestFormGroupContext(); // Act context.SetErrorMessage(visuallyHiddenText: "vht", null, new HtmlString("Error")); // Assert Assert.Equal("vht", context.ErrorMessage?.VisuallyHiddenText); Assert.Equal("Error", context.ErrorMessage?.Content?.ToString()); }
public void SetLabel_HintMessageAlreadySet_ThrowsInvalidOperationException() { // Arrange var context = new TestFormGroupContext(); context.SetHint( attributes: null, content: new HtmlString("Hint")); // Act var ex = Record.Exception(() => context.SetLabel(false, null, new HtmlString("Hint"))); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<test-label> must be specified before <test-hint>.", ex.Message); }
public void SetHint_AlreadySet_ThrowsInvalidOperationException() { // Arrange var context = new TestFormGroupContext(); context.SetHint( attributes: null, content: new HtmlString("Existing hint")); // Act var ex = Record.Exception(() => context.SetHint(null, new HtmlString("Hint"))); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("Only one <test-hint> element is permitted within each <test>.", ex.Message); }
public void SetErrorMessage_AlreadySet_ThrowsInvalidOperationException() { // Arrange var context = new TestFormGroupContext(); context.SetErrorMessage( visuallyHiddenText: null, attributes: null, content: new HtmlString("Existing error")); // Act var ex = Record.Exception(() => context.SetErrorMessage(null, null, new HtmlString("Error"))); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("Only one <test-error-message> element is permitted within each <test>.", ex.Message); }
public void SetHint_ErrorMessageAlreadySet_ThrowsInvalidOperationException() { // Arrange var context = new TestFormGroupContext(); context.SetErrorMessage( visuallyHiddenText: null, attributes: null, content: new HtmlString("Error message")); // Act var ex = Record.Exception(() => context.SetHint(null, new HtmlString("Hint"))); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("<test-hint> must be specified before <test-error-message>.", ex.Message); }
public void GenerateLabel_NoLabelContentOnContextOrAspFor_ThrowsInvalidOperationException() { // Arrange var formGroupContext = new TestFormGroupContext(); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var ex = Record.Exception(() => tagHelper.GenerateLabel(formGroupContext)); // Assert Assert.IsType <InvalidOperationException>(ex); Assert.Equal("Label content must be specified when the 'asp-for' attribute is not specified.", ex.Message); }
public void GenerateLabel_LabelContentOnContext_ReturnsContentFromContext() { // Arrange var formGroupContext = new TestFormGroupContext(); formGroupContext.SetLabel(isPageHeading: false, attributes: null, content: new HtmlString("Context label")); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var label = tagHelper.GenerateLabel(formGroupContext); // Assert Assert.NotNull(label); Assert.Contains("Context label", label.RenderToString()); }
public void GenerateErrorMessage_AddsErrorToFormErrorContext() { // Arrange var formErrorContext = new FormErrorContext(); var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>() { { typeof(FormErrorContext), formErrorContext } }, uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); formGroupContext.SetErrorMessage(visuallyHiddenText: "vht", attributes: null, content: new HtmlString("Error message")); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act tagHelper.GenerateErrorMessage(tagHelperContext, formGroupContext); // Assert Assert.Collection( formErrorContext.Errors, error => { Assert.Equal("Error message", error.Content.RenderToString()); }); }
public void GenerateHint_EmptyHint_DoesNotAddHintIdToDescribedBy() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act tagHelper.GenerateHint(tagHelperContext, formGroupContext); // Assert Assert.DoesNotContain("test-hint", tagHelper.DescribedBy?.Split(' ') ?? Array.Empty <string>()); }
public void GenerateHint_NoHintOnContextOrModelMetadataDescription_ReturnsNull() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var hint = tagHelper.GenerateHint(tagHelperContext, formGroupContext); // Assert Assert.Null(hint); }
public void GenerateErrorMessage_ErrorMessageOnContextAndModelStateUsesContextError_ReturnsContent() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); formGroupContext.SetErrorMessage(visuallyHiddenText: "vht", attributes: null, content: new HtmlString("Context error")); var modelExplorer = new EmptyModelMetadataProvider().GetModelExplorerForType(typeof(Model), new Model()) .GetExplorerForProperty(nameof(Model.SimpleProperty)); var viewContext = new ViewContext(); var modelExpression = nameof(Model.SimpleProperty); var modelHelper = new Mock <IModelHelper>(); modelHelper.Setup(mock => mock.GetValidationMessage(viewContext, modelExplorer, modelExpression)).Returns("ModelState error"); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { AspFor = new ModelExpression(modelExpression, modelExplorer), Id = "test", ViewContext = viewContext }; // Act var errorMessage = tagHelper.GenerateErrorMessage(tagHelperContext, formGroupContext); // Assert Assert.NotNull(errorMessage); Assert.Contains("Context error", errorMessage.RenderToString()); }
public void GenerateErrorMessage_NoErrorMessageOnContextOrAspFor_ReturnsNull() { // Arrange var tagHelperContext = new TagHelperContext( tagName: "test", allAttributes: new TagHelperAttributeList(), items: new Dictionary <object, object>(), uniqueId: "test"); var formGroupContext = new TestFormGroupContext(); var modelHelper = new Mock <IModelHelper>(); var tagHelper = new TestFormGroupTagHelper(new ComponentGenerator(), modelHelper.Object) { Id = "test" }; // Act var errorMessage = tagHelper.GenerateErrorMessage(tagHelperContext, formGroupContext); // Assert Assert.Null(errorMessage); }