Exemple #1
0
        public void ServerValidation_Query()
        {
            TestDomainServices.TestProvider_Scenarios service = ServerTestHelper.CreateInitializedDomainService <TestDomainServices.TestProvider_Scenarios>(DomainOperationType.Query);

            DomainServiceDescription serviceDescription = DomainServiceDescription.GetDescription(service.GetType());
            DomainOperationEntry     method             = serviceDescription.DomainOperationEntries.Single(p => p.Name == "QueryWithParamValidation");
            QueryDescription         qd = new QueryDescription(method, new object[] { -1, "ABC" });
            int totalCount;

            IEnumerable <ValidationResult> validationErrors;

            service.Query(qd, out validationErrors, out totalCount);

            Assert.IsNotNull(validationErrors);
            Assert.AreEqual(2, validationErrors.Count());

            ValidationResult error = validationErrors.ElementAt(0);

            Assert.AreEqual("The field a must be between 0 and 10.", error.ErrorMessage);
            Assert.AreEqual("a", error.MemberNames.Single());

            error = validationErrors.ElementAt(1);
            Assert.AreEqual("The field b must be a string with a maximum length of 2.", error.ErrorMessage);
            Assert.AreEqual("b", error.MemberNames.Single());
        }
Exemple #2
0
        public async Task TestDirectChangeset_Simple()
        {
            for (int i = 0; i < 100; i++)
            {
                TestDomainServices.TestProvider_Scenarios ds = new TestDomainServices.TestProvider_Scenarios();
                DomainServiceContext dsc = new DomainServiceContext(new MockDataService(new MockUser("mathew")), DomainOperationType.Submit);
                ds.Initialize(dsc);

                List <ChangeSetEntry> entries = new List <ChangeSetEntry>();
                for (int j = 0; j < 500; j++)
                {
                    TestDomainServices.POCONoValidation e = new TestDomainServices.POCONoValidation()
                    {
                        ID = i,
                        A  = "A" + i,
                        B  = "B" + i,
                        C  = "C" + i,
                        D  = "D" + i,
                        E  = "E" + i
                    };
                    entries.Add(new ChangeSetEntry(j, e, null, DomainOperation.Insert));
                }

                await ChangeSetProcessor.ProcessAsync(ds, entries);

                Assert.IsFalse(entries.Any(p => p.HasError));
            }
        }
        public void RoundtripOriginalOnClass_VerifyPartialObjects()
        {
            TestDomainServices.TestProvider_Scenarios ctxt = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios);
            TestDomainServices.RoundtripOriginal_TestEntity2 entity = new TestDomainServices.RoundtripOriginal_TestEntity2 { ID = 1, RoundtrippedMember1 = 1, RoundtrippedMember2 = 1 };
            ctxt.EntityContainer.LoadEntities(new Entity[] { entity });

            entity.RoundtrippedMember1 += 1;
            entity.RoundtrippedMember2 += 2;
            EntityChangeSet cs = ctxt.EntityContainer.GetChanges();
            TestDomainServices.RoundtripOriginal_TestEntity2 original = (TestDomainServices.RoundtripOriginal_TestEntity2)cs.GetChangeSetEntries().First().OriginalEntity;

            // verify members with roundtrip have the original value
            Assert.AreEqual(2, entity.RoundtrippedMember1);
            Assert.AreEqual(3, entity.RoundtrippedMember2);
            Assert.AreEqual(1, original.RoundtrippedMember1);
            Assert.AreEqual(1, original.RoundtrippedMember2);
        }
        public void RoundtripOriginal_VerifyPartialObjects()
        {
            TestDomainServices.TestProvider_Scenarios ctxt = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios);
            TestDomainServices.RoundtripOriginal_TestEntity entity = new TestDomainServices.RoundtripOriginal_TestEntity { ID = 1, RoundtrippedMember = 1, NonRoundtrippedMember = 1 };
            ctxt.EntityContainer.LoadEntities(new Entity[] { entity });

            // make a change
            entity.NonRoundtrippedMember += 1;
            EntityChangeSet cs = ctxt.EntityContainer.GetChanges();
            TestDomainServices.RoundtripOriginal_TestEntity original = (TestDomainServices.RoundtripOriginal_TestEntity)cs.GetChangeSetEntries().First().OriginalEntity;

            // verify member with roundtrip has an original value
            Assert.AreEqual(1, entity.RoundtrippedMember);

            // verify member without roundtrip doesn't have it's original value set
            Assert.AreEqual(0, original.NonRoundtrippedMember);
        }
