Example #1
0
        public void Ctor_DefaultAction()
        {
            var expectedItem = new TestItem();
            var subject      = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection);

            Assert.Equal(ChangeAction.None, subject.Action);
        }
Example #2
0
        public void GetChangeSet_CorrectWhenItemUpdate()
        {
            var expectedOldValue = "My old value";
            var expectedItem     = new TestItem
            {
                StringValue = expectedOldValue
            };
            var subject = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection);

            var expectedNewValue = "New value";

            expectedItem.StringValue = expectedNewValue;

            var path   = ChangePath.Create("Path");
            var result = subject.GetChangeSet(path);

            var expectedPath = path.AppendProperty(nameof(TestItem.StringValue));

            var kvp = Assert.Single(result);

            Assert.Equal(ChangeTarget.Object, kvp.Key.Target);
            Assert.Contains(expectedPath, result as IDictionary <ChangePath, List <ChangeValue> >);
            var values = result[expectedPath];
            var value  = Assert.Single(values);

            Assert.Equal(ChangeAction.Update, value.Action);
            Assert.Same(expectedOldValue, value.OldValue);
            Assert.Same(expectedNewValue, value.NewValue);
        }
Example #3
0
        public void HasChanges_TrueWhenDirectChanges()
        {
            var subject = new ChangeContainerItem <TestItem>(new TestItem(), ChangeTarget.Object);

            subject.Item = new TestItem();
            Assert.True(subject.HasChanges);
        }
Example #4
0
        public void GetChangeSet_CorrectWhenDirectUpdate()
        {
            var originalItem = ChangeTrackingObject.CreateTrackable <TestItem>();

            originalItem.StringValue = "New value";
            var subject = new ChangeContainerItem <TestItem>(originalItem, ChangeTarget.Collection);

            var expectedItem = ChangeTrackingObject.CreateTrackable <TestItem>();

            subject.Item = expectedItem;

            var expectedPath = ChangePath.Create("Path");
            var result       = subject.GetChangeSet(expectedPath);

            var kvp = Assert.Single(result);

            Assert.Equal(ChangeTarget.Object, kvp.Key.Target);
            Assert.Contains(expectedPath, result as IDictionary <ChangePath, List <ChangeValue> >);
            var values = result[expectedPath];
            var value  = Assert.Single(values);

            Assert.Equal(ChangeAction.Update, value.Action);
            Assert.Same(originalItem, value.OldValue);
            Assert.Same(expectedItem, value.NewValue);
        }
Example #5
0
        public void GetChangeSet_NullWhenNoChanges()
        {
            var expectedItem = ChangeTrackingObject.CreateTrackable <TestItem>();
            var subject      = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection);
            var result       = subject.GetChangeSet(ChangePath.Create("path"));

            Assert.Null(result);
        }
Example #6
0
        public void HasChanges_TrueWhenChangesToItem()
        {
            var item    = ChangeTrackingObject.CreateTrackable <TestItem>();
            var subject = new ChangeContainerItem <TestItem>(item, ChangeTarget.Object);

            item.StringValue = "Updated value";
            Assert.True(subject.HasChanges);
        }
Example #7
0
        public void Item_SetWorksAndChangesAction()
        {
            var subject      = new ChangeContainerItem <TestItem>(new TestItem(), ChangeTarget.Object);
            var expectedItem = new TestItem();

            subject.Item = expectedItem;
            Assert.Same(expectedItem, subject.Item);
            Assert.Equal(ChangeAction.Update, subject.Action);
        }
Example #8
0
        public void Action_ItemHasChanges_ReturnsUpdate()
        {
            var expectedItem = ChangeTrackingObject.CreateTrackable <TestItem>();

            expectedItem.StringValue = "Updated value";
            Assert.True(expectedItem.HasChanges);

            var subject = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Object);

            Assert.Equal(ChangeAction.Update, subject.Action);
        }
