public void ExpectedValidationErrorsRaised(object model, Type type, Dictionary <string, string> expectedErrors) { // Arrange ModelMetadataProvider metadataProvider = new DataAnnotationsModelMetadataProvider(); HttpActionContext actionContext = ContextUtil.CreateActionContext(); // Act Assert.DoesNotThrow(() => new DefaultBodyModelValidator().Validate(model, type, metadataProvider, actionContext, string.Empty) ); // Assert Dictionary <string, string> actualErrors = new Dictionary <string, string>(); foreach (KeyValuePair <string, ModelState> keyStatePair in actionContext.ModelState) { foreach (ModelError error in keyStatePair.Value.Errors) { actualErrors.Add(keyStatePair.Key, error.ErrorMessage); } } Assert.Equal(expectedErrors.Count, actualErrors.Count); foreach (KeyValuePair <string, string> keyErrorPair in expectedErrors) { Assert.Contains(keyErrorPair.Key, actualErrors.Keys); Assert.Equal(keyErrorPair.Value, actualErrors[keyErrorPair.Key]); } }
public void MultipleValidationErrorsOnSameMemberReported() { // Arrange ModelMetadataProvider metadataProvider = new DataAnnotationsModelMetadataProvider(); HttpActionContext actionContext = ContextUtil.CreateActionContext(); object model = new Address() { Street = "Microsoft Way" }; // Act Assert.DoesNotThrow(() => new DefaultBodyModelValidator().Validate(model, typeof(Address), metadataProvider, actionContext, string.Empty) ); // Assert Assert.Contains("Street", actionContext.ModelState.Keys); ModelState streetState = actionContext.ModelState["Street"]; Assert.Equal(2, streetState.Errors.Count); }