Exemple #5
0
        public void EditableFalse_AllowInitialValue()
        {
            TestDomainServices.TestProvider_Scenarios ctxt = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios);

            // Detached Entity : Editable(false, AllowInitialValue=true) - verify the property can be set
            TestDomainServices.Entity_TestEditableAttribute e = new TestDomainServices.Entity_TestEditableAttribute();
            Assert.AreEqual(EntityState.Detached, e.EntityState);
            e.EditableFalse_AllowInitialValueTrue = "Foo";
            Assert.AreEqual("Foo", e.EditableFalse_AllowInitialValueTrue);

            // New Entity : Editable(false, AllowInitialValue=true) - verify the property can be set
            e = new TestDomainServices.Entity_TestEditableAttribute();
            e.InitializeNew();
            Assert.AreEqual(EntityState.New, e.EntityState);
            e.EditableFalse_AllowInitialValueTrue = "Foo";
            Assert.AreEqual("Foo", e.EditableFalse_AllowInitialValueTrue);

            // Unmodified Entity : Editable(false, AllowInitialValue=true) - verify the property is read only
            ctxt.Entity_TestEditableAttributes.Attach(e);
            Assert.AreEqual(EntityState.Unmodified, e.EntityState);
            ExceptionHelper.ExpectInvalidOperationException(delegate
            {
                e.EditableFalse_AllowInitialValueTrue = "Boom";
            }, string.Format(Resource.Property_Is_ReadOnly, "EditableFalse_AllowInitialValueTrue"));

            // Detached Entity : Editable(false, AllowInitialValue=false) - verify the property is read only
            e = new TestDomainServices.Entity_TestEditableAttribute();
            Assert.AreEqual(EntityState.Detached, e.EntityState);
            ExceptionHelper.ExpectInvalidOperationException(delegate
            {
                e.EditableFalse_AllowInitialValueFalse = "Boom";
            }, string.Format(Resource.Property_Is_ReadOnly, "EditableFalse_AllowInitialValueFalse"));

            // New Entity : Editable(false, AllowInitialValue=false) - verify the property is read only
            e = new TestDomainServices.Entity_TestEditableAttribute();
            e.InitializeNew();
            Assert.AreEqual(EntityState.New, e.EntityState);
            ExceptionHelper.ExpectInvalidOperationException(delegate
            {
                e.EditableFalse_AllowInitialValueFalse = "Boom";
            }, string.Format(Resource.Property_Is_ReadOnly, "EditableFalse_AllowInitialValueFalse"));
        }
        public void RoundtripOriginalOnClass_VerifyPartialObjects()
        {
            TestDomainServices.TestProvider_Scenarios        ctxt   = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios);
            TestDomainServices.RoundtripOriginal_TestEntity2 entity = new TestDomainServices.RoundtripOriginal_TestEntity2 {
                ID = 1, RoundtrippedMember1 = 1, RoundtrippedMember2 = 1
            };
            ctxt.EntityContainer.LoadEntities(new Entity[] { entity });

            entity.RoundtrippedMember1 += 1;
            entity.RoundtrippedMember2 += 2;
            EntityChangeSet cs = ctxt.EntityContainer.GetChanges();

            TestDomainServices.RoundtripOriginal_TestEntity2 original = (TestDomainServices.RoundtripOriginal_TestEntity2)cs.GetChangeSetEntries().First().OriginalEntity;

            // verify members with roundtrip have the original value
            Assert.AreEqual(2, entity.RoundtrippedMember1);
            Assert.AreEqual(3, entity.RoundtrippedMember2);
            Assert.AreEqual(1, original.RoundtrippedMember1);
            Assert.AreEqual(1, original.RoundtrippedMember2);
        }
        public void RoundtripOriginal_VerifyPartialObjects()
        {
            TestDomainServices.TestProvider_Scenarios       ctxt   = new TestDomainServices.TestProvider_Scenarios(TestURIs.TestProvider_Scenarios);
            TestDomainServices.RoundtripOriginal_TestEntity entity = new TestDomainServices.RoundtripOriginal_TestEntity {
                ID = 1, RoundtrippedMember = 1, NonRoundtrippedMember = 1
            };
            ctxt.EntityContainer.LoadEntities(new Entity[] { entity });

            // make a change
            entity.NonRoundtrippedMember += 1;
            EntityChangeSet cs = ctxt.EntityContainer.GetChanges();

            TestDomainServices.RoundtripOriginal_TestEntity original = (TestDomainServices.RoundtripOriginal_TestEntity)cs.GetChangeSetEntries().First().OriginalEntity;

            // verify member with roundtrip has an original value
            Assert.AreEqual(1, entity.RoundtrippedMember);

            // verify member without roundtrip doesn't have it's original value set
            Assert.AreEqual(0, original.NonRoundtrippedMember);
        }
