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()); }
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); }
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 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()); }
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)); } }