public void DisplayNameConsultsMetadataProviderForMetadataAboutProperty() { // Arrange Model model = new Model { PropertyName = "propertyValue" }; ViewDataDictionary viewData = new ViewDataDictionary(); Mock<ViewContext> viewContext = new Mock<ViewContext>(); viewContext.Setup(c => c.ViewData).Returns(viewData); Mock<IViewDataContainer> viewDataContainer = new Mock<IViewDataContainer>(); viewDataContainer.Setup(c => c.ViewData).Returns(viewData); HtmlHelper<Model> html = new HtmlHelper<Model>(viewContext.Object, viewDataContainer.Object); viewData.Model = model; MetadataHelper metadataHelper = new MetadataHelper(); metadataHelper.MetadataProvider.Setup(p => p.GetMetadataForProperty(It.IsAny<Func<object>>(), typeof(Model), "PropertyName")) .Returns(metadataHelper.Metadata.Object) .Verifiable(); // Act html.DisplayNameInternal("PropertyName", metadataHelper.MetadataProvider.Object); // Assert metadataHelper.MetadataProvider.Verify(); }
public void DisplayNameUsesMetadataForDisplayText() { // Arrange MetadataHelper metadataHelper = new MetadataHelper(); metadataHelper.Metadata.Setup(m => m.DisplayName).Returns("Custom display name from metadata"); // Act MvcHtmlString result = MvcHelper.GetHtmlHelper().DisplayNameInternal("PropertyName", metadataHelper.MetadataProvider.Object); // Assert Assert.Equal("Custom display name from metadata", result.ToHtmlString()); }
public void DisplayNameUsesMetadataForPropertyName() { // Arrange MetadataHelper metadataHelper = new MetadataHelper(); metadataHelper.Metadata = new Mock<ModelMetadata>(metadataHelper.MetadataProvider.Object, null, null, typeof(object), "Custom property name from metadata"); metadataHelper.MetadataProvider.Setup(p => p.GetMetadataForType(It.IsAny<Func<object>>(), It.IsAny<Type>())) .Returns(metadataHelper.Metadata.Object); // Act MvcHtmlString result = MvcHelper.GetHtmlHelper().DisplayNameInternal("PropertyName", metadataHelper.MetadataProvider.Object); // Assert Assert.Equal("Custom property name from metadata", result.ToHtmlString()); }
public void DisplayNameForModelUsesModelMetadata() { // Arrange ViewDataDictionary viewData = new ViewDataDictionary(); Mock<ModelMetadata> metadata = new MetadataHelper().Metadata; metadata.Setup(m => m.DisplayName).Returns("Custom display name from metadata"); viewData.ModelMetadata = metadata.Object; viewData.TemplateInfo.HtmlFieldPrefix = "Prefix"; // Act MvcHtmlString result = MvcHelper.GetHtmlHelper(viewData).DisplayNameForModel(); // Assert Assert.Equal("Custom display name from metadata", result.ToHtmlString()); }
public void DisplayNameFor_ConsultsMetadataProviderForMetadataAboutProperty() { // Arrange var modelType = typeof(DefaultTemplatesUtilities.ObjectTemplateModel); var metadataHelper = new MetadataHelper(); metadataHelper.MetadataProvider .Setup(p => p.GetMetadataForProperty(It.IsAny<Func<object>>(), modelType, "Property1")) .Returns(metadataHelper.Metadata.Object) .Verifiable(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); // Act var result = helper.DisplayNameFor(m => m.Property1); // Assert metadataHelper.MetadataProvider.Verify(); // DisplayNameFor() falls back to expression name when DisplayName and PropertyName are null. Assert.Equal("Property1", result); }
public void DisplayNameForEmptyDisplayNameReturnsEmptyName() { // Arrange MetadataHelper metadataHelper = new MetadataHelper(); metadataHelper.Metadata.Setup(m => m.DisplayName).Returns(String.Empty); string unknownKey = "this is a dummy parameter value"; // Act MvcHtmlString result = MvcHelper.GetHtmlHelper().DisplayNameForInternal(model => unknownKey, metadataHelper.MetadataProvider.Object); MvcHtmlString enumerableResult = GetEnumerableHtmlHelper().DisplayNameForInternal(model => model.Bar, metadataHelper.MetadataProvider.Object); // Assert Assert.Equal(String.Empty, result.ToHtmlString()); Assert.Equal(String.Empty, enumerableResult.ToHtmlString()); }
public void DisplayNameHelpers_ReturnDisplayNameForProperty_IfNonNull(string displayName) { // Arrange var metadataHelper = new MetadataHelper(); // All properties will use the same metadata. metadataHelper.Metadata .Setup(metadata => metadata.DisplayName) .Returns(displayName); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); var enumerableHelper = DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>( model: null, provider: metadataHelper.MetadataProvider.Object); // Act var displayNameResult = helper.DisplayName("Property1"); var displayNameForResult = helper.DisplayNameFor(m => m.Property1); var displayNameForEnumerableResult = enumerableHelper.DisplayNameFor(m => m.Property1); // Assert Assert.Equal(displayName, displayNameResult); Assert.Equal(displayName, displayNameForResult); Assert.Equal(displayName, displayNameForEnumerableResult); }
public void DisplayName_ReturnsRightmostExpressionSegment_IfPropertiesNotFound( string expression, string expectedResult) { // Arrange var metadataHelper = new MetadataHelper(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); // Act var result = helper.DisplayName(expression); // Assert // DisplayName() falls back to expression name when DisplayName and PropertyName are null. Assert.Equal(expectedResult, result); }
public void DisplayNameHelpers_ReturnMetadataPropertyNameForProperty_IfOverridden(string propertyName) { // Arrange var metadataHelper = new MetadataHelper(); var metadata = new ModelMetadata( metadataHelper.MetadataProvider.Object, containerType: null, modelAccessor: null, modelType: typeof(object), propertyName: propertyName); metadataHelper.MetadataProvider .Setup(provider => provider.GetMetadataForProperty(It.IsAny<Func<object>>(), It.IsAny<Type>(), "Property1")) .Returns(metadata); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); var enumerableHelper = DefaultTemplatesUtilities.GetHtmlHelper<IEnumerable<DefaultTemplatesUtilities.ObjectTemplateModel>>( model: null, provider: metadataHelper.MetadataProvider.Object); // Act var displayNameForResult = helper.DisplayNameFor(m => m.Property1); var displayNameForEnumerableResult = enumerableHelper.DisplayNameFor(m => m.Property1); // Assert Assert.Equal(propertyName, displayNameForResult); Assert.Equal(propertyName, displayNameForEnumerableResult); }
public void Label_DisplaysRightmostExpressionSegment_IfPropertiesNotFound( string expression, string expectedResult) { // Arrange var metadataHelper = new MetadataHelper(); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); // Act var result = helper.Label(expression); // Assert // Label() falls back to expression name when DisplayName and PropertyName are null. Assert.Equal("<label for=\"" + expression + "\">" + expectedResult + "</label>", result.ToString()); }
public void LabelHelpers_DisplayDisplayNameForProperty_IfNonNull(string displayName) { // Arrange var metadataHelper = new MetadataHelper(); // All properties will use the same metadata. metadataHelper.Metadata .Setup(metadata => metadata.DisplayName) .Returns(displayName); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); // Act var labelResult = helper.Label("Property1"); var labelForResult = helper.LabelFor(m => m.Property1); // Assert Assert.Equal("<label for=\"Property1\">" + displayName + "</label>", labelResult.ToString()); Assert.Equal("<label for=\"Property1\">" + displayName + "</label>", labelForResult.ToString()); }
public void LabelHelpers_ReturnEmptyForProperty_IfDisplayNameEmpty() { // Arrange var metadataHelper = new MetadataHelper(); // All properties will use the same metadata. metadataHelper.Metadata .Setup(metadata => metadata.DisplayName) .Returns(string.Empty); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); // Act var labelResult = helper.Label(""); var labelNullResult = helper.Label(expression: null); // null is another alias for current model var labelForResult = helper.LabelFor(m => m); var labelForModelResult = helper.LabelForModel(); // Assert Assert.Empty(labelResult.ToString()); Assert.Empty(labelNullResult.ToString()); Assert.Empty(labelForResult.ToString()); Assert.Empty(labelForModelResult.ToString()); }
public void LabelHelpers_DisplayMetadataPropertyNameForProperty_IfOverridden(string propertyName) { // Arrange var metadataHelper = new MetadataHelper(); var metadata = new ModelMetadata( metadataHelper.MetadataProvider.Object, containerType: null, modelAccessor: null, modelType: typeof(object), propertyName: propertyName); metadataHelper.MetadataProvider .Setup(provider => provider.GetMetadataForProperty(It.IsAny<Func<object>>(), It.IsAny<Type>(), "Property1")) .Returns(metadata); var helper = DefaultTemplatesUtilities.GetHtmlHelper(metadataHelper.MetadataProvider.Object); // Act var labelForResult = helper.LabelFor(m => m.Property1); // Assert Assert.Equal("<label for=\"Property1\">" + propertyName + "</label>", labelForResult.ToString()); }