Exemple #8
0
        public async Task ServerValidation_InvokeOperation()
        {
            TestDomainServices.TestProvider_Scenarios service = ServerTestHelper.CreateInitializedDomainService <TestDomainServices.TestProvider_Scenarios>(DomainOperationType.Invoke);

            DomainServiceDescription serviceDescription = DomainServiceDescription.GetDescription(service.GetType());
            DomainOperationEntry     method             = serviceDescription.DomainOperationEntries.Single(p => p.Name == "InvokeOperationWithParamValidation");
            InvokeDescription        invokeDescription  = new InvokeDescription(method, new object[] { -3, "ABC", new TestDomainServices.CityWithCacheData() });
            var invokeResult = await service.InvokeAsync(invokeDescription, CancellationToken.None);

            Assert.IsNotNull(invokeResult.ValidationErrors);
            Assert.AreEqual(2, invokeResult.ValidationErrors.Count());

            ValidationResult error = invokeResult.ValidationErrors.ElementAt(0);

            Assert.AreEqual("The field a must be between 0 and 10.", error.ErrorMessage);
            Assert.AreEqual("a", error.MemberNames.Single());

            error = invokeResult.ValidationErrors.ElementAt(1);
            Assert.AreEqual("The field b must be a string with a maximum length of 2.", error.ErrorMessage);
            Assert.AreEqual("b", error.MemberNames.Single());
        }
Exemple #9
0
        public async Task ServerValidation_Query()
        {
            TestDomainServices.TestProvider_Scenarios service = ServerTestHelper.CreateInitializedDomainService <TestDomainServices.TestProvider_Scenarios>(DomainOperationType.Query);

            DomainServiceDescription serviceDescription = DomainServiceDescription.GetDescription(service.GetType());
            DomainOperationEntry     method             = serviceDescription.DomainOperationEntries.Single(p => p.Name == "QueryWithParamValidation");
            QueryDescription         qd = new QueryDescription(method, new object[] { -1, "ABC" });

            var queryResult = await service.QueryAsync <TestDomainServices.A>(qd, CancellationToken.None);

            Assert.IsNotNull(queryResult.ValidationErrors);
            Assert.AreEqual(2, queryResult.ValidationErrors.Count());

            ValidationResult error = queryResult.ValidationErrors.ElementAt(0);

            Assert.AreEqual("The field a must be between 0 and 10.", error.ErrorMessage);
            Assert.AreEqual("a", error.MemberNames.Single());

            error = queryResult.ValidationErrors.ElementAt(1);
            Assert.AreEqual("The field b must be a string with a maximum length of 2.", error.ErrorMessage);
            Assert.AreEqual("b", error.MemberNames.Single());
        }
        public void TestDirectChangeset_Simple()
        {
            for (int i = 0; i < 100; i++)
            {
                TestDomainServices.TestProvider_Scenarios ds = new TestDomainServices.TestProvider_Scenarios();
                DomainServiceContext dsc = new DomainServiceContext(new MockDataService(new MockUser("mathew")), DomainOperationType.Submit);
                ds.Initialize(dsc);

                List<ChangeSetEntry> entries = new List<ChangeSetEntry>();
                for (int j = 0; j < 500; j++)
                {
                    TestDomainServices.POCONoValidation e = new TestDomainServices.POCONoValidation()
                        {
                            ID = i,
                            A = "A" + i,
                            B = "B" + i,
                            C = "C" + i,
                            D = "D" + i,
                            E = "E" + i
                        };
                    entries.Add(new ChangeSetEntry(j, e, null, DomainOperation.Insert));
                }

                ChangeSetProcessor.Process(ds, entries);

                Assert.IsFalse(entries.Any(p => p.HasError));
            }
        }