Example #1
0
        public void HasChangedTest()
        {
            TrackableObject context = new TrackableObject();

            context.StartTracking();
            Assert.IsFalse(context.HasChanges());

            context.IntValue = 2;
            Assert.IsTrue(context.HasChanges());


            context.StartTracking();
            Assert.IsFalse(context.HasChanges());

            context.NotMappedValue = "test";
            Assert.IsFalse(context.HasChanges());

            context.TextValue = "test";
            Assert.IsTrue(context.HasChanges());
        }
Example #2
0
        public void PrintTrackingTest()
        {
            int changesDetected = 0;

            TrackableObject context = new TrackableObject();

            context.StartTracking();
            context.WhenChanged(() => changesDetected++);

            context.Print();

            Assert.IsFalse(context.HasChanges());           //We dont expect print to show up as having changes.
            Assert.IsTrue(context.IsPrintRequired());
            Assert.AreEqual(1, changesDetected);
        }
Example #3
0
        public void MergeTrackingEntityTest()
        {
            TrackableObject context1 = new TrackableObject();

            context1.StartTracking();
            Assert.IsFalse(context1.HasChanges());

            context1.IntValue = 2;
            Assert.IsTrue(context1.HasChanges());

            var testSubItem = new TrackableSubObject()
            {
                Name = "Sub 1"
            };

            testSubItem.New();
            context1.Children.Add(testSubItem);
            Assert.IsTrue(context1.IsNew());

            Assert.IsTrue(context1.Children[0].HasChanges());
            Assert.IsTrue(context1.Children[0].IsNew());

            context1.Child = new TrackableSubObject()
            {
                Name = "Child 1"
            };
            context1.Child.New();

            TrackableObject context2 = new TrackableObject();

            context2.Children.Add(new TrackableSubObject()
            {
                Name = "Sub 2"
            });
            context2.Children.Add(new TrackableSubObject()
            {
                Name = "Sub 3"
            });

            context2.MergeTracking(context1);

            //Have the changes from context 1 been merged onto context 2?
            //If the merge was successful we should see changes merged onto context 2
            Assert.AreEqual(context1.IntValue, context2.IntValue);
            Assert.IsTrue(context2.HasChanges());

            Assert.IsFalse(context2.Children[0].HasChanges());
            Assert.IsFalse(context2.Children[1].HasChanges());

            Assert.IsTrue(context2.Children[2].HasChanges());
            Assert.IsTrue(context2.Children[2].IsNew());

            Assert.IsNotNull(context2.Child);
            Assert.IsTrue(context2.Child.IsNew());

            var postMergeSubItem = new TrackableSubObject()
            {
                Name = "Sub 4"
            };

            postMergeSubItem.New();
            context2.Children.Add(postMergeSubItem);
            Assert.IsTrue(context2.IsNew());
        }