예제 #1
0
        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();
        }
예제 #2
0
        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();
        }