public void Ctor_DefaultAction() { var expectedItem = new TestItem(); var subject = new ChangeContainerItem <TestItem>(expectedItem, ChangeTarget.Collection); Assert.Equal(ChangeAction.None, subject.Action); }
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); }
public void HasChanges_TrueWhenDirectChanges() { var subject = new ChangeContainerItem <TestItem>(new TestItem(), ChangeTarget.Object); subject.Item = new TestItem(); Assert.True(subject.HasChanges); }
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); }
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); }
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); }
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); }
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); }
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)); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public void HasChanges_FalseWhenNoChanges() { var subject = new ChangeContainerItem <TestItem>(new TestItem(), ChangeTarget.Object); Assert.False(subject.HasChanges); }