Example #9
0
        public void GetChangeSet_ThrowsIfUpdateNonTrackChanges()
        {
            var expectedOldValue = "My old value";
            var expectedItem     = new TestItem
            {
                StringValue = expectedOldValue
            };
            var subject = new ChangeContainerItem <string>("Value", ChangeTarget.Collection, ChangeAction.Update);

            Assert.Throws <InvalidOperationException>(() => subject.GetChangeSet(ChangePath.Empty));
        }
Example #10
0
        public void Action_SetWorks()
        {
            var subject = new ChangeContainerItem <TestItem>(new TestItem(), ChangeTarget.Object);

            Assert.Equal(ChangeAction.None, subject.Action);

            var expectedAction = ChangeAction.Add;

            subject.Action = expectedAction;
            Assert.Equal(expectedAction, subject.Action);
        }
Example #11
0
        public void Reset_DoesNothingIfNoChanges()
        {
            var mockItem       = new Mock <ChangeTrackingObject>(MockBehavior.Strict);
            var expectedTarget = ChangeTarget.Collection;
            var subject        = new ChangeContainerItem <ChangeTrackingObject>(mockItem.Object, ChangeTarget.Collection);

            subject.Reset();
            Assert.Same(mockItem.Object, subject.Item);
            Assert.Equal(expectedTarget, subject.Target);
            Assert.Equal(ChangeAction.None, subject.Action);
        }
Example #12
0
        public void Ctor_ValuesCorrect()
        {
            var expectedItem   = new TestItem();
            var expectedTarget = ChangeTarget.Collection;
            var expectedAction = ChangeAction.Add;
            var subject        = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection, ChangeAction.Add);

            Assert.Same(expectedItem, subject.Item);
            Assert.Equal(expectedTarget, subject.Target);
            Assert.Equal(expectedAction, subject.Action);
        }
Example #13
0
        public void GetChangeSet_HasChangeFalseWhenCommit()
        {
            var expectedItem = ChangeTrackingObject.CreateTrackable <TestItem>();
            var subject      = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection);

            expectedItem.StringValue = "New value";

            subject.GetChangeSet(ChangePath.Create("path"), true);

            Assert.False(subject.HasChanges);
            Assert.False(expectedItem.HasChanges);
        }
Example #14
0
        public void Reset_RevertsItemChanges()
        {
            var expectedItem = ChangeTrackingObject.CreateTrackable <TestItem>();
            var subject      = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection);

            subject.Item.StringValue = "My new value";
            Assert.True(subject.HasChanges);
            Assert.Equal(ChangeAction.Update, subject.Action);

            subject.Reset();
            Assert.Same(expectedItem, subject.Item);
            Assert.False(subject.HasChanges);
            Assert.Equal(ChangeAction.None, subject.Action);
        }
Example #15
0
        public void Reset_RevertsDirectChanges()
        {
            var expectedItem = new TestItem {
                StringValue = "Orginal"
            };
            var subject = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection);

            subject.Item = new TestItem();
            subject.Reset();

            Assert.False(subject.HasChanges);
            Assert.Same(expectedItem, subject.Item);
            Assert.Equal(ChangeAction.None, subject.Action);
        }
Example #16
0
        public void GetChangeSet_CorrectWhenRemove()
        {
            var expectedItem         = ChangeTrackingObject.CreateTrackable <TestItem>();
            var expectedChangeAction = ChangeAction.Remove;
            var subject      = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection, expectedChangeAction);
            var expectedPath = ChangePath.Create("Path");
            var result       = subject.GetChangeSet(expectedPath);

            var kvp = Assert.Single(result);

            Assert.Equal(ChangeTarget.Object, kvp.Key.Target);
            Assert.Contains(expectedPath, result as IDictionary <ChangePath, List <ChangeValue> >);
            var values = result[expectedPath];
            var value  = Assert.Single(values);

            Assert.Equal(expectedChangeAction, value.Action);
            Assert.Null(value.NewValue);
            Assert.Same(expectedItem, value.OldValue);
        }
Example #17
0
        public void HasChanges_FalseWhenNoChanges()
        {
            var subject = new ChangeContainerItem <TestItem>(new TestItem(), ChangeTarget.Object);

            Assert.False(subject.HasChanges);
        }