public void MergeRuleUnbroken() { var obj = Csla.DataPortal.Create <Foo>(); obj.Name = "2"; obj.MockUpdated(); var cloned = obj.Clone(); cloned.Name = "1"; cloned.MockUpdated(); var changed = false; obj.PropertyChanged += (o, e) => { changed = true; }; var merger = new GraphMerger(); merger.MergeGraph(obj, cloned); Assert.AreEqual(cloned.Name, obj.Name); Assert.AreEqual(cloned.IsDirty, obj.IsDirty); Assert.AreEqual(cloned.IsNew, obj.IsNew); Assert.IsFalse(obj.IsDirty); Assert.IsTrue(obj.IsValid); Assert.IsTrue(changed); }
public void MergeList() { var obj = Csla.DataPortal.Create <FooList>(); obj.AddNew().Name = "existing"; obj[0].MockUpdated(); obj.AddNew().Name = "to be deleted"; obj.Remove(obj[1]); obj.AddNew().Name = "new"; obj.AddNew().Name = "remove in clone"; Assert.AreEqual(3, obj.Count, "preclone count"); var cloned = obj.Clone(); Assert.AreEqual(3, cloned.Count, "postclone count"); cloned.Remove(cloned.Where(_ => _.Name == "remove in clone").First()); Assert.AreEqual(2, cloned.Count, "postclone count after removed obj"); Assert.AreEqual(cloned[0].Name, obj[0].Name, "postclone [0]"); Assert.AreEqual(cloned[1].Name, obj[1].Name, "postclone [1]"); cloned[0].Name = "existing (cloned)"; cloned[1].Name = "new (cloned)"; cloned.AddNew().Name = "new in clone"; cloned.MockUpdated(); var merger = new GraphMerger(); merger.MergeBusinessListGraph <FooList, Foo>(obj, cloned); Assert.AreEqual(cloned.Count, obj.Count, "count"); Assert.AreEqual(3, obj.Count, "count 3"); Assert.AreEqual(cloned[0].Name, obj[0].Name, "[0]"); Assert.AreEqual(cloned[1].Name, obj[1].Name, "[1]"); Assert.AreEqual(cloned[2].Name, obj[2].Name, "[2]"); Assert.AreEqual(cloned.IsDirty, obj.IsDirty); Assert.IsFalse(obj.IsDirty); }
public void MergeChildList() { var obj = Csla.DataPortal.Create <Foo>(); obj.ChildList.AddNew(); obj.ChildList[0].Name = "1"; obj.ChildList.AddNew(); obj.ChildList[1].Name = "12"; obj.MockUpdated(); var cloned = obj.Clone(); cloned.ChildList[0].Name = "2"; cloned.ChildList.RemoveAt(1); cloned.ChildList.AddNew(); cloned.ChildList[1].Name = "42"; cloned.MockUpdated(); var merger = new GraphMerger(); merger.MergeGraph(obj, cloned); Assert.IsFalse(ReferenceEquals(obj.ChildList, cloned.ChildList), "ref"); Assert.AreEqual(2, obj.ChildList.Count, "count"); Assert.IsFalse(obj.ChildList[0].IsValid, "[0] isvalid"); Assert.IsTrue(obj.ChildList[1].IsValid, "[1] isvalid"); Assert.IsFalse(obj.ChildList.IsValid, "isvalid"); Assert.AreEqual("2", obj.ChildList[0].Name, "[0] name"); Assert.AreEqual("42", obj.ChildList[1].Name, "[1] name"); Assert.IsFalse(ReferenceEquals(obj.ChildList[0], cloned.ChildList[0]), "[0] ref"); Assert.IsTrue(ReferenceEquals(obj.ChildList[1], cloned.ChildList[1]), "[1] ref"); Assert.IsTrue(ReferenceEquals(obj.ChildList, obj.ChildList[1].Parent), "parent ref"); }
public void MergeChildDelete() { var obj = Csla.DataPortal.Create <Foo>(); obj.Name = "1"; obj.AddChild(); obj.Child.Name = "42"; obj.MockUpdated(); obj.MarkForDelete(); var cloned = obj.Clone(); cloned.Name = "2"; cloned.Child.Name = "43"; cloned.MockDeleted(); var changed = false; obj.PropertyChanged += (o, e) => { changed = true; }; var merger = new GraphMerger(); merger.MergeGraph(obj, cloned); Assert.IsFalse(ReferenceEquals(obj.Child, cloned.Child), "ref"); Assert.AreEqual(cloned.Child.Name, obj.Child.Name, "name"); Assert.AreEqual(cloned.Child.IsDirty, obj.Child.IsDirty, "isdirty"); Assert.AreEqual(cloned.Child.IsNew, obj.Child.IsNew, "isnew"); Assert.IsTrue(obj.Child.IsNew, "isnew true"); Assert.IsTrue(obj.Child.IsDirty, "isdirty true"); Assert.IsTrue(obj.Child.IsValid, "isvalid true"); Assert.IsTrue(changed, "changed"); }
public void MergeDelete() { var obj = Csla.DataPortal.Create <Foo>(); obj.Name = "1"; obj.MockUpdated(); // make it an old object obj.MarkForDelete(); // mark for deletion var cloned = obj.Clone(); cloned.Name = "2"; cloned.MockDeleted(); // mock DP delete result var changed = false; obj.PropertyChanged += (o, e) => { changed = true; }; var merger = new GraphMerger(); merger.MergeGraph(obj, cloned); Assert.AreEqual(cloned.Name, obj.Name); Assert.IsTrue(obj.IsNew, "obj.IsTrue"); Assert.IsFalse(obj.IsDeleted, "obj.IsDeleted"); Assert.AreEqual(cloned.IsDeleted, obj.IsDeleted, "IsDeleted equal"); Assert.AreEqual(cloned.IsDirty, obj.IsDirty); Assert.AreEqual(cloned.IsNew, obj.IsNew); Assert.IsFalse(obj.IsValid); Assert.IsTrue(changed); }
public void MergeRuleUnbroken() { ApplicationContext applicationContext = _testDIContext.CreateTestApplicationContext(); IDataPortal <Foo> dataPortal = _testDIContext.CreateDataPortal <Foo>(); var obj = dataPortal.Create(); obj.Name = "2"; obj.MockUpdated(); var cloned = obj.Clone(); cloned.Name = "1"; cloned.MockUpdated(); var changed = false; obj.PropertyChanged += (o, e) => { changed = true; }; var merger = new GraphMerger(applicationContext); merger.MergeGraph(obj, cloned); Assert.AreEqual(cloned.Name, obj.Name); Assert.AreEqual(cloned.IsDirty, obj.IsDirty); Assert.AreEqual(cloned.IsNew, obj.IsNew); Assert.IsFalse(obj.IsDirty); Assert.IsTrue(obj.IsValid); Assert.IsTrue(changed); }
public void MergeChildUpdate() { ApplicationContext applicationContext = _testDIContext.CreateTestApplicationContext(); IDataPortal <Foo> dataPortal = _testDIContext.CreateDataPortal <Foo>(); var obj = dataPortal.Create(); obj.Name = "1"; obj.AddChild(dataPortal); obj.Child.Name = "42"; obj.MockUpdated(); var cloned = obj.Clone(); cloned.Name = "2"; cloned.Child.Name = "2"; cloned.MockUpdated(); var changed = false; obj.PropertyChanged += (o, e) => { changed = true; }; var merger = new GraphMerger(applicationContext); merger.MergeGraph(obj, cloned); Assert.IsFalse(ReferenceEquals(obj.Child, cloned.Child), "ref"); Assert.AreEqual(cloned.Child.Name, obj.Child.Name, "name"); Assert.AreEqual(cloned.Child.IsDirty, obj.Child.IsDirty, "isdirty"); Assert.AreEqual(cloned.Child.IsNew, obj.Child.IsNew, "isnew"); Assert.IsFalse(obj.Child.IsNew, "isnew false"); Assert.IsFalse(obj.Child.IsDirty, "isdirty false"); Assert.IsFalse(obj.Child.IsValid, "isvalid false"); Assert.IsTrue(changed, "changed"); }
public void MergeNewChildUpdate() { var obj = Csla.DataPortal.Create <Foo>(); obj.Name = "1"; obj.MockUpdated(); var cloned = obj.Clone(); cloned.AddChild(); cloned.Child.Name = "42"; cloned.MockUpdated(); var merger = new GraphMerger(); merger.MergeGraph(obj, cloned); Assert.IsTrue(ReferenceEquals(obj.Child, cloned.Child), "ref"); Assert.ReferenceEquals(obj, obj.Child.Parent); }