public void Entity_ExtractState_ModifiedStateTest() { EntityToolsDomainContext ctx = new EntityToolsDomainContext(); Class newClass = new Class() { Name = "Test New Class", Description = "This is a new class for the test", Id = Guid.NewGuid(), DepartmentId = Guid.NewGuid() }; ctx.Classes.Add(newClass); //((IChangeTracking)newClass).AcceptChanges(); IDictionary <string, object> changedState = newClass.ExtractState(ExtractType.ModifiedState); Assert.AreEqual(4, changedState.Count); Assert.IsTrue(changedState.ContainsKey("Name")); Assert.IsTrue(changedState.ContainsKey("Description")); Assert.IsTrue(changedState.ContainsKey("Id")); Assert.IsTrue(changedState.ContainsKey("DepartmentId")); Assert.AreEqual(newClass.Name, changedState["Name"]); Assert.AreEqual(newClass.Id, changedState["Id"]); Assert.AreEqual(newClass.Description, changedState["Description"]); Assert.AreEqual(newClass.DepartmentId, changedState["DepartmentId"]); }
public void EntityCloneTest() { var ctx = new EntityToolsDomainContext(); var loadOp = ctx.Load(ctx.GetPersonSetQuery()); EnqueueConditional(() => loadOp.IsComplete); EnqueueCallback( () => { var existingPerson = loadOp.Entities.First(); existingPerson.Name = "new name"; Person newPerson = new Person(); newPerson.ApplyState( existingPerson.ExtractState(ExtractType.OriginalState), existingPerson.ExtractState(ExtractType.ModifiedState)); newPerson.Id = Guid.NewGuid(); ctx.Persons.Add(newPerson); } ); EnqueueTestComplete(); }
public void Entity_ExtractState_ChangesOnlyTest() { EntityToolsDomainContext ctx = new EntityToolsDomainContext(); Class newClass = new Class() { Name = "Test New Class", Description = "This is a new class for the test", Id = Guid.NewGuid() }; ctx.Classes.Add(newClass); ((IChangeTracking)newClass).AcceptChanges(); newClass.Name = "My New Name"; IDictionary <string, object> changedState = newClass.ExtractState(ExtractType.ChangesOnlyState); Assert.AreEqual(1, changedState.Count); Assert.IsTrue(changedState.ContainsKey("Name")); Assert.AreEqual("My New Name", changedState["Name"]); }