public void ServerValidation_InvokeOperation() { TestDomainServices.TestProvider_Scenarios ctxt = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios); // Validate using an action so we can assert state for each of the 3 different // completion patterns; callback, event, and polling Action <InvokeOperation <bool> > validate = (io) => { Assert.IsNotNull(io.Error); Assert.AreEqual(typeof(DomainOperationException), io.Error.GetType()); Assert.AreEqual(OperationErrorStatus.ValidationFailed, ((DomainOperationException)io.Error).Status); Assert.AreEqual(string.Format(Resource.DomainContext_InvokeOperationFailed_Validation, "InvokeOperationWithParamValidation"), io.Error.Message); Assert.AreEqual(1, io.ValidationErrors.Count(), "There should be 1 validation error."); ValidationResult error = io.ValidationErrors.Single(); Assert.AreEqual("Server validation exception thrown!", error.ErrorMessage); io.MarkErrorAsHandled(); }; InvokeOperation <bool> op = ctxt.InvokeOperationWithParamValidation(5, "ex", new CityWithCacheData(), validate, null); op.Completed += (sender, e) => { validate((InvokeOperation <bool>)sender); }; this.EnqueueCompletion(() => op); EnqueueCallback(delegate { validate(op); }); EnqueueTestComplete(); }
public void ClientValidation_InvokeOperation() { TestDomainServices.TestProvider_Scenarios ctxt = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios); ExceptionHelper.ExpectValidationException(delegate { ctxt.InvokeOperationWithParamValidation(-3, "ABC", new CityWithCacheData()); }, "The field a must be between 0 and 10.", typeof(RangeAttribute), -3); EnqueueTestComplete(); }