public void Accept_Changes_Should_Remove_Family_Deleted() { // Arrange var parent = new MockFamily().Parent; parent.TrackingState = TrackingState.Modified; parent.Children[0].TrackingState = TrackingState.Modified; parent.Children[0].Children[0].TrackingState = TrackingState.Modified; parent.Children[0].Children[0].Children[0].TrackingState = TrackingState.Added; parent.Children[0].Children[0].Children[1].TrackingState = TrackingState.Modified; parent.Children[0].Children[0].Children[2].TrackingState = TrackingState.Deleted; parent.Children[1].TrackingState = TrackingState.Added; parent.Children[1].Children[0].TrackingState = TrackingState.Added; parent.Children[1].Children[0].Children[0].TrackingState = TrackingState.Added; parent.Children[1].Children[0].Children[1].TrackingState = TrackingState.Added; parent.Children[1].Children[0].Children[2].TrackingState = TrackingState.Added; parent.Children[2].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].Children[0].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].Children[1].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].Children[2].TrackingState = TrackingState.Deleted; // Act parent.AcceptChanges(); // Assert Assert.AreEqual(2, parent.Children.Count); Assert.AreEqual(2, parent.Children[0].Children[0].Children.Count); }
public void Accept_Changes_Should_Mark_Family_Unchanged() { // Arrange var parent = new MockFamily().Parent; parent.TrackingState = TrackingState.Modified; parent.Children[0].TrackingState = TrackingState.Modified; parent.Children[0].Children[0].TrackingState = TrackingState.Modified; parent.Children[0].Children[0].Children[0].TrackingState = TrackingState.Added; parent.Children[0].Children[0].Children[1].TrackingState = TrackingState.Modified; parent.Children[0].Children[0].Children[2].TrackingState = TrackingState.Deleted; parent.Children[1].TrackingState = TrackingState.Added; parent.Children[1].Children[0].TrackingState = TrackingState.Added; parent.Children[1].Children[0].Children[0].TrackingState = TrackingState.Added; parent.Children[1].Children[0].Children[1].TrackingState = TrackingState.Added; parent.Children[1].Children[0].Children[2].TrackingState = TrackingState.Added; parent.Children[2].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].Children[0].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].Children[1].TrackingState = TrackingState.Deleted; parent.Children[2].Children[1].Children[2].TrackingState = TrackingState.Deleted; // Act parent.AcceptChanges(); // Assert var states = parent.GetTrackingStates(TrackingState.Unchanged).ToList(); Assert.AreEqual(26, states.Count()); }
public void Accept_Changes_Should_Remove_ModifiedProperties_From_Family() { // Arrange var parent = new MockFamily().Parent; parent.ModifiedProperties = new List<string> { "Name" }; parent.Children[0].ModifiedProperties = new List<string> { "Name" }; parent.Children[0].Children[0].ModifiedProperties = new List<string> { "Name" }; parent.Children[0].Children[0].Children[1].ModifiedProperties = new List<string> { "Name" }; // Act parent.AcceptChanges(); // Assert IEnumerable<IEnumerable<string>> modifiedProps = parent.GetModifiedProperties(); Assert.IsFalse(modifiedProps.Any(p => p != null)); }
public void Apply_Changes_Should_Mark_Family_Modified() { // Arrange var context = TestsHelper.CreateFamilyDbContext(CreateFamilyDbOptions); var parent = new MockFamily().Parent; parent.TrackingState = TrackingState.Modified; parent.SetTrackingState(TrackingState.Modified); // Act context.ApplyChanges(parent); // Assert IEnumerable<EntityState> states = context.GetEntityStates(parent, EntityState.Modified); Assert.AreEqual(40, states.Count()); }
public void Apply_Changes_Should_Mark_Grandchild_Deleted() { // Arrange var context = TestsHelper.CreateFamilyDbContext(CreateFamilyDbOptions); var parent = new MockFamily().Parent; parent.Children.RemoveAt(2); parent.Children.RemoveAt(1); var child = parent.Children[0]; child.Children.RemoveAt(2); child.Children.RemoveAt(1); var grandchild = child.Children[0]; grandchild.Children = null; parent.TrackingState = TrackingState.Unchanged; child.TrackingState = TrackingState.Deleted; grandchild.TrackingState = TrackingState.Deleted; // Act context.ApplyChanges(parent); // Assert Assert.Equal(EntityState.Unchanged, context.Entry(parent).State); Assert.Equal(EntityState.Deleted, context.Entry(child).State); Assert.Equal(EntityState.Deleted, context.Entry(grandchild).State); }