예제 #1
0
        public void ComplexWrapperAcceptAndReject()
        {
            TestWrappersFactory testWrappersFactory = new TestWrappersFactory();

            TestHusband husband = new TestHusband();
            TestWife    wife1   = new TestWife();
            TestChild   child1  = new TestChild {
                Husband = husband, Wife = wife1
            };
            TestChild child2 = new TestChild {
                Husband = husband, Wife = wife1
            };

            wife1.Husband = husband;
            husband.Wife  = wife1;
            husband.Children.Add(child1);
            husband.Children.Add(child2);

            TestHusbandWrapper husbandWrapper = testWrappersFactory.GetWrapper <TestHusbandWrapper>(husband);

            Assert.IsFalse(husbandWrapper.IsChanged);

            TestChildWrapper childWrapper1 = husbandWrapper.Children.First(x => Equals(x.Model, child1));

            string oldChildsName = childWrapper1.Name;

            childWrapper1.Name = oldChildsName + "NEW";
            husbandWrapper.RejectChanges();
            Assert.AreEqual(childWrapper1.Name, oldChildsName);

            childWrapper1.Name = oldChildsName + "NEW";
            husbandWrapper.AcceptChanges();
            Assert.AreEqual(childWrapper1.Name, oldChildsName + "NEW");
            Assert.AreEqual(childWrapper1.NameOriginalValue, oldChildsName + "NEW");

            TestWifeWrapper wifeWrapper = husbandWrapper.Wife;

            husbandWrapper.Wife = null;
            Assert.AreEqual(husbandWrapper.Wife, null);
            husbandWrapper.RejectChanges();
            Assert.AreEqual(husbandWrapper.Wife, wifeWrapper);

            TestWifeWrapper wifeWrapper2 = testWrappersFactory.GetWrapper <TestWifeWrapper>(new TestWife());

            husbandWrapper.Wife = wifeWrapper2;
            husbandWrapper.AcceptChanges();
            Assert.AreEqual(wifeWrapper2.Model, husbandWrapper.Model.Wife);

            husbandWrapper.Children.Remove(childWrapper1);
            husbandWrapper.RejectChanges();
            Assert.IsTrue(husbandWrapper.Children.Contains(childWrapper1));
            Assert.IsFalse(husbandWrapper.IsChanged);
        }
        public void AcceptAndRejectChangesInObjectsWithNavigationProperty()
        {
            TestHusband husband = new TestHusband();
            TestWife    wife1   = new TestWife();

            wife1.Husband = husband;
            husband.Wife  = wife1;

            TestHusbandWrapper husbandWrapper = new TestHusbandWrapper(husband);

            Assert.IsFalse(husbandWrapper.IsChanged);

            husbandWrapper.Wife.N++;
            Assert.IsTrue(husbandWrapper.IsChanged);
            husbandWrapper.AcceptChanges();
            Assert.IsFalse(husbandWrapper.IsChanged);

            var oldId = husbandWrapper.Wife.Id;

            husbandWrapper.Wife.Id = Guid.NewGuid();
            Assert.IsTrue(husbandWrapper.IsChanged);
            husbandWrapper.RejectChanges();
            Assert.IsFalse(husbandWrapper.IsChanged);
            Assert.AreEqual(oldId, husbandWrapper.Wife.Id);

            TestChildWrapper childWrapper = new TestChildWrapper(new TestChild {
                Husband = husband
            });

            husbandWrapper.Children.Add(childWrapper);
            Assert.IsTrue(husbandWrapper.IsChanged);
        }